|
|
| Zeile 81: |
Zeile 81: |
|
| |
|
| = TMP = | | = TMP = |
| == Sicherheit ==
| |
| ; 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
| |
Docker/Sicherheit - Beschreibung
Beschreibung
Installation
Aufruf
Optionen
| Unix |
GNU |
Parameter |
Beschreibung
|
|
|
|
|
Parameter
Umgebungsvariablen
Exit-Status
| Wert |
Beschreibung
|
| 0 |
Erfolg
|
| >0 |
Fehler
|
Anwendung
Problembehebung
Konfiguration
Dateien
Anhang
Siehe auch
Dokumentation
Links
Projekt
Weblinks
- https://docs.docker.com/engine/security/
TMP