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