Sie können Authentifizierungs- und Autorisierungsfehler in Google Distributed Cloud diagnostizieren und beheben, indem Sie Ihre gcloud anthos auth-Installation, Tokens, RBAC-Berechtigungen, Netzwerkverbindung und GKE Identity Service-Konfiguration prüfen. Mit diesen Prüfungen können Sie OpenID Connect (OIDC)- und Lightweight Directory Access Protocol (LDAP)-Fehler isolieren und den Nutzerzugriff auf Ihre Cluster wiederherstellen.
Bevor Sie die Fehlerbehebung für die Authentifizierung starten, prüfen Sie, ob Sie einen externen Identitätsanbieter konfiguriert haben, z. B. Google OIDC, Microsoft AD FS, Microsoft Entra ID, Okta oder einen LDAP-Anbieter. Informationen zum Prüfen detaillierter Anfragelogs und zum Testen der Erreichbarkeit des Anbieters finden Sie in der Anleitung zur Fehlerbehebung bei Identitätsanbietern für GKE Identity Service.
Allgemeine Fehlerbehebung
Die folgenden Tipps zur Fehlerbehebung können bei allgemeinen Problemen mit der Authentifizierung und Autorisierung mit Google Distributed Cloud helfen. Wenn diese Probleme nicht zutreffen oder Sie Probleme mit OIDC oder LDAP haben, fahren Sie mit dem Abschnitt zur Fehlerbehebung für GKE Identity Service fort.
gcloud anthos auth auf dem neuesten Stand halten
Sie können viele häufige Probleme vermeiden, indem Sie prüfen, ob die Komponenten Ihrer gcloud anthos auth-Installation auf dem neuesten Stand sind.
Es müssen zwei Dinge überprüft werden. Der Befehl gcloud anthos auth enthält Logik in der Kernkomponente der Google Cloud CLI und eine separat verpackte anthos-auth-Komponente.
So aktualisieren Sie die Google Cloud CLI:
gcloud components updateSo aktualisieren Sie die Komponente
anthos-auth:gcloud components install anthos-auth
Ungültige Anbieterkonfiguration
Wenn die Konfiguration Ihres Identitätsanbieters ungültig ist, wird nach dem Klicken auf ANMELDEN eine Fehlermeldung Ihres Identitätsanbieters angezeigt. Folgen Sie dann der anbieterspezifischen Anleitung, um den Anbieter oder Ihren Cluster ordnungsgemäß zu konfigurieren.
Ungültige Konfiguration
Wenn die Google Cloud Console die OIDC-Konfiguration aus Ihrem Cluster nicht lesen kann, ist der Button LOGIN deaktiviert. Informationen zur Fehlerbehebung bei der OIDC-Konfiguration Ihres Clusters finden Sie im folgenden Abschnitt Fehlerbehebung bei OIDC in diesem Dokument.
Ungültige Berechtigungen
Wenn Sie den Authentifizierungsvorgang abgeschlossen haben, die Details des Clusters aber noch nicht sichtbar sind, prüfen Sie, ob Sie dem mit OIDC verwendeten Konto die erforderlichen RBAC-Berechtigungen erteilt haben. Dieses Konto kann sich von dem Konto unterscheiden, mit dem Sie auf die Google Cloud Console zugreifen.
Aktualisierungstoken fehlt
Das folgende Problem tritt auf, wenn der Autorisierungsserver um eine Einwilligung bittet, aber der erforderliche Authentifizierungsparameter nicht bereitgestellt wurde.
Error: missing 'RefreshToken' field in 'OAuth2Token' in credentials struct
Fügen Sie in Ihrer ClientConfig-Ressource dem Feld authentication.oidc.extraParams den Wert prompt=consent hinzu, um dieses Problem zu beheben. Erstellen Sie dann die Clientauthentifizierungsdatei noch einmal.
Aktualisierungstoken abgelaufen
Das folgende Problem tritt auf, wenn das Aktualisierungstoken in der kubeconfig-Datei abgelaufen ist:
Unable to connect to the server: Get {DISCOVERY_ENDPOINT}: x509:
certificate signed by unknown authority
Führen Sie den Befehl gcloud anthos auth login noch einmal aus, um dieses Problem zu beheben.
Fehler bei gcloud anthos auth login mit proxyconnect tcp
Dieses Problem tritt auf, wenn die Konfigurationen der Umgebungsvariablen https_proxy oder HTTPS_PROXY fehlerhaft sind. Wenn in den Umgebungsvariablen https:// angegeben ist, können die GoLang-HTTP-Clientbibliotheken fehlschlagen, wenn der Proxy für die Verarbeitung von HTTPS-Verbindungen mit anderen Protokollen konfiguriert wird, wie etwa SOCK5.
Das folgende Beispiel einer Fehlermeldung kann möglicherweise zurückgegeben werden:
proxyconnect tcp: tls: first record does not look like a TLS handshake
Um dieses Problem zu beheben, ändern Sie die Umgebungsvariablen https_proxy und HTTPS_PROXY so, dass das https:// prefix weggelassen wird. Ändern Sie unter Windows die Systemumgebungsvariablen. Ändern Sie beispielsweise den Wert der Umgebungsvariablen https_proxy von https://webproxy.example.com:8000 in webproxy.example.com:8000.
Clusterzugriff schlägt fehl, wenn von gcloud anthos auth login generierte kubeconfig verwendet wird
Dieses Problem tritt auf, wenn der Kubernetes API-Server den Nutzer nicht autorisieren kann. Dies kann auftreten, wenn die entsprechenden RBACs fehlen oder falsch sind oder in der OIDC-Konfiguration für den Cluster ein Fehler auftritt. Der folgende Beispielfehler kann angezeigt werden:
Unauthorized
So beheben Sie das Problem:
Kopieren Sie in der von
gcloud anthos auth logingenerierten kubeconfig-Datei den Wert vonid-token.kind: Config ... users: - name: ... user: auth-provider: config: id-token: xxxxyyyyInstallieren Sie jwt-cli und führen Sie Folgendes aus:
jwt ID_TOKENOIDC-Konfiguration prüfen
Die Ressource
ClientConfigenthält die Feldergroupundusername. Diese Felder werden verwendet, um die Flags--oidc-group-claimund--oidc-username-claimauf dem Kubernetes API-Server festzulegen. Wenn dem API-Server das Token präsentiert wird, leitet er es an GKE Identity Service weiter, das den extrahiertengroup-claimundusername-claiman den API-Server zurückgibt. Der API-Server prüft anhand der Antwort, ob die entsprechende Gruppe oder der Nutzer über die erforderlichen Berechtigungen verfügt.Prüfen Sie, ob die für
groupunduserin der RessourceClientConfigfestgelegten Anforderungen im ID-Token vorhanden sind.Prüfen Sie die angewendeten RBACs.
Vergewissern Sie sich, dass ein RBAC mit den richtigen Berechtigungen entweder für den mit
username-claimangegebenen Nutzer oder für eine der mitgroup-claimaufgeführten Gruppen aus dem vorherigen Schritt vorhanden ist. Dem Namen des Nutzers bzw. der Gruppe in der RBAC muss das Präfixusernameprefixodergroupprefixvorangestellt werden, das in derClientConfig-Ressource angegeben ist.Wenn
usernameprefixleer ist undusernameeinen anderen Wert alsemailhat, wird das Präfix standardmäßig aufissuerurl#gesetzt. Setzen Sieusernameprefixauf-, um Nutzernamenpräfixe zu deaktivieren.Weitere Informationen zu Nutzer- und Gruppenpräfixen finden Sie unter Mit OIDC authentifizieren.
Ressource
ClientConfig:oidc: ... username: "unique_name" usernameprefix: "-" group: "group" groupprefix: "oidc:"ID-Token:
{ ... "email": "cluster-developer@example.com", "unique_name": "EXAMPLE\cluster-developer", "group": [ "Domain Users", "EXAMPLE\developers" ], ... }Die folgenden RBAC-Bindungen gewähren dieser Gruppe und diesem Nutzer die Clusterrolle
pod-reader. Beachten Sie den einzelnen Schrägstrich im Namensfeld statt des doppelten Schrägstrichs:ClusterRoleBinding gruppieren:
apiVersion: kind: ClusterRoleBinding metadata: name: example-binding subjects: - kind: Group name: "oidc:EXAMPLE\developers" apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: pod-reader apiGroup: rbac.authorization.k8s.ioNutzer-ClusterRoleBinding:
apiVersion: kind: ClusterRoleBinding metadata: name: example-binding subjects: - kind: User name: "EXAMPLE\cluster-developer" apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: pod-reader apiGroup: rbac.authorization.k8s.ioPrüfen Sie die Server-Logs des Kubernetes API-Servers.
Wenn das im Kubernetes API-Server konfigurierte OIDC-Plug-in nicht richtig gestartet wird, gibt der API-Server den Fehler
Unauthorizedzurück, wenn das ID-Token angezeigt wird. Prüfen Sie mit dem folgenden Befehl, ob Probleme mit dem OIDC-Plug-in auf dem API-Server aufgetreten sind:kubectl logs statefulset/kube-apiserver -n USER_CLUSTER_NAME \ --kubeconfig ADMIN_CLUSTER_KUBECONFIGErsetzen Sie dabei Folgendes:
USER_CLUSTER_NAME: Der Name des Nutzerclusters, für den Sie die Logs aufrufen möchten.ADMIN_CLUSTER_KUBECONFIG: Die kubeconfig-Datei des Administratorclusters.
Fehler beim Validieren der Clusterkonfiguration
Wenn Sie versuchen, einen bmctl-Befehl auszuführen, kann der folgende Fehler auftreten:
Error validating cluster config: 3 errors occurred:
* GKEConnect check failed: Get https://gkehub.googleapis.com/v1beta1/projects/project/locations/global/memberships/admin: oauth2: cannot fetch token: 400 Bad Request
Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}
* ClusterOperations check failed: Post https://cloudresourcemanager.googleapis.com/v1/projects/project:testIamPermissions?alt=json&prettyPrint=false: oauth2: cannot fetch token: 400 Bad Request
Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}
* GCR pull permission for bucket: artifacts.anthos-baremetal-release.appspot.com failed: Get https://storage.googleapis.com/storage/v1/b/artifacts.anthos-baremetal-release.appspot.com/iam/testPermissions?alt=json&permissions=storage.objects.get&permissions=storage.objects.list&prettyPrint=false: oauth2: cannot fetch token: 400 Bad Request
Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}
Dieser Fehler tritt wahrscheinlich auf, weil Sie einen abgelaufenen Dienstkontoschlüssel verwenden. Wenn Sie einen neuen Dienstkontoschlüssel generieren möchten, folgen Sie der Anleitung unter Dienstkontoschlüssel erstellen und löschen.
Fehlerbehebung bei OIDC
Wenn die OIDC-Authentifizierung für Google Distributed Cloud nicht funktioniert, wurde die OIDC-Spezifikation in der Ressource ClientConfig meist nicht ordnungsgemäß konfiguriert.
Die Ressource ClientConfig bietet eine Anleitung zum Prüfen der Logs und der OIDC-Spezifikation, um die Ursache eines OIDC-Problems zu ermitteln.
In der Anleitung zur Fehlerbehebung bei Identitätsanbietern für GKE Identity Service erfahren Sie, wie Sie Identitätslogs aktivieren und prüfen und die Verbindung testen. Nachdem Sie bestätigt haben, dass GKE Identity Service wie erwartet funktioniert, oder wenn Sie ein Problem feststellen, lesen Sie die folgenden Informationen zur OIDC-Fehlerbehebung.
OIDC-Spezifikation im Cluster prüfen
Die OIDC-Informationen für Ihren Cluster werden im ClientConfig-Objekt im Namespace kube-public angegeben.
Verwenden Sie
kubectl get, um die OIDC-Ressource für Ihren Nutzercluster zu drucken:kubectl --kubeconfig KUBECONFIG -n kube-public get \ clientconfig.authentication.gke.io default -o yamlErsetzen Sie
KUBECONFIGdurch den Pfad der kubeconfig-Datei des Nutzerclusters.Prüfen Sie die Feldwerte, um sicherzustellen, dass die Spezifikation für Ihren OIDC-Anbieter korrekt konfiguriert ist.
Wenn Sie ein Konfigurationsproblem in der Spezifikation feststellen, konfigurieren Sie OIDC neu.
Wenn Sie das Problem nicht selbst diagnostizieren und beheben können, wenden Sie sich an den Google Cloud -Support.
DerGoogle Cloud -Support benötigt die GKE Identity Service-Logs und die OIDC-Spezifikation, um OIDC-Probleme zu diagnostizieren und zu beheben.
Prüfen, ob die OIDC-Authentifizierung aktiviert ist
Bevor Sie die OIDC-Authentifizierung testen, prüfen Sie, ob die OIDC-Authentifizierung in Ihrem Cluster aktiviert ist.
Prüfen Sie die GKE Identity Service-Logs:
kubectl logs -l k8s-app=ais -n anthos-identity-serviceDie folgende Beispielausgabe zeigt, dass die OIDC-Authentifizierung korrekt aktiviert ist:
... I1011 22:14:21.684580 33 plugin_list.h:139] OIDC_AUTHENTICATION[0] started. ...Wenn die OIDC-Authentifizierung nicht korrekt aktiviert ist, werden Fehler wie im folgenden Beispiel angezeigt:
Failed to start the OIDC_AUTHENTICATION[0] authentication method with error:Sehen Sie sich die gemeldeten Fehler an und versuchen Sie, sie zu beheben.
OIDC-Authentifizierung testen
Wenn Sie die OIDC-Funktion verwenden möchten, verwenden Sie eine Workstation mit aktivierter Benutzeroberfläche und aktiviertem Browser. Sie können diese Schritte nicht über eine textbasierte SSH-Sitzung ausführen. So testen Sie, ob OIDC in Ihrem Cluster ordnungsgemäß funktioniert:
- Laden Sie die Google Cloud CLI herunter.
Führen Sie den folgenden
gcloud anthos create-login-config-Befehl aus, um die Anmeldekonfigurationsdatei zu generieren:gcloud anthos create-login-config \ --output user-login-config.yaml \ --kubeconfig KUBECONFIGErsetzen Sie
KUBECONFIGdurch den Pfad der kubeconfig-Datei des Nutzerclusters.Führen Sie den folgenden Befehl aus, um den Nutzer zu authentifizieren:
gcloud anthos auth login --cluster CLUSTER_NAME \ --login-config user-login-config.yaml \ --kubeconfig AUTH_KUBECONFIGErsetzen Sie dabei Folgendes:
- CLUSTER_NAME durch den Namen des Nutzerclusters, zu dem Sie eine Verbindung herstellen möchten.
- AUTH_KUBECONFIG durch die neue zu erstellende kubeconfig-Datei, die die Anmeldedaten für den Zugriff auf Ihren Cluster enthält. Weitere Informationen finden Sie unter Beim Cluster authentifizieren.
Auf Ihrer lokalen Workstation sollte im Standard-Webbrowser eine Seite zur Einwilligung in die Anmeldung geöffnet werden. Geben Sie in dieser Anmeldeaufforderung gültige Authentifizierungsinformationen für einen Nutzer an.
Nachdem Sie den vorherigen Anmeldeschritt erfolgreich abgeschlossen haben, wird in Ihrem aktuellen Verzeichnis eine kubeconfig-Datei generiert.
Wenn Sie die neue kubeconfig-Datei mit Ihren Anmeldedaten testen möchten, listen Sie die Pods in Ihrem Nutzercluster auf:
kubectl get pods --kubeconfig AUTH_KUBECONFIGErsetzen Sie AUTH_KUBECONFIG durch den Pfad zu Ihrer neuen kubeconfig-Datei, die im vorherigen Schritt generiert wurde.
Die folgende Beispielnachricht wird möglicherweise zurückgegeben, welche angibt, dass Sie sich erfolgreich authentifizieren können, dem Konto jedoch keine rollenbasierten Zugriffssteuerungen (Role-Based Access Controls, RBACs) zugewiesen sind:
Error from server (Forbidden): pods is forbidden: User "XXXX" cannot list resource "pods" in API group "" at the cluster scope
OIDC-Authentifizierungs-Logs prüfen
Wenn Sie sich nicht mit OIDC authentifizieren können, enthalten die GKE Identity Service-Logs die relevantesten und nützlichsten Informationen zur Fehlerbehebung.
Verwenden Sie
kubectl logs, um die Logs von GKE Identity Service auszugeben:kubectl --kubeconfig KUBECONFIG \ -n anthos-identity-service logs \ deployment/ais --all-containers=trueErsetzen Sie
KUBECONFIGdurch den Pfad der kubeconfig-Datei des Nutzerclusters.Prüfen Sie die Logs auf Fehler, die Ihnen bei der Diagnose von OIDC-Problemen helfen können.
Die Ressource
ClientConfigenthält etwa möglicherweise im FeldissuerURLeinen Tippfehler, z. B.htps://accounts.google.com(mit einem fehlendentinhttps). Die GKE Identity Service-Logs enthalten dann einen Eintrag wie diesen:OIDC (htps://accounts.google.com) - Unable to fetch JWKs needed to validate OIDC ID token.Wenn Sie in den Logs ein Konfigurationsproblem feststellen, konfigurieren Sie OIDC neu und beheben Sie die Konfigurationsprobleme.
Wenn Sie das Problem nicht selbst diagnostizieren und beheben können, wenden Sie sich an den Google Cloud -Support.
DerGoogle Cloud -Support benötigt die GKE Identity Service-Logs und die OIDC-Spezifikation, um OIDC-Probleme zu diagnostizieren und zu beheben.
Häufige OIDC-Probleme
Wenn Sie Probleme mit der OIDC-Authentifizierung haben, sehen Sie sich die folgenden häufigen Probleme an. Folgen Sie der Anleitung, um das Problem zu beheben.
Für den Dienst „ais“ sind keine Endpunkte verfügbar
Wenn Sie die ClientConfig-Ressource speichern, wird die folgende Fehlermeldung zurückgegeben:
Error from server (InternalError): Internal error occurred: failed calling webhook "clientconfigs.validation.com":
failed to call webhook: Post "https://ais.anthos-identity-service.svc:15000/admission?timeout=10s":
no endpoints available for service "ais"
Dieser Fehler wird durch den fehlerhaften Endpunkt von GKE Identity Service verursacht. Der GKE Identity Service-Pod kann den Validierungs-Webhook nicht bereitstellen.
Führen Sie den folgenden Befehl aus, um zu prüfen, ob der Pod des GKE Identity Service fehlerhaft ist:
kubectl get pods -n anthos-identity-service \ --kubeconfig KUBECONFIGErsetzen Sie
KUBECONFIGdurch den Pfad der kubeconfig-Datei des Nutzerclusters.Die folgende Beispielausgabe bedeutet, dass Ihr GKE Identity Service-Pod abstürzt:
NAME READY STATUS RESTARTS AGE ais-5949d879cd-flv9w 0/1 ImagePullBackOff 0 7m14sSehen Sie sich die Pod-Ereignisse an, um zu verstehen, warum der Pod ein Problem hat:
kubectl describe pod -l k8s-app=ais \ -n anthos-identity-service \ --kubeconfig KUBECONFIGErsetzen Sie
KUBECONFIGdurch den Pfad der kubeconfig-Datei des Nutzerclusters.In der folgenden Beispielausgabe wird ein Berechtigungsfehler beim Abrufen des Images gemeldet:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 10m default-scheduler Successfully assigned anthos-identity-service/ais-5949d879cd-flv9w to pool-1-76bbbb8798-dknz5 Normal Pulling 8m23s (x4 over 10m) kubelet Pulling image "gcr.io/gke-on-prem-staging/ais:hybrid_identity_charon_20220808_2319_RC00" Warning Failed 8m21s (x4 over 10m) kubelet Failed to pull image "gcr.io/gke-on-prem-staging/ais:hybrid_identity_charon_20220808_2319_RC00": rpc error: code = Unknown desc = failed to pull and unpack image "gcr.io/gke-on-prem-staging/ais:hybrid_identity_charon_20220808_2319_RC00": failed to resolve reference "gcr.io/gke-on-prem-staging/ais:hybrid_identity_charon_20220808_2319_RC00": pulling from host gcr.io failed with status code [manifests hybrid_identity_charon_20220808_2319_RC00]: 401 Unauthorized Warning Failed 8m21s (x4 over 10m) kubelet Error: ErrImagePull Warning Failed 8m10s (x6 over 9m59s) kubelet Error: ImagePullBackOff Normal BackOff 4m49s (x21 over 9m59s) kubelet Back-off pulling image "gcr.io/gke-on-prem-staging/ais:hybrid_identity_charon_20220808_2319_RC00"Wenn die Pod-Ereignisse ein Problem melden, fahren Sie mit der Fehlerbehebung in den betroffenen Bereichen fort. Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Google Cloud -Support.
Fehler beim Lesen der Antwortbytes vom Server
In den GKE Identity Service-Logs werden möglicherweise die folgenden Fehler angezeigt:
E0516 07:24:38.314681 65 oidc_client.cc:207] Failed fetching the Discovery URI
"https://oidc.idp.cloud.example.com/auth/idp/k8sIdp/.well-known/openid-configuration" with error:
Failed reading response bytes from server.
E0516 08:24:38.446504 65 oidc_client.cc:223] Failed to fetch the JWKs URI
"https://oidc.idp.cloud.example.com/auth/idp/k8sIdp/certs" with error:
Failed reading response bytes from server.
Diese Netzwerkfehler können in den Logs auf eine der folgenden Arten angezeigt werden:
Treten nur selten im Log auf:Diese seltenen Fehler sind wahrscheinlich nicht das Hauptproblem. Es könnte sich um vorübergehende Netzwerkprobleme handeln.
Das OIDC-Plug-in für GKE Identity Service hat einen Daemon-Prozess, der die OIDC-Discovery-URL alle 5 Sekunden synchronisiert. Wenn die Netzwerkverbindung instabil ist, schlägt diese Anfrage für ausgehenden Traffic möglicherweise fehl. Gelegentliche Fehler wirken sich nicht auf die OIDC-Authentifizierung aus. Die vorhandenen im Cache gespeicherten Daten können wiederverwendet werden.
Wenn Sie weitere Fehler in den Logs finden, fahren Sie mit den zusätzlichen Schritten zur Fehlerbehebung fort.
Sie werden kontinuierlich im Log angezeigt oder GKE Identity Service erreicht den bekannten Endpunkt nie erfolgreich: Diese konstanten Probleme weisen auf ein Konnektivitätsproblem zwischen GKE Identity Service und Ihrem OIDC-Identitätsanbieter hin.
Die folgenden Schritte zur Fehlerbehebung können Ihnen dabei helfen, diese Verbindungsprobleme zu diagnostizieren:
- Achten Sie darauf, dass die ausgehenden Anfragen von GKE Identity Service nicht von einer Firewall blockiert werden.
- Prüfen Sie, ob der Server des Identitätsanbieters ordnungsgemäß ausgeführt wird.
- Prüfen Sie, ob die OIDC-Aussteller-URL in der Ressource
ClientConfigkorrekt konfiguriert ist. - Wenn Sie das Proxy-Feld in der
ClientConfig-Ressource aktiviert haben, prüfen Sie den Status oder das Log Ihres ausgehenden Proxyservers. - Testen Sie die Verbindung zwischen Ihrem GKE Identity Service-Pod und dem OIDC-Identitätsanbieterserver.
Sie müssen auf dem Server angemeldet sein (nicht autorisiert)
Wenn Sie versuchen, sich mit der OIDC-Authentifizierung anzumelden, wird möglicherweise die folgende Fehlermeldung angezeigt:
You must be logged in to the server (Unauthorized)
Dieser Fehler ist ein allgemeines Kubernetes-Authentifizierungsproblem, das keine zusätzlichen Informationen liefert. Dieser Fehler weist jedoch auf ein Konfigurationsproblem hin.
Lesen Sie die vorherigen Abschnitte OIDC-Spezifikation im Cluster prüfen und ClientConfig-Ressource konfigurieren, um das Problem zu ermitteln.
Webhook-Authentifizierungsanfrage konnte nicht gestellt werden
In den GKE Identity Service-Logs wird möglicherweise der folgende Fehler angezeigt:
E0810 09:58:02.820573 1 webhook.go:127] Failed to make webhook authenticator request:
error trying to reach service: net/http: TLS handshake timeout
Dieser Fehler gibt an, dass der API-Server keine Verbindung zum GKE Identity Service-Pod herstellen kann.
Führen Sie den folgenden
curl-Befehl aus, um zu prüfen, ob der GKE Identity Service-Endpunkt von außen erreichbar ist:curl -k -s -o /dev/null -w "%{http_code}" -X POST \ https://APISERVER_HOST/api/v1/namespaces/anthos-identity-service/services/https:ais:https/proxy/authenticate -d '{}'Ersetzen Sie
APISERVER_HOSTdurch die Adresse Ihres API-Servers.Die erwartete Antwort ist ein
HTTP 400-Statuscode. Wenn es bei der Anfrage zu einer Zeitüberschreitung kommt, starten Sie den GKE Identity Service-Pod neu. Wenn der Fehler weiterhin auftritt, liegt dies daran, dass der HTTP-Server von GKE Identity Service nicht starten kann. Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Google Cloud -Support.
Anmelde-URL nicht gefunden
Das folgende Problem tritt auf, wenn die Google Cloud Console den Identitätsanbieter nicht erreichen kann. Ein Anmeldeversuch wird auf eine Seite mit einem URL not found-Fehler weitergeleitet.
Versuchen Sie Folgendes, um dieses Problem zu beheben: Versuchen Sie nach jedem Schritt noch einmal, sich anzumelden:
Wenn der Identitätsanbieter nicht über das öffentliche Internet erreichbar ist, aktivieren Sie den OIDC-HTTP-Proxy, um sich über die Google Cloud Console anzumelden. Bearbeiten Sie die benutzerdefinierte Ressource
ClientConfigund legen SieuseHTTPProxyauftruefest:kubectl edit clientconfig default -n kube-public --kubeconfig USER_CLUSTER_KUBECONFIGErsetzen Sie
USER_CLUSTER_KUBECONFIGdurch den Pfad der kubeconfig-Datei des Nutzerclusters.Wenn der HTTP-Proxy aktiviert ist und es weiterhin zu diesem Fehler kommt, ist möglicherweise ein Problem beim Start des Proxys aufgetreten. Sehen Sie sich die Logs des Proxys an:
kubectl logs deployment/clientconfig-operator -n kube-system --kubeconfig USER_CLUSTER_KUBECONFIGErsetzen Sie
USER_CLUSTER_KUBECONFIGdurch den Pfad der kubeconfig-Datei des Nutzerclusters.Selbst wenn Ihr Identitätsanbieter eine bekannte Zertifizierungsstelle hat, müssen Sie für den erfolgreichen Start des HTTP-Proxys einen Wert für
oidc.caPathin Ihrer benutzerdefiniertenClientConfig-Ressource angeben.Wenn der Autorisierungsserver um Ihre Einwilligung bittet undSie die Parameter
extraparamprompt=consentnicht hinzugefügt haben, bearbeiten Sie die benutzerdefinierte RessourceClientConfigund fügen Sieprompt=consentzu den Parameternextraparamshinzu:kubectl edit clientconfig default -n kube-public --kubeconfig USER_CLUSTER_KUBECONFIGErsetzen Sie
USER_CLUSTER_KUBECONFIGdurch den Pfad der kubeconfig-Datei des Nutzerclusters.Wenn Konfigurationseinstellungen für den Speicherdienst geändert werden, müssen Sie sich möglicherweise explizit von vorhandenen Sitzungen abmelden. Rufen Sie in der Google Cloud Console die Seite mit den Clusterdetails auf und wählen Sie Abmelden aus.
Fehlerbehebung bei LDAP
Wenn Sie Probleme mit der LDAP-Authentifizierung haben, prüfen Sie, ob Sie Ihre Umgebung gemäß einem der entsprechenden Konfigurationsdokumente eingerichtet haben:
Außerdem müssen Sie das LDAP-Dienstkonto-Secret füllen und die Ressource ClientConfig so konfigurieren, dass die LDAP-Authentifizierung aktiviert wird.
In der Anleitung zur Fehlerbehebung bei Identitätsanbietern für GKE Identity Service erfahren Sie, wie Sie Identitätslogs aktivieren und prüfen und die Verbindung testen. Nachdem Sie bestätigt haben, dass GKE Identity Service wie erwartet funktioniert, oder ein Problem identifiziert haben, lesen Sie die folgenden Informationen zur Fehlerbehebung bei LDAP.
Prüfen, ob die LDAP-Authentifizierung aktiviert ist
Bevor Sie die LDAP-Authentifizierung testen, prüfen Sie, ob die LDAP-Authentifizierung in Ihrem Cluster aktiviert ist.
Prüfen Sie die GKE Identity Service-Logs:
kubectl logs -l k8s-app=ais -n anthos-identity-serviceDie folgende Beispielausgabe zeigt, dass die LDAP-Authentifizierung korrekt aktiviert ist:
... I1012 00:14:11.282107 34 plugin_list.h:139] LDAP[0] started. ...Wenn die LDAP-Authentifizierung nicht richtig aktiviert ist, werden Fehler wie im folgenden Beispiel angezeigt:
Failed to start the LDAP_AUTHENTICATION[0] authentication method with error:Sehen Sie sich die gemeldeten Fehler an und versuchen Sie, sie zu beheben.
LDAP-Authentifizierung testen
Wenn Sie die LDAP-Funktion verwenden möchten, verwenden Sie eine Workstation mit aktivierter Benutzeroberfläche und aktiviertem Browser. Sie können diese Schritte nicht über eine textbasierte SSH-Sitzung ausführen. Führen Sie die folgenden Schritte aus, um zu testen, ob die LDAP-Authentifizierung in Ihrem Cluster ordnungsgemäß funktioniert:
- Laden Sie die Google Cloud CLI herunter.
Führen Sie den folgenden gcloud anthos create-login-config-Befehl aus, um die Anmeldekonfigurationsdatei zu generieren:
gcloud anthos create-login-config \ --output user-login-config.yaml \ --kubeconfig KUBECONFIGErsetzen Sie
KUBECONFIGdurch den Pfad der kubeconfig-Datei des Nutzerclusters.Führen Sie den folgenden Befehl aus, um den Nutzer zu authentifizieren:
gcloud anthos auth login --cluster CLUSTER_NAME \ --login-config user-login-config.yaml \ --kubeconfig AUTH_KUBECONFIGErsetzen Sie dabei Folgendes:
CLUSTER_NAMEdurch den Namen des Nutzerclusters, zu dem Sie eine Verbindung herstellen möchten.AUTH_KUBECONFIGdurch die neue zu erstellende kubeconfig-Datei, die die Anmeldedaten für den Zugriff auf Ihren Cluster enthält. Weitere Informationen finden Sie unter Beim Cluster authentifizieren.
Auf Ihrer lokalen Workstation sollte im Standard-Webbrowser eine Seite zur Einwilligung in die Anmeldung geöffnet werden. Geben Sie in dieser Anmeldeaufforderung gültige Authentifizierungsinformationen für einen Nutzer an.
Nachdem Sie den vorherigen Anmeldeschritt erfolgreich abgeschlossen haben, wird in Ihrem aktuellen Verzeichnis eine kubeconfig-Datei generiert.
Wenn Sie die neue kubeconfig-Datei mit Ihren Anmeldedaten testen möchten, listen Sie die Pods in Ihrem Nutzercluster auf:
kubectl get pods --kubeconfig AUTH_KUBECONFIGErsetzen Sie AUTH_KUBECONFIG durch den Pfad zur kubeconfig-Datei des Nutzerclusters, die im vorherigen Schritt generiert wurde.
Error from server (Forbidden): pods is forbidden: User "XXXX" cannot list resource "pods" in API group "" at the cluster scope
Häufige LDAP-Probleme
Wenn Sie Probleme mit der LDAP-Authentifizierung haben, sehen Sie sich die folgenden häufigen Probleme an. Folgen Sie der Anleitung, um das Problem zu beheben.
Nutzer können sich nicht authentifizieren, wenn ihr CN Kommas enthält
Wenn Sie LDAP verwenden, können Probleme auftreten, bei denen sich Nutzer nicht authentifizieren können, weil ihr CN ein Komma enthält, z. B. CN="a,b". Wenn Sie das Debugging-Log für GKE Identity Service aktivieren, wird die folgende Fehlermeldung angezeigt:
I0207 20:41:32.670377 30 authentication_plugin.cc:977] Unable to query groups from the LDAP server directory.example.com:636, using the LDAP service account
'CN=svc.anthos_dev,OU=ServiceAccount,DC=directory,DC=example,DC=com'.
Encountered the following error: Empty entries.
Dieses Problem tritt auf, weil das LDAP-Plug-in von GKE Identity Service das Komma doppelt maskiert. Dieses Problem tritt nur in Google Distributed Cloud-Versionen 1.13 und niedriger auf.
Führen Sie einen der folgenden Schritte aus, um das Problem zu beheben:
- Aktualisieren Sie Ihren Cluster auf Google Distributed Cloud 1.13 oder höher.
- Wählen Sie anstelle des CN ein anderes
identifierAttributeaus, z. B.sAMAccountName. - Entfernen Sie die Kommas aus dem CN in Ihrem LDAP-Verzeichnis.
Authentifizierungsfehler bei Google Cloud CLI 1.4.2
In der Google Cloud CLI anthos-auth 1.4.2 wird möglicherweise die folgende Fehlermeldung angezeigt, wenn Sie den Befehl gcloud anthos auth login ausführen:
Error: LDAP login failed: could not obtain an STS token: Post "https://127.0.0.1:15001/sts/v1beta/token":
failed to obtain an endpoint for deployment anthos-identity-service/ais: Unauthorized
ERROR: Configuring Anthos authentication failed
Im GKE Identity Service-Log wird außerdem der folgende Fehler angezeigt:
I0728 12:43:01.980012 26 authentication_plugin.cc:79] Stopping STS authentication, unable to decrypt the STS token:
Decryption failed, no keys in the current key set could decrypt the payload.
Führen Sie folgende Schritte aus, um diesen Fehler zu beheben:
Prüfen Sie, ob Sie die Google Cloud CLI
anthos-authVersion 1.4.2 verwenden:gcloud anthos auth versionDie folgende Beispielausgabe zeigt, dass die Version 1.4.2 ist:
Current Version: v1.4.2Wenn Sie die Google Cloud CLI
anthos-authVersion 1.4.2 verwenden, führen Sie ein Upgrade auf Version 1.4.3 oder höher durch.
Nächste Schritte
Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care. Weitere Informationen zu Supportressourcen finden Sie unter Support erhalten. Dazu gehören:
- Anforderungen für das Erstellen einer Supportanfrage.
- Tools zur Fehlerbehebung, z. B. Umgebungskonfiguration, Logs und Messwerte.
- Unterstützte Komponenten.