Profilanwendbarkeit: Stufe 1
Vermeiden Sie nicht standardmäßige
ClusterRoleBindings und RoleBindings mit der Gruppe system:unauthenticated, außer dem ClusterRoleBinding system:public-info-viewer.Kubernetes weist der Gruppe
system:unauthenticated API-Server-Anfragen zu, die keine Authentifizierungsinformationen enthalten. Das
Binden einer Rolle an diese Gruppe gibt jedem nicht authentifizierten Benutzer die
Berechtigungen, die durch diese Rolle gewährt werden, und wird dringend abgeraten.Auswirkung
Nicht authentifizierte Benutzer haben Berechtigungen und Rechte, 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
Sowohl
ClusterRoleBindings als auch RoleBindings sollten überprüft werden.Verwenden Sie den folgenden Befehl, um zu bestätigen, dass es keine nicht standardmäßigen
ClusterRoleBindings für die Gruppe 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'
Es sollte nur die folgende Standard-
ClusterRoleBinding 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 einschließlich der system:unauthenticated-Gruppe vorhanden sind:$ 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:unauthenticated. Überprüfen Sie, ob sie verwendet werden und prü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, unsichere Standardbindungen durch eine authentifizierte, benutzerdefinierte
Gruppe zu ersetzen. Binden Sie, wo möglich, an benutzerdefinierte Gruppen mit minimalen
Berechtigungsrollen.
Falls es nicht standardmäßige, unsichere Bindungen zur Gruppe
system:unauthenticated 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]
Standardwert
ClusterRoleBindings mit der Gruppe system:unauthenticated:system:öffentliche-Info-Anzeige
Keine
RoleBindings mit der Gruppe system:unauthenticated.
