Bevorzugte Architektur
Die in dieser Guideline beschriebene Entwicklungsumgebung baut auf dem Development Container + Service Container Architekturansatz auf und besteht dabei aus mehreren spezialisierten Containern.
Sicherheitsprinzipien
Abschnitt betitelt „Sicherheitsprinzipien“Host-System-Isolation
Abschnitt betitelt „Host-System-Isolation“Das Host-System enthält bewusst keine projektspezifische Toolchain:
- keine Node-Installation
- keine Projektdependencies
- keine Build-Tools
Trennung von Verantwortlichkeiten
Abschnitt betitelt „Trennung von Verantwortlichkeiten“Unterschiedliche Aufgaben wie Installation von Abhängigkeiten, Entwicklung oder App-Runtime werden gezielt auf getrennte Container verteilt.
Dadurch gilt:
- kein Container hat automatisch Zugriff auf alle Ressourcen
- Angriffsflächen bleiben begrenzt
Minimierung von Secrets
Abschnitt betitelt „Minimierung von Secrets“Secrets werden ausschließlich dort bereitgestellt, wo sie tatsächlich benötigt werden.
Beispiele:
- Registry-Tokens
- Git-/SSH-Konfiguration
- Runtime-Konfiguration
Ziel ist eine kontextspezifische Secret-Verteilung statt globaler Verfügbarkeit.
Reduzierte Containerrechte
Abschnitt betitelt „Reduzierte Containerrechte“Die Container werden mit einfachen, aber effektiven Hardening-Maßnahmen betrieben. Diese Maßnahmen reduzieren die Auswirkungen kompromittierter Prozesse innerhalb eines Containers.
Bekannte Grenzen
Abschnitt betitelt „Bekannte Grenzen“Der bevorzugte Architekturansatz reduziert Risiken, eliminiert sie jedoch nicht vollständig.
Bind-Mount Zugriff
Abschnitt betitelt „Bind-Mount Zugriff“Mehrere Container greifen auf das Projektverzeichnis zu (Bind Mount).
Das bedeutet:
- Container können Dateien auf dem Host-System verändern
- manipulierte Dateien können andere Container beeinflussen
- Angriffe über Build-/Runtime-Ketten bleiben möglich
Docker als Security Boundary
Abschnitt betitelt „Docker als Security Boundary“Container bieten eine starke, aber keine perfekte Isolation.
Restrisiken bestehen u.a. durch:
- Kernel-Schwachstellen
- Container-Escape-Exploits
- Fehlkonfigurationen (Capabilities, Mounts, Netzwerk)
Diese Risiken sind Docker-basierten Entwicklungsumgebungen grundsätzlich inhärent.