Auf einen Blick: Die Sicherung von Docker-Containern ist unerlässlich, um eine resiliente IT-Umgebung aufrechtzuerhalten. Empfohlene Praktiken umfassen die Verwendung vertrauenswürdiger Minimalbasis-Images, regelmäßige Aktualisierung von Docker-Versionen und die Implementierung von Least-Privilegd-Nutzerzugriffen, um Schwachstellen zu verringern.
- Halte magere Behälter aufrecht, indem du ungenutzte Komponenten entfernst.
- Scanne regelmäßig Docker-Images nach Schwachstellen und Updates.
Die Containerisierung von Anwendungen beinhaltet das Paketieren von Anwendungscode in einem virtuellen Container mit seinen Abhängigkeiten – den erforderlichen Bibliotheken, Frameworks und Konfigurationsdateien. Dieser Ansatz unterstützt Portabilität und arbeitet konsistent über verschiedene Rechenumgebungen und Infrastrukturen hinweg, ohne an Effizienz zu verlieren.
Eine besonders beliebte Containerplattform ist Docker. Organisationen nutzen Docker zur Entwicklung von Anwendungen, die sind:
- Effizient optimiert
- Hochskalierbar
- Tragbar
- Agile
Durch seine leichtgewichtigen Laufzeitumgebungen teilen Docker-Container zugrundeliegende Betriebssysteme, um Anwendungen zu hosten, die eine DevOps-Umgebung unterstützen. Als entscheidendes Element des Cloud-Native-Frameworks bringt Docker zahlreiche Vorteile für Ihren Softwareentwicklungszyklus (SDLC). Doch diese Vorteile sind nicht ohne Risiko. Sie werden wahrscheinlich mit Komplexitäten konfrontiert sein, insbesondere bei der Sicherung des Docker-Frameworks.
Standardmäßig sind Docker-Container sicher. Es ist jedoch unerlässlich, mögliche Schwachstellen zu kennen, um einen Ansatz zu verfolgen, der potenzielle Sicherheitsrisiken schützt.
In diesem Artikel betrachten wir daher die Best Practices zur Sicherung einer Docker-basierten Architektur in drei Schlüsselbereichen:
- Infrastruktur
- Bilder
- Zugriff und Authentifizierung
Fangen wir an.
(
Sicherung der Docker-Infrastruktur
Container sind virtualisierte Einheiten, die Anwendungen hosten können. Dazu enthalten Container:
- Code-Binärdateien
- Konfigurationsdateien
- Verwandte Abhängigkeiten
Da Container die Grundlage eines cloudnativen Setups bilden, ist deren Schutz vor potenziellen Angriffsvektoren eine entscheidende Aktivität während des gesamten Containerlebenszyklus. Ein ganzheitlicher Ansatz zur Absicherung eines solchen Frameworks besteht darin, nicht nur den Docker-Container, sondern auch seine zugrundeliegende Infrastruktur zu schützen.
Lassen Sie uns den besten Ansatz zur Sicherung der Infrastruktur analysieren und sehen, wie sie funktioniert.
Aktualisieren Sie Ihre Docker-Version regelmäßig
Zuerst einmal: Stellen Sie sicher, dass Ihre Docker-Version auf dem neuesten Stand ist. Veraltete Versionen sind anfällig für Sicherheitsangriffe. Neue Versionen enthalten oft Patches und Fehlerbehebungen , die Schwachstellen älterer Versionen beheben.
Dasselbe gilt für die Host-Umgebung: Stellen Sie sicher, dass unterstützende Anwendungen aktuell und frei von bekannten Fehlern oder Sicherheitslücken sind.
Halte magere und saubere Behälter
Eine erweiterte Containerumgebung erweitert die Angriffsfläche und ist vergleichsweise anfälliger für Sicherheitsverletzungen als Lean-Setups. Um dies zu vermeiden, konfigurieren Sie Ihre Container so, dass sie nur die notwendigen Komponenten enthalten, die sie so funktionieren, wie Sie es beabsichtigt haben:
- Softwarepakete
- Bibliotheken
- Konfigurationsdateien
Außerdem überprüfen Sie routinemäßig Host-Instanzen auf ungenutzte Container und Basisimages und verwerfen Sie diejenigen, die nicht genutzt werden.
APIs und Netzwerk konfigurieren
Docker Engine verwendet HTTP-APIs , um über ein Netzwerk zu kommunizieren. Schlecht konfigurierte APIs bergen Sicherheitslücken, die Hacker ausnutzen können.
Um dies zu vermeiden, schützen Sie Ihre Container, indem Sie die API sicher konfigurieren, sodass sie nicht öffentlich zugänglich gemacht werden. Ein Ansatz besteht darin, die verschlüsselte Kommunikation durch Zertifikatsbasierte Authentifizierung zu erzwingen.
(Erfahren Sie mehr Informationen zur Sicherung von Docker-APIs.)
Begrenzung der Nutzung von Systemressourcen
Setzen Sie eine Begrenzung für den Anteil der Infrastrukturressourcen, die jeder Container nutzen kann. Diese Infrastrukturressourcen umfassen:
- CPU
- Erinnerung
- Netzwerkbandbreite
Docker verwendet Kontrollgruppen, die die Zuteilung und Verteilung von Ressourcen zwischen den verschiedenen Prozessen einschränken. Dieser Ansatz verhindert, dass ein kompromittierter Container übermäßige Ressourcen verbraucht, die im Falle einer Sicherheitsverletzung die Serviceerbringung stören könnten.
Isolierung des Wirts aufrechterhalten
Führen Sie Container mit unterschiedlichen Sicherheitsanforderungen auf verschiedenen Hosts aus.
Die Aufrechterhaltung der Isolierung von Containern über verschiedene Namespaces dient dazu, kritische Daten vor einem ausgewachsenen Angriff zu schützen. Dieser Ansatz verhindert auch, dass verrauschte Nachbarn übermäßige Ressourcen durch poolbasierte Isolierung verbrauchen, was die Dienste anderer Container beeinträchtigt.
Containerfähigkeiten einschränken
Standardmäßig können Docker-Container zusätzliche Rechte verwalten und erwerben, die möglicherweise nicht notwendig sind, um die Kerndienste auszuführen.
Als Best Practice sollten Sie die Berechtigungen eines Containers auf das beschränken, was für die Ausführung seiner Anwendungen erforderlich ist. Dazu verwenden Sie den Befehl, um alle Rechte des Docker-Containers zu entfernen:
$ docker run --cap-drop ALL
Anschließend fügen Sie dem Container mit dem --cap-add-Flag spezifische Rechte hinzu. Dieser Ansatz schränkt Docker-Container darin ein, unnötige Rechte zu erhalten, die bei Sicherheitsverletzungen ausgenutzt werden.
Filtersystemaufrufe
Wenden Sie Systemaufruffilter an, die es Ihnen ermöglichen, zu entscheiden, welche Aufrufe von Containern auf den Linux-Kernel ausgeführt werden können.
Dieser Ansatz ermöglicht einen sicheren Rechenmodus und reduziert so mögliche Expositionspunkte, um Sicherheitsmissgeschicke zu vermeiden – insbesondere um die Ausnutzung von Kernel-Schwachstellen zu verhindern.
Sicherung von Docker-Images
Kommen wir nun zu Sicherheits-Best Practices jenseits der Infrastruktur.
Docker-Images sind Vorlagen mit ausführbarem Code, die zur Erstellung von Containern und zum Hosten von Anwendungen verwendet werden. Ein Docker-Image besteht aus Laufzeitbibliotheken und dem Root-Dateisystem – was das Image zu einer der wichtigsten Grundlagen eines Docker-Containers macht.
Hier sind einige Best Practices, die Sie bei der Sicherung von Docker-Images beachten sollten.
Verwenden Sie ein vertrauenswürdiges Image
Holen Sie sich Docker-Base-Images nur von vertrauenswürdigen Quellen , die aktuell und korrekt konfiguriert sind.
Stellen Sie außerdem sicher, dass Docker-Bilder korrekt signiert sind, indem Sie die Funktion Docker Content Trust aktivieren, um ungesicherte fragwürdige Quellen herauszufiltern.
Scannen Sie die Bilder regelmäßig
Es ist entscheidend, ein robustes Sicherheitsprofil von Docker-Images aufrechtzuerhalten und sie regelmäßig auf Schwachstellen zu scannen. Tun Sie dies zusätzlich zum ersten Scan, bevor Sie ein Image herunterladen, um sicherzustellen, dass es sicher zu verwenden ist.
Mit regelmäßigen Bildscans können Sie die Belichtung auch minimieren, indem Sie Folgendes tun:
- Prüfung kritischer Dateien und Verzeichnisse
- Sie halten sie mit den neuesten Sicherheitspatches auf dem neuesten Stand
Bevorzuge minimale Basisabbildungen
Vermeiden Sie die Verwendung größerer , generischer Docker-Bilder gegenüber kleineren, um Sicherheitslücken zu minimieren. Dies bietet zwei wertvolle Ergebnisse:
- Verringert die Angriffsfläche
- Beseitigt Standardkonfigurationen, die anfälliger für Hacks sind
Zugriffs- und Authentifizierungsmanagement
Die letzte Kategorie für Docker-Sicherheit umfasst Zugriff und Authentifizierung.
Die Sicherung von Docker Daemon durch Access Control wird oft als Anwendung der ersten Sicherheitsschicht bezeichnet. Ohne Docker Daemon zu sichern, ist alles immer verwundbar:
- Die zugrunde liegenden Operationen
- Anwendungen
- Geschäftstätigkeiten
Implementierung des am wenigsten privilegierten Benutzers
Standardmäßig haben Prozesse innerhalb von Docker-Containern Root-Rechte , die ihnen administrativen Zugriff sowohl auf den Container als auch auf den Host gewähren. Dadurch werden Container und der zugrundeliegende Host Sicherheitslücken ausgesetzt, die Hacker ausnutzen könnten.
Um diese Schwachstellen zu vermeiden, richten Sie einen am wenigsten privilegierten Benutzer ein, der nur die notwendigen Rechte zum Betrieb von Containern gewährt. Alternativ sollten Laufzeitkonfigurationen eingeschränkt werden, die die Nutzung eines privilegierten Benutzers verbieten.
Verwenden Sie ein Secrets-Management-Tool
Speichere niemals Geheimnisse in einer Dockerfile, die es einem Benutzer mit Zugriff auf die Dockerfile ermöglichen könnten, die Sicherheit eines gesamten Frameworks zu verlegen, zu missbrauchen oder zu gefährden.
Standardbewährte Vorgehensweise ist es, Schlüsselgeheimnisse sicher in Drittanbieter-Tools wie dem Hashicorp Vault zu verschlüsseln. Denselben Ansatz können Sie auch für andere Containergeheimnisse über Zugriffszugangsdaten hinaus verwenden.
Begrenze den direkten Zugriff auf Containerdateien
Transiente Container erfordern konsistente Upgrades und Fehlerbehebungen. Daher werden solche Containerdateien bei jedem Zugriff eines Benutzers offengelegt.
Als Best Practice sollten Sie Containerprotokolle außerhalb des Containers führen. Dies reduziert die konstante direkte Nutzung von Containerdateien drastisch. Es ermöglicht Ihrem Team außerdem, Probleme zu beheben, ohne auf Logs innerhalb eines Containerverzeichnisses zuzugreifen.
Verschlüsselte Kommunikation aktivieren
Beschränken Sie den Zugriff von Docker Daemon auf nur eine Handvoll Schlüsselbenutzer. Zusätzlich sollten Sie den direkten Zugriff auf Containerdateien begrenzen, indem Sie SSH-exklusiven Zugriff für allgemeine Nutzer erzwingen.
Verwenden Sie TLS-Zertifikate zur Verschlüsselung der Kommunikation auf Hostebene. Es ist außerdem wichtig, ungenutzte Ports zu deaktivieren und Standardports nur für den internen Gebrauch freizustellen.
Die Sicherung von Docker sichert Ihre IT-Umgebung
Sicherheit in einer IT-Landschaft ist eine entscheidende Aufgabe, die Sie niemals übersehen sollten.
Um ein cloud-natives Framework zu sichern, besteht der erste Schritt immer darin, die Schwachstellen der wichtigsten Elemente Ihres Frameworks zu berücksichtigen. Daher sollten Organisationen ein robustes Sicherheitsprofil pflegen, das sich auf Container und deren zugrundeliegende Infrastruktur konzentriert.
Obwohl die Ansätze zur Umsetzung von End-to-End-Sicherheit unterschiedlich sein können, besteht das Ziel immer darin, verwundbare Punkte zu berücksichtigen und bewährte Praktiken zu übernehmen, die Risiken mindern.
Verwandte Literatur
Docker-Leitfaden
Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.