In this article
Sicherheit von Container-Registries: Sicherheitsrisiken bei der Verwendung einer Container-Registry
Container sind ein wichtiger Bestandteil des DevOps-Prozesses. Sie isolieren die Softwarekomponente einer Anwendung und ermöglichen so eine konsistente Bereitstellung in jeder Computing-Umgebung. Das bedeutet, dass sich Apps in Containern jederzeit genau gleich verhalten.
Was ist eine Container-Registry?
Eine Container-Registry ist ein Repository – oder eine Sammlung von Repositories –, in dem Container-Images gespeichert werden. Diese umfassen alle Komponenten einer Anwendung. Als Teil des DevOps-Prozesses unterstützen Container-Registries die Entwicklung containerbasierter Anwendungen und können mit Plattformen für die Container-Orchestrierung verbunden werden. Eine Container-Registry speichert nicht nur Images, sondern bietet auch einen Ort, von dem aus Entwickler sie auf folgende Weise teilen können:
1. Pushen: Images in die Registry hochladen
2. Pullen: Images in ein anderes System wie Docker oder Kubernetes herunterladen
Manche verwenden die Begriffe „Registry“ und „Repository“ synonym, doch in der Container-Welt haben sie zwei sehr unterschiedliche Funktionen. Repositories dienen zum Speichern und Verwalten von Images. Registries bestehen aus mehreren Repositories, können aber auch API-Pfade und Richtlinien zur Zugriffskontrolle speichern.
Es gibt auch verschiedene Arten von Repositories. Dazu gehören:
Lokal verwaltete
Remote als Caching-Proxys genutzte
Generische ohne Zuordnung zu einem bestimmten Paket
Virtuelle Sammlungen aus Remote- und lokalen Repositories unter einer URL
Laut der Cloud Native Computing Foundation (CNCF) spielen Container-Images und Registries eine wichtige Rolle in DevOps und bei der Entwicklung cloudnativer Anwendungen. Image-Registries kommen daher in jeder Phase des Entwicklungsprozesses zum Einsatz.
Es gibt zwei Arten von Registries: öffentliche und private. Für beide stehen zahlreiche Optionen zur Verfügung. Bevor Entwickler sich entscheiden, sollten sie Folgendes festlegen:
Welche Komponenten in der Registry gespeichert werden sollen. Neben Images gibt es zahlreiche verschiedene Plattformen, Code und Pakete, die im Container gespeichert und von dort aus abgerufen werden. Nicht alle Container unterstützen andere Inhalte als Image-Registries.
Welches Sicherheitsniveau erforderlich ist.
Wo die Registry gehostet werden soll.
Wie unterscheidet sich eine private Registry von einer öffentlichen?
Eine öffentliche Container-Registry ist eine einfachere und schnellere Option, da Entwickler keine Infrastruktur einrichten müssen. Öffentliche Container-Registries werden vor allem von kleinen Teams oder Einzelpersonen genutzt, die auf Open-Source-Images zurückgreifen. Allerdings sind öffentliche Registries tendenziell weniger sicher.
Eine private Container-Registry wird von der Organisation eingerichtet. So können Entwickler Sicherheits- und Datenschutzmaßnahmen in die Speicherung von Container-Images im Unternehmen integrieren. Entwickler haben die volle Kontrolle über private Container-Registries, die entweder lokal oder remote gehostet werden können. Die größten Vorteile einer privaten Registry sind die Freiheit, sie ganz nach den Anforderungen der Organisation zu verwalten, und die Möglichkeit, beliebige erforderliche Sicherheitsmaßnahmen hinzuzufügen.
Privat oder öffentlich: Was sollten Sie nutzen?
Öffentliche Container-Registry-Dienste sind die beste Option für sehr kleine Teams ohne verfügbares Budget, da kostenlose Angebote bereitstehen. Diese kostenlosen Optionen begrenzen jedoch, wie oft ein Container-Image innerhalb eines bestimmten Zeitraums gepullt werden kann. Die öffentliche Option bedeutet aber auch, dass Entwickler nicht bei null anfangen müssen: Bereits verfügbare Images können in laufenden Projekten verwendet werden.
Wenn Datenschutz höchste Priorität hat, sollten private Container-Registries verwendet werden. Zwar gibt es öffentliche Container-Registries für Unternehmen, doch Sie sollten berücksichtigen, welches Maß an Datenschutz und Sicherheit erforderlich ist. Wirklich sensible Daten und alles, was auf dem geistigen Eigentum einer Organisation basiert, sollten in einer privaten Container-Registry gespeichert werden. Auch alles, was einer regulatorischen Kontrolle unterliegt, sollte in streng kontrollierten Umgebungen verwaltet werden. Private Container ermöglichen die Kontrolle darüber, wo Images gespeichert und wie sie verteilt werden.
Welche Registries sind am sichersten?
Zu den sichersten verfügbaren Container-Registries gehören:
Registries sind an sich weder sicher noch unsicher. Organisationen sollten daher nach Lösungen suchen, die sich problemlos in Sicherheitstools integrieren lassen.
Container-Registries sicher nutzen
Containersicherheit ist ein mehrschichtiger Ansatz, der verschiedene Prozesse, Tools und weitere Ressourcen umfasst. Der Container selbst muss gemäß den Best Practices für Sicherheit gut aufgebaut sein, um das Risiko ausnutzbarer Schwachstellen zu verringern. Außerdem benötigt jede Ebene des Containers eigene Sicherheitsmaßnahmen. Zu diesen Ebenen gehören:
Das Container-Image und seine Software
Die Interaktion zwischen dem ursprünglichen Container, dem Betriebssystem und anderen Containern
Das Host-Betriebssystem
Netzwerk und Speicher
Die Laufzeit in Kubernetes-Clustern
Ein sicheres Container-Image hat höchste Priorität. Dafür sind drei Schritte erforderlich.
1. Sichern Sie Ihren Code und seine Abhängigkeiten von Anfang an. Durch die Automatisierung dieses Prozesses können Entwickler potenzielle Probleme frühzeitig erkennen.
2. Erstellen Sie Ihr Image auf Grundlage eines minimalen Basis-Images aus einer vertrauenswürdigen Quelle. Docker Hub bietet Millionen von Images und noch mehr Repositories. Ebenso wichtig: Dort gibt es verifizierte Publisher, die eine vertrauenswürdige Grundlage für den Aufbau von Images bieten.
3. Verwalten Sie alle Ebenen während des gesamten Entwicklungslebenszyklus. In diesem Bereich kann das Verwalten von Schwachstellen besonders schwierig sein. Beginnen Sie mit einem minimalen Basis-Image und fügen Sie Sicherheitstools nur bei Bedarf hinzu. So lassen sie sich im Laufe des Lebenszyklus leichter entfernen oder neu erstellen.
Container-Sicherheit mit Fokus auf Entwickler
Snyk findet und behebt automatisch Schwachstellen in Container-Images und Kubernetes-Workloads.
Snyk Container ist eine Lösung zum Scannen von Images, die potenzielle Schwachstellen erkennt und Empfehlungen zur Verbesserung der Image-Sicherheit sowie zur Verkleinerung von Basis-Images gibt. Die Lösung ist außerdem in gängige Container-Registries integriert, sodass Entwickler sicherstellen können, dass die Images, die sie in ihren Softwareprojekten verwenden, sicher sind.