AppArmor ist ein Sicherheitsmodul des Linux-Kernels, das Prozesse über Profile einschränkt (Mandatory Access Control). In Kubernetes lassen sich solche Profile auf Pods und Container anwenden, um einem Angreifer nach einer Kompromittierung den Zugriff auf Dateien, Netzwerk und Capabilities zu erschweren.

Profile in der Pod-Spezifikation

Seit Kubernetes 1.30 ist AppArmor allgemein verfügbar (GA). Das Profil wird über appArmorProfile im SecurityContext gesetzt — auf Pod- oder Container-Ebene, also innerhalb der Pod-Spezifikation:

spec:
  containers:
  - name: app
    securityContext:
      appArmorProfile:
        type: Localhost
        localhostProfile: k8s-apparmor-example
  • RuntimeDefault – nutzt das Standardprofil des Container-Runtimes.
  • Localhost – lädt ein eigenes Profil vom Knoten; es muss dort unter /etc/apparmor.d/ geladen sein.
  • Unconfined – kein AppArmor-Schutz; in gehärteten Umgebungen vermeiden.

Vor Version 1.30 wurde das Profil über die Annotation container.apparmor.security.beta.kubernetes.io/<containername> gesetzt — sie ist mit 1.30 veraltet und wurde in 1.31 entfernt.

Voraussetzungen

AppArmor muss im Kernel aktiv sein (bei Ubuntu und Debian Standard). Das gewählte Profil muss auf allen Knoten geladen sein, auf denen der Pod laufen kann — fehlt es dort, wird der Pod nicht gestartet. Ähnlich wie der Syscall-Filter seccomp gehört AppArmor zur Grundausstattung der Container-Härtung; die passende Runtime-Konfiguration wählt die RuntimeClass.

Verwandte Grundlagen: Container, Kubernetes Pod Security, kubectl-Befehle.