Sicherheit von Docker- und Kubernetes-Containern
Einführung in die Container-Sicherheit
Container haben das Deployment von Anwendungen revolutioniert, führen jedoch neue Angriffsvektoren ein. Die Sicherheit muss alles abdecken, von Base Images bis zur Kubernetes-Orchestrierung, einschließlich Runtime- Schutz und Network Policies.
Sicherheit von Docker-Images
1. Auswahl des Base Image
- Offizielle und verifizierte Images verwenden (Docker Hub verified publishers)
- Alpine Linux oder Distroless für eine kleinere Angriffsfläche bevorzugen
- :latest-Images vermeiden - immer Versionen angeben
- Layers minimieren und unnötige Werkzeuge entfernen
2. Vulnerability Scanning
- Trivy: Open-Source-Scanner von Aqua Security
- Grype: Schwachstellen-Scanning in Images und Filesystems
- Clair: Statische Schwachstellenanalyse
- Snyk Container: Integration mit CI/CD
- Automatisiertes Scanning in der CI/CD-Pipeline vor dem Push
3. Image Signing
- Docker Content Trust (Notary) für die Image-Signierung
- Sigstore/Cosign für Supply Chain Security
- Integritätsprüfung vor dem Deployment
Docker Runtime Security
Hardening von Docker-Containern:
- User Namespaces: Nicht als root ausführen (USER directive)
- Capabilities: Drop all + nur die notwendigen hinzufügen (--cap-drop=ALL)
- Read-only Filesystem: --read-only für unveränderliche Container
- No New Privileges: --security-opt=no-new-privileges
- Resource Limits: --memory, --cpus zur Vermeidung von DoS
- Seccomp Profiles: Gefährliche Syscalls filtern
- AppArmor/SELinux: Mandatory Access Control
Kubernetes-Sicherheit
1. RBAC und Zugriffskontrolle
- Least Privilege: spezifische Roles und RoleBindings
- Dedizierte Service Accounts pro Anwendung
- ClusterAdmin vermeiden, außer für kritische Automatisierung
- Audit Logging aller API Calls
2. Pod Security Standards
- Privileged: Ohne Einschränkungen (vermeiden)
- Baseline: Verhindert bekannte Eskalationen
- Restricted: Maximales Hardening für die Produktion
- Pod Security Admission controller für das Enforcement
3. Network Policies
- Default deny all + explizites Allow nach Bedarf
- Segmentierung nach Namespace und Labels
- Egress-Kontrolle zur Verhinderung von Exfiltration
- Integration mit CNI Plugins (Calico, Cilium)
Secrets Management
- Secrets niemals hardcoden in Images oder Code
- Kubernetes Secrets: Base64-kodiert (nicht verschlüsselt!)
- External Secrets Operator: Integration mit externen Vaults
- Sealed Secrets: Asymmetrische Verschlüsselung für GitOps
- HashiCorp Vault: Dynamic Secrets und automatische Rotation
- AWS Secrets Manager / Azure Key Vault: Cloud-native Options
- Encryption at Rest für etcd (--encryption-provider-config)
Runtime Security
Werkzeuge für den Runtime-Schutz:
- Falco: Runtime Threat Detection mit eBPF (CNCF)
- Tetragon: eBPF-based Security Observability (Cilium)
- Sysdig Secure: Container Forensics und Compliance
- Aqua Security: Full Lifecycle Container Security
- Prisma Cloud: CWPP (Cloud Workload Protection Platform)
Sie erkennen: anomales Process Spawning, verdächtige Netzwerkverbindungen, File-System-Änderungen, Privilege-Escalation-Versuche
Service Mesh Security
- Istio: Automatisches mTLS, Authorization Policies, Traffic-Verschlüsselung
- Linkerd: Leichtgewichtiges Service Mesh mit Zero-Trust Networking
- Consul Connect: Service-to-Service-Verschlüsselung und -Autorisierung
- Automatische Zertifikatsrotation
- Feingranulare Zugriffskontrolle zwischen Microservices
- Observability: Distributed Tracing und Metrics
Supply Chain Security
- SBOM (Software Bill of Materials): Syft, Tern zur Generierung
- Admission Controllers: OPA/Gatekeeper, Kyverno für Policy Enforcement
- Image Provenance: Konformität mit dem SLSA Framework
- Registry Security: Harbor, Artifactory mit integriertem Scanning
- Signierung und Verifizierung von Artefakten (Cosign, Notary v2)
- Kontinuierliches Vulnerability Management
Best Practices
- [OK] Images in allen Phasen der Pipeline scannen
- [OK] Pod Security Standards auf der Stufe Restricted implementieren
- [OK] Network Policies default deny für alle Namespaces
- [OK] Externe Secrets (niemals in Git oder Images)
- [OK] Runtime Monitoring mit Falco oder Äquivalent
- [OK] Audit Logs aktiviert und zentralisiert
- [OK] Regelmäßige Updates von Cluster und Components
- [OK] Verschlüsseltes etcd-Backup
- [OK] Getestete Disaster-Recovery-Pläne
- [OK] Zero-Trust Networking mit Service Mesh
