設定檔適用性:級別 1
避免使用群組
system:unauthenticated
的非預設 ClusterRoleBindings
和 RoleBindings
,除了 ClusterRoleBinding system:public-info-viewer
。Kubernetes 將
system:unauthenticated
群組分配給未提供驗證資訊的 API 伺服器請求。將角色綁定到此群組會使任何未驗證的使用者獲得該角色授予的權限,強烈不建議這樣做。預設值:
ClusterRoleBindings
與群組 system:unauthenticated
:
system:public-info-viewer
沒有與群組
system:unauthenticated
相關的RoleBindings
。影響
未經身份驗證的使用者將擁有與配置綁定相關的角色相關的權限和許可。
在從環境中移除任何非預設的
clusterrolebindings
或rolebindings
之前,應謹慎行事,以確保它們不是集群運行所需的。利用更具體且經過身份驗證的使用者進行集群操作。稽核
應審核
ClusterRoleBindings
和RoleBindings
。使用以下命令確認沒有非預設的ClusterRoleBindings
將system:unauthenticated
分組:$ kubectl get clusterrolebindings -o json | jq -r '["Name"], ["-----"], (.items[] | select((.subjects | length) > 0) | select(any(.subjects[]; .name == "system:unauthenticated")) | [.metadata.namespace, .metadata.name]) | @tsv'
僅顯示以下預設的
ClusterRoleBinding
:Name ----- system:public-info-viewer
如果存在任何非預設綁定,請使用以下命令檢查其權限並重新評估其特權。
$ kubectl get clusterrolebinding [CLUSTER_ROLE_BINDING_NAME] -o json \ | jq ' .roleRef.name +" " + .roleRef.kind' \ | sed -e 's/"//g' \ | xargs -l bash -c 'kubectl get $1 $0 -o yaml'
確認沒有包含
system:unauthenticated
群組的 RoleBindings:$ kubectl get rolebindings -A -o json \ | jq -r '["Namespace", "Name"], ["---------", "-----"], (.items[] | select((.subjects | length) > 0) | select(any(.subjects[]; .name == "system:unauthenticated")) | [.metadata.namespace, .metadata.name]) | @tsv'
不應列出
RoleBindings
。如果存在任何綁定,請使用以下命令檢查其權限並重新評估其特權。
$ kubectl get rolebinding [ROLE_BINDING_NAME] --namespace [ROLE_BINDING_NAMESPACE] -o json \ | jq ' .roleRef.name +" " + .roleRef.kind' \ | sed -e 's/"//g' \ | xargs -l bash -c 'kubectl get $1 $0 -o yaml --namespace [ROLE_BINDING_NAMESPACE]'
補救
識別所有非預設的
clusterrolebindings
和rolebindings
至群組system:unauthenticated
。檢查它們是否被使用,並使用上面審核部分中的命令或參考GKE 文件來檢視與綁定相關的權限。強烈建議將非預設、不安全的綁定替換為已驗證的使用者定義群組。在可能的情況下,綁定到具有最低權限角色的非預設使用者定義群組。
如果有任何非預設、不安全的綁定到群組
system:unauthenticated
,請在考慮叢集操作後,僅保留必要且更安全的綁定,然後進行刪除。kubectl delete clusterrolebinding [CLUSTER_ROLE_BINDING_NAME] kubectl delete rolebinding [ROLE_BINDING_NAME] --namespace [ROLE_BINDING_NAMESPACE]