Ansichten:
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.