檢視次數:
設定檔適用性:等級 1
一般不允許容器在設置 allowPrivilegeEscalation 標誌為 true 的情況下運行。允許此權限可能導致運行容器的進程獲得比其啟動時更多的權限。
請注意,這些權限仍然受到整體容器沙箱的限制,且此設定與使用特權容器無關。
設定 allowPrivilegeEscalation 標誌為 true 的容器可能會有進程獲得比其父進程更多的權限。
應至少定義一個入場控制政策,該政策不允許容器進行權限升級。存在允許 setuid 二進制文件運行的選項(默認為 true)。
如果您需要運行使用 setuid 二進制文件或需要權限升級的容器,應在單獨的政策中定義,並且您應仔細檢查以確保只有有限的服務帳戶和使用者被授予使用該政策的權限。
注意
注意
預設情況下,對於容器內的進程提升權限的能力沒有任何限制。

影響

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

稽核

列出叢集中每個命名空間使用的政策,並確保每個政策都禁止允許權限升級的容器入場。
此命令會獲取所有命名空間中的所有 pod,以 JSON 格式輸出其詳細資訊,並使用 jq 解析和篩選出 allowPrivilegeEscalation 設定為 true 的容器。
kubectl get pods --all-namespaces -o json | jq -r '.items[] |
select(any(.spec.containers[];
.securityContext.allowPrivilegeEscalation == true)) |
"\(.metadata.namespace)/\(.metadata.name)"'
或者:
kubectl get pods --all-namespaces -o json | jq '.items[] |
select(.metadata.namespace != "kube-system" and .spec.containers[];
.securityContext.allowPrivilegeEscalation == true) | {pod:
.metadata.name, namespace: .metadata.namespace, container:
.spec.containers[].name}'
在建立 Pod 安全性政策時,["kube-system"] 命名空間預設會被排除。
此命令使用 jq(一個命令列 JSON 處理器)來解析從 kubectl get pods 獲得的 JSON 輸出,並篩選出任何容器中 securityContext.privileged 標誌設為 true 的 Pod。
注意
注意
您可能需要根據您的具體需求和 pod 規格的結構來調整命令。

補救

將政策新增至叢集中每個具有使用者工作負載的命名空間,以限制允許 .spec.allowPrivilegeEscalation 設定為 true 的容器進入。