プロファイル適用性: レベル2
ユーザ
system:anonymousに対するClusterRoleBindingsやRoleBindingsを避けてください。Kubernetesは、認証情報が提供されていないAPIサーバリクエストにユーザ
system:anonymousを割り当てます。ユーザ system:anonymousにロールをバインドすると、認証されていないユーザにそのロールによって付与された権限が与えられるため、強く推奨されません。
注意clusterrolebindingsもrolebindingsもユーザsystem:anonymousと共にありません。 |
影響
認証されていないユーザは、設定されたバインディングに関連付けられたロールに関連する特権と権限を持ちます。
環境から
clusterrolebindingsまたはrolebindingsを削除する前に、それらがクラスタの運用に必要でないことを確認する必要があります。クラスタ操作には、より具体的で認証されたユーザを使用してください。監査
CusterRoleBindingsとRoleBindingsの両方を監査する必要があります。次のコマンドを使用して、
ClusterRoleBindingsから system:anonymousがないことを確認してください。$ kubectl get clusterrolebindings -o json | jq -r '["Name"], ["-----"], (.items[] | select((.subjects | length) > 0) | select(any(.subjects[]; .name == "system:anonymous")) | [.metadata.namespace, .metadata.name]) | @tsv'
ClusterRoleBindingsが一覧に表示されてはいけません。バインディングが存在する場合は、次のコマンドでその権限を確認し、特権を再評価してください。$ 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:anonymousユーザを含むRoleBindingsがないことを確認してください。$ kubectl get rolebindings -A -o json \
| jq -r '["Namespace", "Name"], ["---------", "-----"], (.items[] |
select((.subjects | length) > 0) | select(any(.subjects[]; .name ==
"system:anonymous")) | [.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をユーザシステム:anonymousに識別してください。それらが使用されているか確認し、上記の監査セクションのコマンドを使用してバインディングに関連付けられた権限を確認するか、GKE ドキュメントを参照してください。
安全でないバインディングは、認証されたユーザ定義のグループに置き換えることを強く検討してください。可能であれば、最小特権ロールを持つ非デフォルトのユーザ定義グループにバインドしてください。ユーザ
system:anonymousに対する安全でないバインディングがある場合は、必要かつ安全なバインディングのみでクラスタ操作を考慮した後に削除を進めてください。kubectl delete clusterrolebinding [CLUSTER_ROLE_BINDING_NAME] kubectl delete rolebinding [ROLE_BINDING_NAME] --namespace [ROLE_BINDING_NAMESPACE]
