Ansichten:
Profilanwendbarkeit: Stufe 1
Vermeiden Sie nicht standardmäßige ClusterRoleBindings und RoleBindings mit der Gruppe system:authenticated, außer ClusterRoleBindings system:basic-user, system:discovery und system:public-info-viewer.
Googles Ansatz zur Authentifizierung besteht darin, die Authentifizierung bei Google Cloud und GKE so einfach und sicher wie möglich zu gestalten, ohne komplexe Konfigurationsschritte hinzuzufügen. Die Gruppe system:authenticated umfasst alle Nutzer mit einem Google-Konto, einschließlich aller Gmail-Konten. Berücksichtigen Sie Ihre Autorisierungssteuerungen mit diesem erweiterten Gruppenumfang, wenn Sie Berechtigungen erteilen. Daher wird die Gruppe system:authenticated für die nicht standardmäßige Verwendung nicht empfohlen.
GKE weist der Gruppe system:authenticated API-Server-Anfragen zu, die von jedem Benutzer gestellt werden, der mit einem Google-Konto angemeldet ist, einschließlich aller Gmail-Konten. In der Praxis unterscheidet sich dies nicht wesentlich von system:unauthenticated, da jeder ein Google-Konto erstellen kann.
Das Binden einer Rolle an die Gruppe system:authenticated gibt jedem Nutzer mit einem Google-Konto, einschließlich aller Gmail-Konten, die durch diese 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

Authentifizierte Benutzer in der Gruppe system:authenticated sollten ähnlich behandelt werden wie Benutzer in system:unauthenticated, mit Privilegien und Berechtigungen, die mit Rollen verbunden sind, die den konfigurierten Bindungen zugeordnet sind.
Es sollte Vorsicht walten gelassen 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. Verwenden Sie einen spezifischeren und authentifizierten Benutzer für Cluster-Operationen.

Prüfung

Verwenden Sie den folgenden Befehl, um zu bestätigen, dass keine nicht standardmäßigen ClusterRoleBindings zu system:authenticated vorhanden sind:
$ kubectl get clusterrolebindings -o json | jq -r '["Name"], ["-----"], 
(.items[] | select((.subjects | length) > 0) | select(any(.subjects[]; .name 
== "system:unauthenticated")) | [.metadata.namespace, .metadata.name]) | 
@tsv'
Es sollten nur die folgenden Standard-ClusterRoleBindings angezeigt werden:
Name 
----- 
               system:public-info-viewer
               system:discovery 
               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 erneut.
$ 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 es keine RoleBindings einschließlich der Gruppe system:authenticated gibt:
$ 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 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 nicht standardmäßigen clusterrolebindings und rolebindings für die Gruppe system:authenticated. Ü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, unsichere Standardbindungen durch authentifizierte, benutzerdefinierte Gruppen zu ersetzen. Binden Sie, wo möglich, an benutzerdefinierte Gruppen mit minimalen Berechtigungen.
Falls es nicht standardmäßige, unsichere Bindungen zur Gruppe system:authenticated gibt, fahren Sie mit dem Löschen fort, nachdem Sie die Clusteroperationen mit nur notwendigen, sichereren Bindungen berücksichtigt haben.
kubectl delete clusterrolebinding 
[CLUSTER_ROLE_BINDING_NAME] 
kubectl delete rolebinding 
[ROLE_BINDING_NAME] 
--namespace 
[ROLE_BINDING_NAMESPACE]