‫Was denkst du über trostlose Bilder?
‫Ist es ein guter Kompromiss zwischen Größe und Sicherheit?
‫Ich würde sagen, wenn Sie bedrängnislose Bilder
‫machen können und was wir damit meinen, ist
‫der Begriff in Bewegung.
‫Ich finde, dass Bilder ohne Angst
‫kompliziert sind. Ich habe das Gefühl, dass es
‫einfacher ist, einfach zu sagen, dass Kratzbilder sind. Aber es ist
‫richtig zu sagen, dass es kein Grundpaket
‫gibt. Es gibt keine Wohnung. Es gibt kein Yum.
‫Es gibt nicht all die verschiedenen Befehle, von denen
‫Sie annehmen würden, dass sie sich in einem Container befinden, wenn
‫Sie eines der offiziellen Bilder verwenden. Die Sache ist, verzweifelte
‫Bilder sind aus zwei Gründen nicht sehr verbreitet.
‫Erstens benötigen die meisten
‫Programme all diese Dinge, um zu funktionieren.
‫Sie benötigen passende Paketabhängigkeiten.
‫Sie benötigen
‫ihre eigenen offenen SSL-Bibliotheken. Sie brauchen alle möglichen Dinge zusätzlich zu dem Programm,
‫das da drin ist, richtig.
‫Das sind heute die meisten Anwendungen.
‫Golang, C, einige andere Sprachen können einzelne Binärdateien
‫erstellen, die im Grunde alles haben, was
‫sie zum Ausführen benötigen, außer
‫dem Kernel. Diese Dinge sind
‫technisch in der Lage, alles darunter zu entfernen.
‫Alle Ebenen und Ihr Bild könnten verschwinden.
‫Ich sehe sie noch nicht oft in der Natur, weil ich
‫nicht mit Google und Netflix und riesigen Teams von Leuten
‫zusammenarbeite, die in diesem Bereich sehr professionell sind.
‫Die beiden Gründe hierfür sind, dass Sie eine Sprache
‫haben müssen, die dies unterstützt, und dass Sie ein Team haben
‫müssen, das versteht, wie man diese richtig aufbaut.
‫Dann müssen Sie wirklich gut in der Problembehandlung und der Funktionsweise
‫von Containern in Namespaces sein.
‫Da das Bild in dem Moment, in dem es ohne Probleme
‫in einem Container abläuft, ein Problem darstellt, können Sie es
‫nicht einmal untersuchen.
‫Es gibt keine Muschel. Sie können nicht hinein kommen.
‫Sie können es nicht ansehen. Jetzt sind Ihre Werkzeuge
‫begrenzt, und Sie müssen nach anderen Möglichkeiten suchen, um
‫Ihre Werkzeuge mit diesen Behältern zu verbinden.
‫Das existiert. Es gibt diese Dinge,
‫die das für Sie erledigen, aber es hängt weitgehend von Ihren Fähigkeiten
‫ab, wie Sie mit Namespaces umgehen.
‫Wie kann man von der Kommandozeile aus als
‫Beiwagen in einen laufenden Container in dessen Namespace springen, ohne
‫Docker zu verwenden?
‫Dies sind die Probleme, die auftreten, wenn Sie sich
‫mit der Fehlerbehebung oder der Systemüberwachung und -wartung
‫befassen, wenn Sie Bilder ohne Probleme haben.
‫Für alle, mit denen ich arbeite, die
‫mit Containern anfangen, ihren ersten Projekten
‫in Containern, erwähne ich dieses Zeug nicht, weil Größe nur Größe ist.
‫Sie können einem Server jederzeit mehr Speicherplatz hinzufügen.
‫Kein Grund, ein ganzes Team dazu zu bringen, alle
‫möglichen neuen Tools und Dinge zu lernen, nur um weniger Speicherplatz
‫auf einem Server zu haben.
‫Ich persönlich interessiere mich nicht für Größe.
‫Sicherheit ist eine theoretische Sache.
‫Theoretisch könnten all diese Dinge, die aus
‫einem Container-Image entfernt werden, die
‫Sicherheit erhöhen. Reden wir doch mal in freier Wildbahn.
‫Wie viele Möglichkeiten hat jemand, außerhalb Ihrer
‫App mit anderen Werkzeugen in Ihrem
‫Container herumzuspielen? Angenommen, cURL weist eine Sicherheitsanfälligkeit auf, Ihre
‫App verwendet jedoch kein cURL.
‫Es ist einfach so im Bild.
‫Wie kann jemand darauf zugreifen, oder?
‫Sie müssen Ihre App durchbrechen.
‫Ihre App muss also einen Exploit haben.
‫Dann könnten sie theoretisch den Befehl cURL im
‫Container ausführen, richtig. Genau darum
‫geht es also bei diesem quälenden Teil um die
‫theoretischen Sicherheitsvorteile, wenn andere Anwendungen nicht berücksichtigt werden.
‫Die Realität sieht jedoch so aus, dass Sie
‫nach dem Erstellen einer statischen Binärdatei bereits viele Bibliotheken
‫einbinden, die anfällig sein können, beispielsweise Open
‫SSL. Dies ist eine gängige Methode, um Anwendungen mit SSL-Sicherheit
‫zu verbinden.
‫Nun, wenn das eine Sicherheitsanfälligkeit ist und Sie sie statisch in Ihre App
‫integrieren, ist sie immer noch vorhanden.
‫Es ist nur keine separate Datei auf dem Container.
‫Es ist in Ihrer App in einer einzigen Binärdatei.
‫Tatsächlich wird es dadurch schwieriger, Sicherheitsüberprüfungen
‫durchzuführen, da jetzt jeder mir bekannte Scanner diese
‫offene SSL-Binärdatei nicht abfängt, wenn sie
‫eingebaut ist. Vieles davon ist theoretisch.
‫Ich tendiere nicht dazu, Teams zu theoretischen
‫Sicherheitsmerkmalen zu drängen. Ich schaue genauer hin,
‫was in der Wildnis passiert, richtig.
‫Docker-Dämonen werden freigelegt.
‫Kubernetes hat keine ordnungsgemäße Authentifizierung, daher
‫wird es offengelegt. Das sind die wirklichen
‫Probleme, die ich sehe, und auf die wir uns konzentrieren,
‫hören wir immer wieder in den Nachrichten, mit
‫denen die Leute gehackt werden, richtig. Solche Sachen mit theoretischer
‫Sicherheit beim Entfernen von Dateien aus Bildern.
‫Das ist nur mehr im theoretischen Bereich.
‫Es ist kein Grund, es nicht zu tun.
‫Genau wie diese Liste, alles in dieser Liste, würde ich
‫zuerst tun, bevor ich anfange, diesen Weg der harten
‫Sachen zu beschreiten.
‫Ich halte Bilder ohne Not für relativ schwierig.
‫Es sei denn, Sie sind bereits Go-Programmierer
‫und Ihr gesamtes Team beherrscht Namespaces,
‫Docker-Befehle und ähnliches.
‫Ich meine nicht nur normale Docker-Befehle.
‫Ich meine komplizierte Dinge, die Ihnen helfen, beispielsweise Container zu
‫beheben, in denen sich keine Hüllen befinden.
‫Das ist eine gute Frage.
‫Es kommt die ganze Zeit auf.
‫Jeder fragt mich, wenn wir Sicherheitsdiskussionen haben, weil es
‫ein beliebtes Thema ist. Aber es ist nicht einmal in
‫meinen Top Ten.
‫Ich hoffe das hilft.