配置檔適用性:級別 1
一般不允許容器以 hostNetwork 標誌設置為 true 運行。
在主機的網路命名空間中運行的容器可以訪問本地回環裝置,並且可以訪問來自其他 Pod 的網路流量。
應至少定義一個不允許容器共享主機網路命名空間的入場控制政策。
如果您需要運行需要訪問主機網路命名空間的容器,則應在單獨的政策中定義此需求,並且您應仔細檢查以確保只有有限的服務帳戶和用戶被授予使用該政策的權限。
注意
注意
預設情況下,對於 hostNetwork 容器的創建沒有任何限制。

影響

定義為 spec.hostNetwork: true 的 Pods 將不被允許,除非它們在特定政策下運行。

審計

列出叢集中每個命名空間中使用的政策,確保每項政策都不允許 hostNetwork 容器的入站。
考慮到手動檢查每個 pod 可能會耗時,特別是在大型環境中,您可以使用更自動化的方法來過濾出 hostNetwork 設置為 true 的 pod。以下是使用 kubectl 和 jq 的命令:
選項 1
kubectl get pods --all-namespaces -o json | jq -r '.items[] |
select(.spec.hostNetwork == true) |
"\(.metadata.namespace)/\(.metadata.name)"'
選項 2
kubectl get pods --all-namespaces -o json | jq '.items[] |
select(.metadata.namespace != "kube-system" and .spec.hostNetwork ==
true) | {pod: .metadata.name, namespace: .metadata.namespace,
container: .spec.containers[].name}'
在創建 Pod 安全政策時,預設會排除 ["kube-system"] 命名空間。
此命令以 JSON 格式檢索所有命名空間中的所有 pod,然後使用 jq 過濾出 hostNetwork 標誌設置為 true 的 pod,最後格式化輸出以顯示每個匹配 pod 的命名空間和名稱。

補救

在集群中每個具有用戶工作負載的命名空間中添加策略,以限制 hostNetwork 容器的入場。