Profilanwendbarkeit: Stufe 1
Standardmäßig dürfen Container größtenteils uneingeschränkt innerhalb ihres eigenen
Kontexts ausgeführt werden. Ein Cyber-Akteur, der in einem Container Ausführung erlangt
hat, kann Dateien erstellen, Skripte herunterladen und die Anwendung innerhalb des
Containers ändern. Kubernetes kann das Dateisystem eines Containers sperren und dadurch
viele Aktivitäten nach einer Ausnutzung verhindern. Diese Einschränkungen betreffen
jedoch auch legitime Container-Anwendungen und können potenziell zu Abstürzen oder
anomalem Verhalten führen. Um Schäden an legitimen Anwendungen zu vermeiden, können
Kubernetes-Administratoren sekundäre Lese-/Schreib-Dateisysteme für bestimmte Verzeichnisse
einbinden, in denen Anwendungen Schreibzugriff benötigen.
Prüfung
Führen Sie den folgenden Befehl aus und überprüfen Sie den securityContext der Container
jedes Pods:
kubectl get pods --all-namespaces
Stellen Sie sicher, dass jeder Container
securityContext.readOnlyRootFilesystem
auf true
gesetzt hat.Wiederherstellung
Ändern Sie
containers[].securityContext.readOnlyRootFilesystem
in true
.Das folgende Beispiel ist eine Kubernetes-Bereitstellungsvorlage, die ein schreibgeschütztes
Stammdateisystem verwendet.
securityContext: readOnlyRootFilesystem: true
Die Zeilen, die
volumeMounts
und volumes
festlegen, zeigen, wie man ein beschreibbares Volume für Anwendungen erstellt, die
diese Fähigkeit benötigen.apiVersion: apps/v1 kind: Deployment metadata: labels: app: web name: web spec: selector: matchLabels: app: web template: metadata: labels: app: web name: web spec: containers: - command: ["sleep"] args: ["999"] image: ubuntu:latest name: web securityContext: readOnlyRootFilesystem: true volumeMounts: - mountPath: /writeable/location/here name: volName volumes: - emptyDir: {} name: volName