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]