設定檔適用性:等級 1
一般不允許容器在設置
allowPrivilegeEscalation 標誌為 true 的情況下運行。允許此權限可能導致運行容器的進程獲得比初始更多的權限。請注意,這些權限仍然受到整體容器沙盒的限制,且此設定與使用特權容器無關。
設定
allowPrivilegeEscalation 標誌為 true 的容器可能會有進程獲得比其父進程更多的權限。應至少定義一項入場控制政策,該政策不允許容器進行權限升級。存在允許 setuid 二進位檔案運行的選項(預設為 true)。
如果您需要運行使用 setuid 二進制文件或需要權限升級的容器,應在單獨的政策中定義此需求,並仔細檢查以確保只有有限的服務帳戶和使用者被授予使用該政策的權限。
注意預設情況下,容器內的進程在提升權限方面沒有任何限制。
|
影響
使用
spec.allowPrivilegeEscalation: true定義的Pods將不被允許,除非它們在特定政策下運行。稽核
列出叢集中每個命名空間使用的政策,並確保每個政策禁止允許權限升級的容器入場。
此命令獲取所有命名空間中的所有 pod,將其詳細資訊輸出為 JSON 格式,並使用 jq 解析和篩選輸出,尋找容器中
allowPrivilegeEscalation 設定為 true 的項目。選項 1
kubectl get pods --all-namespaces -o json | jq -r '.items[] | select(any(.spec.containers[]; .securityContext.allowPrivilegeEscalation == true)) | "\(.metadata.namespace)/\(.metadata.name)"'
選項 2
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 的 pods。
注意您可能需要根據您的具體需求和 pod 規格的結構來調整命令。
|
補救
在叢集中每個具有使用者工作負載的命名空間中新增政策,以限制容器的允許,當
.spec.allowPrivilegeEscalation設定為true時。
