Kubernetes brachte Flexibilität, aber auch neue Angriffsvektoren. Sicherheit muss in die Pipeline integriert werden, von der Image-Erstellung bis zur Ausführung auf dem Cluster.
Hauptsicherheitsebenen
- Supply-Chain, Suche nach Schwachstellen in Docker]-Images.
- Zugriffskontrolle (RBAC), Mindestberechtigungen pro Dienstkonto.
- Netzwerkrichtlinien,
NetworkPolicy, um Pods zu isolieren. - Runtime Security, Falco, OPA Gatekeeper zur Erkennung von anomalem Verhalten.
- Datensicherheit, mit KMS verschlüsselte Geheimnisse, Volume-Verschlüsselung.
Kubernetes-Sicherheitscheckliste
- Aktivieren Sie PodSecurityPolicy oder Pod-Sicherheitsstandards.
- Definieren Sie Rollen und RoleBindings mit dem Prinzip der geringsten Berechtigung.
- Wenden Sie NetworkPolicy an, um den Intra-Namespace-Verkehr zu begrenzen.
- Scannen Sie Bilder mit Trivy oder Clair in CI.
- Implementieren Sie OPA Gatekeeper für Validierungsrichtlinien.
- Konfigurieren Sie Falco zur Überwachung verdächtiger Systemaufrufe.
- Secrets regelmäßig wechseln.
- Überwachen Sie API-Server-Protokolle mit Überwachungsrichtlinie.
Beispiel für eingeschränktes RBAC
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: prod name: read-only-role rules: - apiGroups: [""] resources: ["pods", "services", "configmaps"] verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-only-binding namespace: prod subjects: - kind: ServiceAccount name: app-sa namespace: prod roleRef: kind: Role name: read-only-role apiGroup: rbac.authorization.k8s.io
Einfache Netzwerkrichtlinien
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: deny-all-except-frontend namespace: prod spec: podSelector: {} policyTypes: - Ingress - Egress ingress: - from: - podSelector: matchLabels: app: frontend
Bildscannen in CI
## .gitlab-ci.yml stages: - scan - build - deploy scan_image: stage: scan image: aquasec/trivy:latest script: - trivy image --severity HIGH,CRITICAL myapp:latest
Laufzeitüberwachung mit Falco
apiVersion: apps/v1 kind: DaemonSet metadata: name: falco namespace: kube-system spec: selector: matchLabels: app: falco template: metadata: labels: app: falco spec: containers: - name: falco image: falcosecurity/falco:latest securityContext: privileged: true volumeMounts: - name: devfs mountPath: /host/dev - name: procfs mountPath: /host/proc - name: sysfs mountPath: /host/sys volumes: hostPath: path: /proc - name: sysfs hostPath: path: /sys
Fazit
Sicherheit in Kubernetes ist ein fortlaufender Prozess. Durch die Anwendung von Verteidigungsebenen, von der Image-Erstellung bis hin zu Laufzeitrichtlinien, reduzieren Sie die Angriffsfläche drastisch und erhöhen das Vertrauen in Produktionsumgebungen.
Welche Sicherheitspraktiken haben Sie bereits in Ihrem Cluster eingeführt? Teilen Sie es in den Kommentaren!
Lesen Sie auch
- Zero Trust: Implementierung granularer Zugriffssicherheit in verteilten Umgebungen
- Autorisierung und Berechtigungen in Anwendungen: Sichere Zugriffskontrolle
- Autorisierung und Berechtigungen – Best Practices-Grundlagen
- Schutz vor Datenlecks: Sicherheitsleitfaden
- Anwendungssicherheit: Leitfaden zum mobilen Schutz
- HashiCorp Vault: Sichere Geheimverwaltung in Anwendungen
