Profilanwendbarkeit: Stufe 1
Vermeiden Sie nicht standardmäßige
ClusterRoleBindings und RoleBindings mit der Gruppe system:authenticated, außer den 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 Benutzer 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 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 Benutzer mit einem Google-Konto, einschließlich aller Gmail-Konten, die
Berechtigungen, die durch diese Rolle gewährt werden, und wird dringend abgeraten.Auswirkung
Authentifizierte Benutzer in der Gruppe
system:authenticated sollten ähnlich behandelt werden wie Benutzer in system:unauthenticated, mit Rechten und Berechtigungen, die mit Rollen verbunden sind, die mit den konfigurierten
Bindungen verknüpft 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. Verwenden Sie einen spezifischeren und authentifizierten
Benutzer für Clusteroperationen.Prüfung
Verwenden Sie den folgenden Befehl, um zu bestätigen, dass keine nicht standardmäßigen
ClusterRoleBindings für 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 sollte nur eine oder mehrere der folgenden Standard-
ClusterRoleBindings angezeigt werden:Name ----- system:basic-user 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 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:authenticated 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.Wenn 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 mit der Bindung
verbundenen Berechtigungen mithilfe der Befehle im Audit-Abschnitt oben oder konsultieren
Sie die GKE-Dokumentation.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:authenticated gibt, fahren Sie mit deren Löschung 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]
Standardwert
ClusterRoleBindings mit der Gruppe system:authenticated:system:basic-usersystem:Entdeckung
Keine
RoleBindings mit der Gruppe system:authenticated.
