Ansichten:
Profilanwendbarkeit: Stufe 1
Erlauben Sie nicht generell, dass Container mit dem hostPID-Flag auf true gesetzt werden.
Ein Container, der im PID-Namespace des Hosts läuft, kann Prozesse außerhalb des Containers inspizieren. Wenn der Container auch Zugriff auf ptrace-Fähigkeiten hat, kann dies genutzt werden, um Privilegien außerhalb des Containers zu eskalieren.
Es sollte mindestens eine Zugriffssteuerungsrichtlinie definiert sein, die es Containern nicht erlaubt, den PID-Namespace des Hosts zu teilen. Wenn Sie Container ausführen müssen, die hostPID erfordern, sollte dies in einer separaten Richtlinie definiert werden, und Sie sollten sorgfältig prüfen, dass nur begrenzte Dienstkonten und Benutzer die Berechtigung erhalten, diese Richtlinie zu verwenden.
Hinweis
Hinweis
Standardmäßig gibt es keine Einschränkungen bei der Erstellung von hostPID-Containern.

Auswirkung

Pods, die mit spec.hostPID: true definiert sind, werden nicht zugelassen, es sei denn, sie werden unter einer spezifischen Richtlinie ausgeführt.

Prüfung

Listen Sie die Richtlinien auf, die für jeden Namespace im Cluster verwendet werden, und stellen Sie sicher, dass jede Richtlinie die Zulassung von hostPID-Containern untersagt.
Suchen Sie nach dem hostPID-Flag: Suchen Sie im YAML-Ausgabe nach der hostPID-Einstellung im Abschnitt spec, um zu überprüfen, ob sie auf true gesetzt ist.
kubectl get pods --all-namespaces -o json | jq -r '.items[] | select(.spec.hostPID == true) | "\(.metadata.namespace)/\(.metadata.name)"'
Oder:
kubectl get pods --all-namespaces -o json | jq -r '.items[] | select(.spec.hostPID == true) | select(.metadata.namespace != "kube-system" and .metadata.namespace != "gatekeeper-system" and .metadata.namespace != "azure-arc" and .metadata.namespace != "azure-extensions-usage-system") | "\(.metadata.name) \(.metadata.namespace)"'
Beim Erstellen einer Pod-Sicherheitsrichtlinie sind die ["kube-system", "gatekeeper-system", "azure-arc", "azure-extensions-usage-system"]-Namespaces standardmäßig ausgeschlossen.
Dieser Befehl ruft alle Pods in allen Namespaces im JSON-Format ab, verwendet dann jq, um diejenigen herauszufiltern, bei denen das hostPID-Flag auf true gesetzt ist, und formatiert schließlich die Ausgabe, um den Namespace und den Namen jedes übereinstimmenden Pods anzuzeigen.

Wiederherstellung

Fügen Sie Richtlinien zu jedem Namespace im Cluster hinzu, der Benutzerarbeitslasten enthält, um die Zulassung von hostPID-Containern einzuschränken.
Pod-Sicherheitsrichtlinien und Zuweisungen können im Azure-Portal durch die Suche nach Richtlinien gefunden werden. Eine detaillierte Schritt-für-Schritt-Anleitung finden Sie in der Kubernetes-Richtliniendokumentation.