Profilanwendbarkeit: Stufe 2
Vermeiden Sie ClusterRoleBindings oder RoleBindings mit dem Benutzer
system:anonymous
.Kubernetes weist dem Benutzer
system:anonymous
API-Server-Anfragen zu, bei denen keine Authentifizierungsinformationen bereitgestellt
werden. Das Binden einer Rolle an den Benutzer system:anonymous
gibt jedem nicht authentifizierten Benutzer die von dieser Rolle gewährten Berechtigungen
und wird dringend abgeraten.![]() |
HinweisWeder
clusterrolebindings noch rolebindings mit Benutzer system:anonymous . |
Auswirkung
Nicht authentifizierte Benutzer haben Berechtigungen und Rechte, die den Rollen zugeordnet
sind, die mit den konfigurierten Bindungen verbunden sind.
Es sollte Vorsicht walten gelassen werden, bevor
clusterrolebindings
oder rolebindings
aus der Umgebung entfernt werden, um sicherzustellen, dass sie nicht für den Betrieb
des Clusters erforderlich waren. Verwenden Sie einen spezifischeren und authentifizierten
Benutzer für Cluster-Operationen.Prüfung
Sowohl CusterRoleBindings als auch RoleBindings sollten überprüft werden. Verwenden
Sie den folgenden Befehl, um zu bestätigen, dass es keine
ClusterRoleBindings
zu system:anonymous
gibt:$ kubectl get clusterrolebindings -o json | jq -r '["Name"], ["-----"], (.items[] | select((.subjects | length) > 0) | select(any(.subjects[]; .name == "system:anonymous")) | [.metadata.namespace, .metadata.name]) | @tsv'
Es sollten keine
ClusterRoleBindings
aufgeführt sein. Falls Bindungen existieren, überprüfen Sie deren Berechtigungen
mit dem folgenden Befehl und bewerten Sie deren Privilegien neu:$ 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'
Bestätigen Sie, dass keine
RoleBindings
einschließlich des system:anonymous
-Benutzers vorhanden sind:$ 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'
Es sollten keine
RoleBindings
aufgeführt sein.Falls Bindungen vorhanden sind, überprüfen Sie deren Berechtigungen mit dem folgenden
Befehl und bewerten Sie deren Privilegien neu.
$ 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]'
Wiederherstellung
Identifizieren Sie alle
clusterrolebindings
und rolebindings
für das Benutzersystem: anonym.Überprüfen Sie, ob sie verwendet werden, und überprüfen Sie die mit der Bindung verbundenen
Berechtigungen mithilfe der Befehle im obigen Abschnitt "Audit" oder konsultieren
Sie die GKE-Dokumentation.
Erwägen Sie dringend, unsichere Bindungen durch eine authentifizierte, benutzerdefinierte
Gruppe zu ersetzen. Binden Sie, wo möglich, an nicht standardmäßige, benutzerdefinierte
Gruppen mit Rollen mit den geringsten Privilegien. Wenn es unsichere Bindungen zum
Benutzer
system:anonymous
gibt, fahren Sie fort, diese nach Abwägung der Cluster-Operationen mit nur notwendigen,
sichereren Bindungen zu löschen.kubectl delete clusterrolebinding [CLUSTER_ROLE_BINDING_NAME] kubectl delete rolebinding [ROLE_BINDING_NAME] --namespace [ROLE_BINDING_NAMESPACE]