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

影響

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

稽核

列出叢集中每個命名空間使用的政策,確保每個政策都不允許hostPID容器的進入。
搜尋 hostPID 標誌。在 YAML 輸出中,查看 spec 部分下的 hostPID 設定,以檢查其是否設為 true
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)"'
在建立 Pod 安全政策時,["kube-system", "gatekeeper-system", "azure-arc", "azure-extensions-usage-system"] 命名空間預設會被排除。
該命令以 JSON 格式檢索所有命名空間中的所有 pod,然後使用 jq 過濾出 hostPID 設置為 true 的 pod,最後格式化輸出以顯示每個匹配 pod 的命名空間和名稱。

矯正性處理

在叢集中每個具有使用者工作負載的命名空間中添加政策,以限制hostPID容器的准入。
可以在 Azure 入口網站中搜尋政策來找到 Pod 安全性政策和指派。詳細的逐步指南可以在此處找到:https://learn.microsoft.com/en-us/azure/governance/policy/concepts/policy-for-kubernetes