Nutzerzugriff für Anthos Identity Service einrichten
Dieses Dokument richtet sich an Clusteradministratoren, die bereits Cluster für GKE Identity Service konfiguriert haben, indem Sie der Anleitung in Cluster für GKE Identity Service auf Flottenebene konfigurieren oder Cluster für GKE Identity Service mit OIDC konfigurieren gefolgt sind. Dort wird beschrieben, wie Sie den Zugriff auf Ihren konfigurierten Cluster für die Entwickler Ihrer Organisation und andere Clusternutzer einrichten und einschränken.
Mit Dateizugriff authentifizieren
Nachdem Sie einen Cluster konfiguriert haben, müssen Sie eine Anmeldekonfigurationsdatei generieren und an Clusternutzer verteilen. Mit dieser Datei können sich Nutzer über die Befehlszeile mit dem ausgewählten Anbieter im Cluster anmelden, wie unter Mit GKE Identity Service auf Cluster zugreifen beschrieben.
Nur bei OIDC-Anbietern können sich Nutzer auch ohne Anmeldedatei über die Google Cloud Console beim Cluster anmelden, wie unter Von der Google Cloud Console aus mit Clustern arbeiten beschrieben.
Anmeldekonfiguration generieren
Console
(nur Einrichtung auf Flottenebene)
Kopieren Sie den angezeigten gcloud
-Befehl und führen Sie ihn aus, um die Datei zu generieren.
gcloud
Wenn Sie den Cluster mithilfe der gcloud
-Befehlszeile konfiguriert haben oder die Datei noch einmal generieren müssen, führen Sie den folgenden Befehl aus, um die Datei zu generieren:
gcloud anthos create-login-config --kubeconfig=KUBECONFIG
Dabei ist KUBECONFIG
der Pfad der kubeconfig-Datei für den Cluster. Wenn die kubeconfig mehrere Kontexte enthält, wird der aktuelle Kontext verwendet. Möglicherweise müssen Sie den aktuellen Kontext auf den richtigen Cluster zurücksetzen, bevor Sie den Befehl ausführen.
Ausführliche Referenzinformationen zu diesem Befehl, einschließlich zusätzlicher optionaler Parameter, finden Sie in der Google Cloud CLI-Referenz.
Der Standardname für die Anmeldekonfigurationsdatei ist kubectl-anthos-config.yaml
. Dies ist der Name, den das Google Cloud CLI erwartet, wenn Sie sich mit der Datei anmelden. Wenn Sie einen nicht standardmäßigen Namen ändern möchten, lesen Sie den entsprechenden Abschnitt unter Anmeldekonfiguration verteilen.
Informationen zur Fehlerbehebung im Zusammenhang mit dem Nutzerzugriff finden Sie unter Probleme mit dem Nutzerzugriff beheben.
Anmeldekonfiguration verteilen
Im Folgenden sind einige mögliche Ansätze zum Verteilen der Konfigurationsdatei aufgeführt:
Hosten Sie die Datei unter einer zugänglichen URL. Nutzer können diesen Speicherort mit dem Flag
--login-config
angeben, wenn siegcloud anthos auth login
ausführen, wodurch das Google Cloud CLI die Datei abrufen kann.Durch Hosten der Datei auf einem sicheren Host. Weitere Informationen zur Verwendung von PEM-Zertifikaten für sicheren HTTPS-Zugriff finden Sie im Flag
--login-config-cert
der gcloud CLI.Stellen Sie die Datei für jeden Nutzer manuell bereit und geben Sie an, wo sie auf ihrem lokalen Computer gespeichert werden soll. Das Google Cloud CLI erwartet die Datei an einem für das Betriebssystem spezifischen Standardspeicherort. Wenn der Name oder Speicherort der Datei nicht standardmäßig ist, müssen Ihre Nutzer den Speicherort der Konfigurationsdatei mit dem Flag
--login-config
angeben, wenn Befehle für den Cluster ausgeführt werden. Eine Anleitung zum Speichern der Datei finden Sie unter Mit GKE Identity Service auf Cluster zugreifen.Übertragen Sie mit Ihren internen Tools die Konfigurationsdatei für die Authentifizierung per Push auf den Computer jedes Nutzers. Die Google Cloud CLI erwartet, dass die Datei je nach Nutzerbetriebssystem an folgenden Speicherorten gefunden wird:
Linux
$HOME/.config/google/anthos/kubectl-anthos-config.yaml
macOS
$HOME/Library/Preferences/google/anthos/kubectl-anthos-config.yaml
Windows
%APPDATA%\google\anthos\kubectl-anthos-config.yaml
Mit FQDN-Zugriff authentifizieren (empfohlen)
Anstatt die Konfigurationsdatei an alle Nutzer zu verteilen, können Sie die Nutzeranmeldung über den FQDN-Zugriffs einrichten. Nutzer können sich direkt auf dem GKE Identity Service-Server mit einem vollständig qualifizierten Domainnamen (FQDN, Fully Qualified Domain Name) authentifizieren. Für SAML-Anbieter wird der Zugriff auf die Nutzeranmeldung nur über diesen Authentifizierungsprozess unterstützt.
FQDN für Nutzer freigeben
Anstelle einer Konfigurationsdatei können Clusteradministratoren den FQDN ihres GKE Identity Service-Servers für Nutzer freigeben. Nutzer können sich mit diesem FQDN beim Cluster anmelden. Das URL-Format für die Anmeldung lautet APISERVER-URL, wobei die URL den FQDN des Clusterservers enthält.
Ein Beispielformat für APISERVER-URL ist https://cluster.company.com
.
Nutzeranmeldung mit vertrauenswürdigen SNI-Zertifikaten
SNI-Zertifikate vereinfachen den Clusterzugriff. Dazu nutzen sie vertrauenswürdige Zertifikate, die bereits auf Unternehmensgeräten vorhanden sind. Administratoren verwenden dieses Zertifikat zur Zeit der Clustererstellung. Als Nutzer müssen Sie den von Ihrem Administrator bereitgestellten FQDN verwenden, um sich im Cluster anzumelden. Alternativ können Sie eine sichere kubeconfig
-Datei verwenden, in der das Token nach erfolgreicher Authentifizierung gespeichert wird.
Bevor Sie den folgenden Befehl ausführen, prüfen Sie, ob das vom GKE Identity Service-Server verwendete Zertifikat von dem Gerät, auf dem die Nutzeranmeldung ausgeführt wird, als vertrauenswürdig eingestuft wird.
gcloud anthos auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE
Ersetzen Sie Folgendes:
- APISERVER-URL: FQDN des GKE Identity Service-Server.
- OUTPUT_FILE: Verwenden Sie dieses Flag, wenn sich die
kubeconfig
-Datei nicht am Standardspeicherort befindet. Wenn dieses Flag weggelassen wird, werden am Standardspeicherort Authentifizierungstokens zur Dateikubeconfig
hinzugefügt. Beispiel:--kubeconfig /path/to/custom.kubeconfig
.
Nutzeranmeldungszugriff über die von der Zertifizierungsstelle (Certification Authority) des Clusters ausgestellte Zertifikate
Wenn Sie als Nutzer kein vertrauenswürdiges SNI-Zertifikat auf Clusterebene verwenden, wird das vom Identity Service verwendete Zertifikat von der Zertifizierungsstelle (CA, Certificate Authority) des Clusters ausgestellt. Administratoren verteilen dieses CA-Zertifikat an Nutzer. Führen Sie den folgenden Befehl mit dem CA-Zertifikat des Clusters aus, um sich beim Cluster anzumelden:
gcloud anthos auth login --server APISERVER-URL --kubeconfig OUTPUT_FILE --login-config-cert CLUSTER_CA_CERTIFICATE
Identity Service-Optionen konfigurieren
Bei diesem Authentifizierungsansatz haben Sie die Möglichkeit, die Lebensdauer des Tokens zu konfigurieren. In der ClientConfig-Antwortvorlage wird ein neuer Abschnitt IdentityServiceOptions
mit einem neuen Parameter sessionDuration
eingeführt. Auf diese Weise können Nutzer die Lebensdauer des Tokens (in Minuten) konfigurieren. Der Parameter sessionDuration
hat ein unteres Limit von 15 Minuten und ein maximales Limit von 1440 Minuten (24 Stunden).
Hier ist ein Beispiel dafür, wie das in der ClientConfig-Antwortvorlage aussieht:
spec:
IdentityServiceOptions:
sessionDuration: INT
Dabei ist INT die Sitzungsdauer in Minuten.
Rollenbasierte Zugriffssteuerung (RBAC, Role-based Access Control) einrichten
Die Authentifizierung wird häufig mit der rollenbasierten Zugriffssteuerung von Kubernetes (Role-based Access Control, RBAC) kombiniert, um für authentifizierte Nutzer und Dienstkonten eine detailliertere Zugriffssteuerung zu ermöglichen. Es wird empfohlen, nach Möglichkeit RBAC-Richtlinien zu erstellen, die Gruppennamen anstelle von Nutzerkennungen verwenden. Wenn Sie die RBAC-Richtlinien explizit mit Gruppen verknüpfen, können Sie Nutzerzugriffsberechtigungen vollständig mit Ihrem Identitätsanbieter verwalten. Dann muss der Cluster nicht jedes Mal aktualisiert werden, wenn sich die Nutzerberechtigungen ändern. Beachten Sie, dass Sie zur Konfiguration der Zugriffssteuerung auf der Grundlage der Mitgliedschaft in Sicherheitsgruppen mit OIDC sicherstellen müssen, dass GKE Identity Service so eingerichtet ist, dass der Erhalt von Gruppenmitgliedschaftsinformationen von Ihrem Identitätsanbieter unterstützt wird.
Wenn Sie beispielsweise bestimmten authentifizierten Nutzern Zugriff auf die Pods des Clusters gewähren möchten, erstellen Sie eine ClusterRole
, die Zugriff auf diese Ressourcen gewährt. Hier ein Beispiel:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: pod-reader rules: - apiGroups: [""] # The resource type for which access is granted resources: ["pods"] # The permissions granted by the ClusterRole verbs: ["get", "watch", "list"]
Anschließend erstellen Sie eine entsprechende ClusterRoleBinding
, um den jeweiligen Nutzern die Berechtigungen in der ClusterRole
zu gewähren; in diesem Fall Mitgliedern der Sicherheitsgruppe us-east1-cluster-admins
und dem Nutzer mit der ID u98523-4509823
:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: read-pods-admins subjects: # Grants anyone in the "us-east1-cluster-admins" group # read access to Pods in any namespace within this cluster. - kind: Group name: gid-us-east1-cluster-admins # Name is case-sensitive apiGroup: rbac.authorization.k8s.io # Grants this specific user read access to Pods in any # namespace within this cluster - kind: User name: uid-u98523-4509823 apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: pod-reader apiGroup: rbac.authorization.k8s.io
Im folgenden Beispiel gewährt ClusterRoleBinding
der entsprechenden Gruppe mit der ID 12345678-BBBb-cCCCC-0000-123456789012
Berechtigungen im ClusterRole
. Beachten Sie, dass diese Einstellung nur für Azure AD-Anbieter relevant und für Google Distributed Cloud Virtual for Bare Metal-Cluster verfügbar ist.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: pod-reader-binding subjects: # Retrieves group information for the group ID mentioned - kind: Group name: 12345678-BBBb-cCCCC-0000-123456789012 apiGroup: rbac.authorization.k8s.io
Weitere Informationen zur Verwendung von RBAC finden Sie unter Rollenbasierte Zugriffssteuerung konfigurieren und RBAC-Autorisierung verwenden.
RBAC-Rolle für den Zugriff auf die Google Cloud Console erstellen
Nutzer, die über OIDC-Anbietern authentifiziert wurden, können sich über die Google Cloud Console und die Befehlszeile bei Clustern anmelden.
Authentifizierte Nutzer, die in der Google Cloud Console auf die Ressourcen eines Clusters zugreifen möchten, benötigen dafür die entsprechenden Kubernetes-Berechtigungen. Wenn Sie diesen Nutzern keine umfassenderen Berechtigungen gewähren möchten, z. B. die eines Clusteradministrators, können Sie eine benutzerdefinierte RBAC-Rolle erstellen, die die Mindestberechtigungen zum Aufrufen der Knoten, nichtflüchtigen Volumes, Pods und Speicherklassen des Clusters enthält. Um diese Berechtigungen zu definieren, erstellen Sie im Cluster eine ClusterRole
-RBAC-Ressource, cloud-console-reader
.
cloud-console-reader
gewährt den Nutzern der Ressource die Berechtigungen get
, list
und watch
für die Knoten, nichtflüchtigen Volumes, Pods und Speicherklassen des Clusters, die das Aufrufen von Details zu diesen Ressourcen ermöglichen.
kubectl
Führen Sie den folgenden Befehl aus, um die ClusterRole
-cloud-console-reader
zu erstellen und auf den Cluster anzuwenden:
cat <<EOF > cloud-console-reader.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: cloud-console-reader
rules:
- apiGroups: [""]
resources: ["nodes", "persistentvolumes", "pods"]
verbs: ["get", "list", "watch"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
EOF
kubectl apply -f cloud-console-reader.yaml
Sie können diesen ClusterRole
dann Nutzern beim Einrichten Ihrer Berechtigungsrichtlinien zuweisen, wie im vorherigen Abschnitt beschrieben. Beachten Sie, dass Nutzer auch IAM-Berechtigungen benötigen, um Cluster in der Google Cloud Console aufzurufen.