Kubernetes Cheatsheet

Kubernetes CheatsheetKapitel 05 von 11

Kubernetes Security

Stand Kubernetes 1.37 · Edition 2026.11 · Release-Daten geprüft am 30. Oktober 2026

RBAC

Role / ClusterRole: rules[].{apiGroups, resources, verbs}.

RoleBinding / ClusterRoleBinding: bindet Subject (User, Group, ServiceAccount) an Role.

Aggregation: aggregationRule.clusterRoleSelectors sammelt mehrere ClusterRoles, view, edit, admin sind so gebaut.

kubectl auth can-i delete pods --as=alice -n prod
kubectl auth can-i --list -n prod \
  --as=system:serviceaccount:prod:api

ServiceAccount-Token (seit 1.24)

Projected, bounded: audience- und Pod-gebunden, kubelet rotiert. Das automatisch gemountete kube-api-access (3607 s) verlängert der API-Server per Default auf bis zu 1 Jahr (--service-account-extend-token-expiration=false für harte 1 h). Eigene Projected-Tokens (Default 3600 s) sind nicht betroffen.

Klassische Secret-Tokens werden nicht mehr automatisch angelegt, explizit via kubernetes.io/service-account-token oder besser: TokenRequest-API + projected Volume.

Pod Security Admission

Ersetzt PodSecurityPolicy. Label am Namespace: pod-security.kubernetes.io/{enforce | audit | warn}: {privileged | baseline | restricted}. restricted verlangt runAsNonRoot: true, allowPrivilegeEscalation: false, capabilities.drop: [ALL], Seccomp RuntimeDefault oder Localhost. Profilstand pinnen: …/enforce-version.

SecurityContext (Pflicht-Set)

runAsNonRoot: true, runAsUser: 1000, readOnlyRootFilesystem: true, allowPrivilegeEscalation: false, capabilities.drop: [ALL], seccompProfile.type: RuntimeDefault. Pod-Ebene: hostUsers: false (User Namespaces, GA 1.36), Container-Root ist auf dem Host unprivilegiert. Braucht idmap-Mounts (Linux ≥ 6.3), containerd ≥ 2.0 oder CRI-O ≥ 1.25, runc ≥ 1.2 oder crun ≥ 1.9.

Secrets at Rest

etcd-Klartext per Default. KMS v2 (GA 1.29, v1 seit 1.29 per Default aus) via EncryptionConfiguration + externer KMS (Vault, Cloud-KMS) für Envelope-Encryption. Nach Aktivierung oder Key-Rotation bleiben Altdaten unverändert: StorageVersionMigration (storagemigration.k8s.io/v1, GA 1.37) schreibt sie neu.

Alternativ: External Secrets Operator.