Docker/Sicherheit: Unterschied zwischen den Versionen
| (3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 2: | Zeile 2: | ||
== Beschreibung == | == Beschreibung == | ||
; Kein Sicherheitsgewinn | |||
Durch Container hat man im Gegensatz zu herkömmlichen VMs keinen Sicherheitsgewinn | |||
* die im Container laufende Software wird direkt auf dem Host-Betriebssystem ausgeführt | |||
== | === Sicherheitsaspekte === | ||
; Root-Rechte | |||
Docker-Container werden durch einen [[Daemon]] erzeugt, der in der Vergangenheit zwingend ''[[Root-Konto|root]]''-Rechte haben musste, ab Version 19.03 unter bestimmten Umständen aber auch unprivilegiert sein kann | |||
* Läuft der Daemon mit ''root''-Rechten, bedient man sich oft einer eigenen Nutzergruppe, um auch unprivilegierten Nutzern die Erzeugung neuer Docker-Container zu erlauben | |||
; Unprivilegierten Nutzer | |||
Ein möglicher Fallstrick besteht darin, dass alle unprivilegierten Nutzer, die Mitglied einer solchen Nutzergruppe sind, indirekt über volle ''root''-Rechte auf dem [[Hostrechner|Host-System]] verfügen | |||
* Die alternative Software für Containervirtualisierung ''Podman'' verzichtet auf dieses Sicherheitsrisiko, ist zu Docker kompatibel und angepasst auf [[Kubernetes]] | |||
; Format | |||
Die [[Open Container Initiative]] spezifiziert ein Format zur [[Containervirtualisierung]] | |||
* Da es sich um eine internationale und offene Spezifikation handelt, kann prinzipiell jeder diese [[Implementierung#Softwaretechnik|implementieren]] | |||
* So sind sicherere Alternativen zu Docker entstanden, zu denen man vorhandene Images oder Container migrieren kann – etwa ''containerd'' oder ''Podman'' | |||
* Trotz Standardisierung gibt es kleinere Unterschiede, etwa im Speicherort von Container und Images | |||
; Unterschiede zu [[Virtuelle Maschine|Virtuellen Maschinen]] | |||
Im Unterschied zu einer [[Virtuelle Maschine|Virtuellen Maschine]] teilen sich Container und Host einen gemeinsamen [[Kernel (Betriebssystem)|Betriebssystem-Kernel]] | |||
* Dies verbessert einerseits die Leistung erheblich, vergrößert andererseits aber auch das Risiko, dass erfolgreiche Angriffe gegen den Kernel auch den Host kompromittieren | |||
Bei richtiger Konfiguration sind selbst ''root''-Rechte innerhalb eines Docker-Containers nicht dazu geeignet, um den Host anzugreifen | |||
* Insbesondere sollte dazu ein neuer ''User Namespace'' erzeugt und der ''root''-Benutzer des Containers auf einen unprivilegierten Benutzer des Hosts abgebildet werden | |||
=== | === Ressourcentrennung === | ||
Da die Ressourcentrennung alleine mit den Docker zugrunde liegenden Techniken wie Namespaces und Cgroups nicht völlig sicher ist | |||
* hat das Unternehmen [[Red Hat]] Unterstützung für die sicherheitsrelevante Kernel-Erweiterung [[SELinux]] implementiert | |||
* welche die Container auf der Ebene des Host-Systems zusätzlich absichert | |||
== Anwendung == | == Anwendung == | ||
| Zeile 79: | Zeile 80: | ||
</noinclude> | </noinclude> | ||
Aktuelle Version vom 13. November 2025, 13:52 Uhr
Docker/Sicherheit - Beschreibung
Beschreibung
- Kein Sicherheitsgewinn
Durch Container hat man im Gegensatz zu herkömmlichen VMs keinen Sicherheitsgewinn
- die im Container laufende Software wird direkt auf dem Host-Betriebssystem ausgeführt
Sicherheitsaspekte
- Root-Rechte
Docker-Container werden durch einen Daemon erzeugt, der in der Vergangenheit zwingend root-Rechte haben musste, ab Version 19.03 unter bestimmten Umständen aber auch unprivilegiert sein kann
- Läuft der Daemon mit root-Rechten, bedient man sich oft einer eigenen Nutzergruppe, um auch unprivilegierten Nutzern die Erzeugung neuer Docker-Container zu erlauben
- Unprivilegierten Nutzer
Ein möglicher Fallstrick besteht darin, dass alle unprivilegierten Nutzer, die Mitglied einer solchen Nutzergruppe sind, indirekt über volle root-Rechte auf dem Host-System verfügen
- Die alternative Software für Containervirtualisierung Podman verzichtet auf dieses Sicherheitsrisiko, ist zu Docker kompatibel und angepasst auf Kubernetes
- Format
Die Open Container Initiative spezifiziert ein Format zur Containervirtualisierung
- Da es sich um eine internationale und offene Spezifikation handelt, kann prinzipiell jeder diese implementieren
- So sind sicherere Alternativen zu Docker entstanden, zu denen man vorhandene Images oder Container migrieren kann – etwa containerd oder Podman
- Trotz Standardisierung gibt es kleinere Unterschiede, etwa im Speicherort von Container und Images
- Unterschiede zu Virtuellen Maschinen
Im Unterschied zu einer Virtuellen Maschine teilen sich Container und Host einen gemeinsamen Betriebssystem-Kernel
- Dies verbessert einerseits die Leistung erheblich, vergrößert andererseits aber auch das Risiko, dass erfolgreiche Angriffe gegen den Kernel auch den Host kompromittieren
Bei richtiger Konfiguration sind selbst root-Rechte innerhalb eines Docker-Containers nicht dazu geeignet, um den Host anzugreifen
- Insbesondere sollte dazu ein neuer User Namespace erzeugt und der root-Benutzer des Containers auf einen unprivilegierten Benutzer des Hosts abgebildet werden
Ressourcentrennung
Da die Ressourcentrennung alleine mit den Docker zugrunde liegenden Techniken wie Namespaces und Cgroups nicht völlig sicher ist
- hat das Unternehmen Red Hat Unterstützung für die sicherheitsrelevante Kernel-Erweiterung SELinux implementiert
- welche die Container auf der Ebene des Host-Systems zusätzlich absichert
Anwendung
Problembehebung
Konfiguration
Dateien
| Datei | Beschreibung |
|---|---|
Anhang
Siehe auch
Dokumentation
Links
Projekt
Weblinks