檢視次數:
設定檔適用性:等級 1
避免使用非預設的ClusterRoleBindingsRoleBindings與群組system:authenticated,除了ClusterRoleBindings system:basic-usersystem:discoverysystem:public-info-viewer
Google 的驗證方法是讓 Google 雲端和 GKE 的驗證過程儘可能簡單且安全,而不需增加複雜的配置步驟。群組 system:authenticated 包含所有擁有 Google 帳戶的使用者,其中包括所有 Gmail 帳戶。在授予權限時,請考慮此擴展群組範圍的授權控制。因此,群組 system:authenticated 不建議用於非預設用途。
GKE 將群組 system:authenticated 指派給任何使用 Google 帳戶(包括所有 Gmail 帳戶)登入的使用者所發出的 API 伺服器請求。實際上,這與 system:unauthenticated 並無實質差異,因為任何人都可以創建 Google 帳戶。
將角色綁定到群組 system:authenticated 會賦予任何擁有 Google 帳戶的用戶(包括所有 Gmail 帳戶)該角色授予的權限,強烈不建議這樣做。
預設值:
ClusterRoleBindings 與群組 system:unauthenticated
system:public-info-viewer
沒有與群組 system:unauthenticated 相關的 RoleBindings

影響

在群組system:authenticated中的已驗證使用者應與system:unauthenticated中的使用者相似,擁有與配置綁定相關聯的角色的權限和許可。
在從環境中移除任何非預設的clusterrolebindingsrolebindings之前,應謹慎行事,以確保它們不是叢集運行所需的。利用更具特定性和經過身份驗證的使用者進行叢集操作。

稽核

使用以下命令確認沒有非預設的ClusterRoleBindingssystem:authenticated
$ kubectl get clusterrolebindings -o json | jq -r '["Name"], ["-----"], 
(.items[] | select((.subjects | length) > 0) | select(any(.subjects[]; .name 
== "system:unauthenticated")) | [.metadata.namespace, .metadata.name]) | 
@tsv'
僅顯示以下預設的ClusterRoleBindings
Name 
----- 
               system:public-info-viewer
               system:discovery 
               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'
確認沒有 RoleBindings 包含在 system:authenticated 群組中:
$ 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]'

補救

識別所有非預設的clusterrolebindingsrolebindings至群組system:authenticated。檢查它們是否被使用,並使用上面審核部分中的命令或參考GKE 文件來檢視與綁定相關的權限。
強烈建議將非預設、不安全的綁定替換為經過身份驗證的使用者自定義群組。在可能的情況下,綁定到具有最低權限角色的非預設使用者自定義群組。
如果群組 system:authenticated 存在任何非預設、不安全的綁定,請在考慮叢集操作後,僅保留必要且更安全的綁定,然後進行刪除。
kubectl delete clusterrolebinding 
[CLUSTER_ROLE_BINDING_NAME] 
kubectl delete rolebinding 
[ROLE_BINDING_NAME] 
--namespace 
[ROLE_BINDING_NAMESPACE]