Ansichten:
Profilanwendbarkeit: Stufe 1
Vermeiden Sie nicht standardmäßige ClusterRoleBindings und RoleBindings mit der Gruppe system:unauthenticated, außer der ClusterRoleBinding system:public-info-viewer.
Kubernetes weist der Gruppe system:unauthenticated API-Server-Anfragen zu, bei denen keine Authentifizierungsinformationen bereitgestellt werden. Das Binden einer Rolle an diese Gruppe gibt jedem nicht authentifizierten Benutzer die von dieser Rolle gewährten Berechtigungen und wird dringend abgeraten.
Standardwert:
ClusterRoleBindings mit Gruppe system:unauthenticated:
system:public-info-viewer
Kein RoleBindings mit der Gruppe system:unauthenticated.

Auswirkung

Nicht authentifizierte Benutzer haben Berechtigungen und Rechte, die mit den Rollen verbunden sind, die den konfigurierten Bindungen zugeordnet sind.
Es sollte darauf geachtet werden, bevor nicht standardmäßige clusterrolebindings oder rolebindings aus der Umgebung entfernt werden, um sicherzustellen, dass sie nicht für den Betrieb des Clusters erforderlich waren. Nutzen 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 nicht standardmäßigen ClusterRoleBindings zur Gruppierung von system:unauthenticated gibt:
$ kubectl get clusterrolebindings -o json | jq -r '["Name"], ["-----"], 
(.items[] | select((.subjects | length) > 0) | select(any(.subjects[]; .name 
== "system:unauthenticated")) | [.metadata.namespace, .metadata.name]) | 
@tsv'
Nur die folgenden Standard-ClusterRoleBinding sollten angezeigt werden:
Name 
----- 
               system:public-info-viewer
Wenn nicht standardmäßige Bindungen vorhanden sind, ü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 die Gruppe system:unauthenticated enthalten:
$ 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'
Es sollten keine RoleBindings aufgeführt sein.
Falls Bindungen existieren, ü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 nicht standardmäßigen clusterrolebindings und rolebindings für die Gruppe system:unauthenticated. Überprüfen Sie, ob sie verwendet werden, und überprüfen Sie die Berechtigungen, die mit der Bindung verbunden sind, indem Sie die Befehle im Audit-Abschnitt oben verwenden oder auf die GKE-Dokumentation verweisen.
Erwägen Sie dringend, nicht standardmäßige, unsichere Bindungen durch eine authentifizierte, benutzerdefinierte Gruppe zu ersetzen. Binden Sie, wo möglich, an nicht standardmäßige, benutzerdefinierte Gruppen mit Rollen mit minimalen Berechtigungen.
Falls es nicht standardmäßige, unsichere Bindungen zur Gruppe system:unauthenticated gibt, fahren Sie nach Abwägung der Cluster-Operationen mit nur notwendigen, sichereren Bindungen mit deren Löschung fort.
kubectl delete clusterrolebinding 
[CLUSTER_ROLE_BINDING_NAME] 
kubectl delete rolebinding 
[ROLE_BINDING_NAME] 
--namespace 
[ROLE_BINDING_NAMESPACE]