Profilanwendbarkeit: Stufe 1
Erlauben Sie nicht generell, dass Container mit dem
hostPID
-Flag auf true
gesetzt ausgeführt werden.Ein Container, der im Prozess-ID-Namespace (PID) 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.![]() |
HinweisStandardmäß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. Im YAML-Ausgabeformat suchen Sie im Abschnitt spec nach der hostPID
-Einstellung, 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)"'
OR
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
["kube-system", "gatekeeper-system", "azure-arc", "azure-extensions-usage-system"]
-Namespaces standardmäßig ausgeschlossen.Der Befehl ruft alle Pods über alle Namespaces im JSON-Format ab, verwendet dann jq,
um diejenigen herauszufiltern, bei denen
hostPID
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 Benutzer-Workloads
enthält, um die Zulassung von
hostPID
-Containern zu beschrä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 hier: https://learn.microsoft.com/en-us/azure/governance/policy/concepts/policy-for-kubernetes