檢視次數:
設定檔適用性:級別 1
一般不允許容器在 hostPID 標誌設為 true 的情況下運行。
在主機的 PID 命名空間中運行的容器可以檢查在容器外運行的進程。如果容器也具有 ptrace 功能,則可以用來提升容器外的權限。
應至少定義一項存取控制政策,該政策不允許容器共享主機的 PID 命名空間。
如果您需要運行需要 hostPID 的容器,應在單獨的政策中定義,並且您應仔細檢查以確保只有有限的服務帳戶和使用者被授予使用該政策的權限。
注意
注意
預設情況下,建立hostPID容器沒有任何限制。

影響

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

稽核

列出叢集中每個命名空間使用的政策,並確保每個政策禁止接納hostPID容器。
在 YAML 輸出中,請在 spec 部分尋找 hostPID 設定,以檢查是否已設定為 true
選項 1
kubectl get pods --all-namespaces -o json | jq -r '.items[] |
select(.spec.hostPID == true) |
"\(.metadata.namespace)/\(.metadata.name)"'
選項 2
kubectl get pods --all-namespaces -o json | jq '.items[] |
select(.metadata.namespace != "kube-system" and .spec.hostPID == true)
| {pod: .metadata.name, namespace: .metadata.namespace, container:
.spec.containers[].name}'
在建立 Pod 安全政策時,預設會排除 ["kube-system"] 命名空間。
此指令以 JSON 格式擷取所有命名空間中的所有 pod,然後使用 jq 過濾出那些具有 hostPID 標誌且設定為 true 的 pod,最後格式化輸出以顯示每個符合條件的 pod 的命名空間和名稱。

補救

在叢集中每個具有使用者工作負載的命名空間中新增政策,以限制hostPID容器的准入。