Ansichten:
Profilanwendbarkeit: Stufe 1
Eine Methode zur Überprüfung von Container-Systemaufrufen in Kubernetes ist die Verwendung des seccomp-Tools. Dieses Tool ist standardmäßig deaktiviert, kann jedoch verwendet werden, um die Systemaufrufmöglichkeiten eines Containers zu begrenzen und so die Angriffsfläche des Kernels zu verringern. Seccomp kann auch protokollieren, welche Aufrufe gemacht werden, indem ein Audit-Profil verwendet wird.
Ein benutzerdefiniertes Seccomp-Profil legt fest, welche Systemaufrufe erlaubt, verweigert oder protokolliert werden, sowie Standardaktionen für nicht spezifizierte Aufrufe.
Das Protokollieren aller Systemaufrufe kann Administratoren helfen, zu wissen, welche Systemaufrufe für Standardoperationen benötigt werden, sodass sie das seccomp-Profil weiter einschränken können, ohne die Systemfunktionalität zu verlieren. Es kann Administratoren auch helfen, eine Basislinie für die Standardbetriebsabläufe eines Pods zu erstellen, sodass sie wesentliche Abweichungen von diesem Muster erkennen können, die auf bösartige Aktivitäten hinweisen könnten.

Prüfung

Führen Sie den folgenden Befehl aus und überprüfen Sie, ob Pods und Container mit Seccomp konfiguriert sind:
kubectl get pods --all-namespaces
Stellen Sie sicher, dass Pods und Container in ihrer Spezifikation mit seccomp konfiguriert sind:
  • spec.securityContext.seccompProfile.type ist RuntimeDefault
Bestätigen Sie die Annotationswerte:
  • seccomp.security.alpha.kubernetes.io/pod ist runtime/default für Pods
  • container.seccomp.security.alpha.kubernetes.io/<container name> ist runtime/default für Container

Wiederherstellung

Um ein benutzerdefiniertes seccomp-Profil innerhalb eines Pods zu aktivieren, können Kubernetes-Administratoren ihre seccomp-Profil-JSON-Datei im /var/lib/kubelet/seccomp/-Verzeichnis ablegen und ein seccompProfile zum securityContext des Pods hinzufügen.
Ein benutzerdefiniertes seccompProfile sollte auch zwei Felder enthalten: Type: Localhost und localhostProfile: myseccomppolicy.json.
In der Pod- und Containerkonfiguration setzen Sie spec.securityContext.seccompProfile.type, spec.containers[*].securityContext.seccompProfile und spec.initContainers[*].securityContext.seccompProfile auf RuntimeDefault.
Das Folgende ist ein Beispiel für eine Spezifikation eines Pods und seiner Container, die seccompProfile auf RuntimeDefault setzt:
...
spec:
  securityContext:
    seccompProfile:
      type: RuntimeDefault 
  template:
    spec:
      containers:
      - ...
        securityContext:
          seccompProfile: RuntimeDefault