In diesem Dokument wird beschrieben, wie Sie Probleme bei der Authentifizierung in Google Distributed Cloud beheben können. Es werden allgemeine Informationen und Anleitungen zur Fehlerbehebung sowie spezifische Informationen für OpenID Connect (OIDC) und Lightweight Directory Access Protocol (LDAP) bereitgestellt.
Die OIDC- und LDAP-Authentifizierung verwenden den GKE Identity Service. Bevor Sie GKE Identity Service mit Google Distributed Cloud verwenden können, müssen Sie einen Identitätsanbieter konfigurieren. Wenn Sie noch keinen Identitätsanbieter für GKE Identity Service konfiguriert haben, folgen Sie der Anleitung für einen der folgenden gängigen Anbieter:
Informationen zum Aktivieren und Prüfen von Identitätslogs und zum Testen der Verbindung finden Sie im Leitfaden zur Fehlerbehebung bei GKE Identity Service-Identitätsanbietern.
Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care.Allgemeine Fehlerbehebung
Die folgenden Tipps zur Fehlerbehebung können bei allgemeinen Authentifizierungs- und Autorisierungsproblemen bei Google Distributed Cloud helfen. Wenn diese Probleme nicht zutreffen oder Probleme mit OIDC oder LDAP auftreten, 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.
Zwei Komponenten müssen verifiziert werden. Der Befehl gcloud anthos auth
enthält Logik in der Kernkomponente des Google Cloud CLI und eine separate gepackte anthos-auth
-Komponente.
So aktualisieren Sie Google Cloud CLI:
gcloud components update
So 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 LOGIN 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 in der Google Cloud Console die OIDC-Konfiguration aus Ihrem Cluster nicht gelesen werden kann, ist die Schaltfläche LOGIN deaktiviert. Informationen zur Fehlerbehebung bei der Cluster-OIDC-Konfiguration 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 der Ressource ClientConfig
zum Feld authentication.oidc.extraParams
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 Datei „kubeconfig“ 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 Konfiguration der Umgebungsvariablen https_proxy
oder HTTPS_PROXY
fehlerhaft ist. 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.
Die folgende Beispielfehlermeldung kann 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. Wenn Sie Windows verwenden, ändern Sie 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 könnte angezeigt werden:
Unauthorized
So beheben Sie das Problem:
Kopieren Sie in der von
gcloud anthos auth login
generierten kubeconfig-Datei den Wert vonid-token
.kind: Config ... users: - name: ... user: auth-provider: config: id-token: xxxxyyyy
Installieren Sie jwt-cli und führen Sie Folgendes aus:
jwt ID_TOKEN
OIDC-Konfiguration prüfen
Die Ressource
ClientConfig
enthält die Feldergroup
undusername
. Mit diesen Feldern werden die Flags--oidc-group-claim
und--oidc-username-claim
auf dem Kubernetes API-Server festgelegt. Wenn dem API-Server das Token präsentiert wird, leitet er es an GKE Identity Service weiter, das den extrahiertengroup-claim
undusername-claim
an 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
group
unduser
in der RessourceClientConfig
festgelegten 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-claim
angegebenen Nutzer oder für eine der mitgroup-claim
aufgeführten Gruppen aus dem vorherigen Schritt vorhanden ist. Dem Namen des Nutzers bzw. der Gruppe in RBAC muss das Präfixusernameprefix
odergroupprefix
vorangestellt werden, das in derClientConfig
-Ressource angegeben ist.Wenn
usernameprefix
leer ist undusername
ein anderer Wert alsemail
ist, wird standardmäßig das Präfixissuerurl#
verwendet. Setzen Sieusernameprefix
auf-
, 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.io
Nutzer-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.io
Prüfen Sie die Serverlogs der Kubernetes API.
Wenn das auf dem Kubernetes API-Server konfigurierte OIDC-Plug-in nicht korrekt gestartet wird, gibt der API-Server bei Erhalt des ID-Tokens den Fehler
Unauthorized
zurück. 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_KUBECONFIG
Ersetzen Sie dabei Folgendes:
USER_CLUSTER_NAME
: Der Name Ihres Nutzerclusters, für den Sie Logs aufrufen möchten.ADMIN_CLUSTER_KUBECONFIG
: Die kubeconfig-Datei des Administratorclusters.
gkectl create-login-config ruft clientconfig nicht ab
Dieses Problem tritt auf, wenn die an gkectl create-login-config
übergebene Datei „kubeconfig“ für einen Nutzercluster nicht übergeben wird oder die Ressource ClientConfig
bei der Clustererstellung nicht gefunden wurde.
Error getting clientconfig using KUBECONFIG
Prüfen Sie zur Behebung dieses Problems, ob Sie die richtige kubeconfig-Datei für Ihren Nutzercluster haben. Prüfen Sie dann, ob sich die Ressource ClientConfig
im Cluster befindet:
kubectl get clientconfig default -n kube-public \
--kubeconfig USER_CLUSTER_KUBECONFIG
Ersetzen Sie USER_CLUSTER_KUBECONFIG
durch den Pfad der kubeconfig-Datei des Nutzerclusters.
gkectl create-login-config schlägt aufgrund eines doppelten Clusternamens fehl
Dieses Problem tritt auf, wenn Sie versuchen, Anmeldekonfigurationsdaten zu schreiben, die einen Clusternamen enthalten, der bereits in der Zieldatei vorhanden ist. Jede Anmeldekonfigurationsdatei muss eindeutige Clusternamen enthalten.
error merging with file MERGE_FILE because MERGE_FILE contains a cluster with
the same name as the one read from KUBECONFIG. Please write to a new
output file
Verwenden Sie zum Beheben dieses Problems das Flag --output
, um eine neue Zieldatei anzugeben.
Wenn Sie --output
nicht angeben, werden die Konfigurationsdaten für die Anmeldung in eine Datei mit dem Namen kubectl-anthos-config.yaml
im aktuellen Verzeichnis geschrieben.
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.
Informationen zum Aktivieren und Prüfen von Identitätslogs und zum Testen der Verbindung finden Sie im Leitfaden zur Fehlerbehebung bei GKE Identity Service-Identitätsanbietern. Nachdem Sie bestätigt haben, dass GKE Identity Service wie erwartet funktioniert, oder Sie ein Problem festgestellt haben, 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 yaml
Ersetzen Sie
KUBECONFIG
durch 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 lösen können, wenden Sie sich an den Google Cloud-Support.
Der Google Cloud-Support benötigt die GKE Identity Service-Logs und die OIDC-Spezifikation, um OIDC-Probleme zu diagnostizieren und zu beheben.
Aktivierung der OIDC-Authentifizierung prüfen
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-service
Die 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 das OIDC-Feature verwenden möchten, verwenden Sie eine Workstation mit aktivierter Benutzeroberfläche und 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 OIDC in Ihrem Cluster ordnungsgemäß funktioniert:
- Laden Sie die Google Cloud CLI herunter.
Mit dem folgenden
gcloud anthos create-login-config
-Befehl generieren Sie die Konfigurationsdatei für die Anmeldung:gcloud anthos create-login-config \ --output user-login-config.yaml \ --kubeconfig KUBECONFIG
Ersetzen Sie
KUBECONFIG
durch 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_KUBECONFIG
Ersetzen Sie dabei Folgendes:
- CLUSTER_NAME durch den Namen des Nutzerclusters, zu dem eine Verbindung hergestellt werden soll.
- 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.
Sie sollten im Standardwebbrowser Ihrer lokalen Workstation eine Einwilligungsseite für die Anmeldung erhalten. 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.
Zum Testen der neuen kubeconfig-Datei mit Ihren Anmeldedaten listen Sie die Pods in Ihrem Nutzercluster auf:
kubectl get pods --kubeconfig AUTH_KUBECONFIG
Ersetzen Sie AUTH_KUBECONFIG durch den Pfad zu der neuen kubeconfig-Datei, die im vorherigen Schritt generiert wurde.
Möglicherweise wird die folgende Beispielnachricht zurückgegeben, die zeigt, dass Sie sich erfolgreich authentifizieren können. Dem Konto sind jedoch keine rollenbasierten Zugriffssteuerungen (RBACs) zugewiesen:
Error from server (Forbidden): pods is forbidden: User "XXXX" cannot list resource "pods" in API group "" at the cluster scope
OIDC-Authentifizierungslogs prüfen
Wenn Sie sich nicht mit OIDC authentifizieren können, bieten die GKE Identity Service-Logs die relevantesten und nützlichsten Informationen zum Beheben des Problems.
Verwenden Sie
kubectl logs
, um die Logs von GKE Identity Service zu drucken:kubectl --kubeconfig KUBECONFIG \ -n anthos-identity-service logs \ deployment/ais --all-containers=true
Ersetzen Sie
KUBECONFIG
durch 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
ClientConfig
kann beispielsweise einen Tippfehler im FeldissuerURL
aufweisen, z. B.htps://accounts.google.com
(ein fehlendest
inhttps
). Die GKE Identity Service-Logs enthalten dann einen Eintrag wie das folgende: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 lösen können, wenden Sie sich an den Google Cloud-Support. Der Google 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, prüfen Sie die folgenden häufigen Probleme. Folgen Sie dann der Anleitung, um das Problem zu beheben.
Keine Endpunkte für den Dienst „ais“ verfügbar
Wenn Sie die Ressource ClientConfig
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 einen fehlerhaften GKE Identity Service-Endpunkt 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 GKE Identity Service-Pod fehlerhaft ist:
kubectl get pods -n anthos-identity-service \ --kubeconfig KUBECONFIG
Ersetzen Sie
KUBECONFIG
durch 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 7m14s
Sehen 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 KUBECONFIG
Ersetzen Sie
KUBECONFIG
durch den Pfad der kubeconfig-Datei des Nutzerclusters.Die folgende Beispielausgabe meldet einen Berechtigungsfehler beim Abrufen des Images:
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. Falls Sie zusätzliche Unterstützung benötigen, wenden Sie sich einfach an den Google Cloud-Support.
Fehler beim Lesen der Antwortbyte 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 auf eine der folgenden Arten in den Logs angezeigt werden:
Selten im Log angezeigt: Ersatzfehler sind wahrscheinlich nicht das Hauptproblem und können zeitweise Netzwerkprobleme sein.
Das OIDC-Plug-in von GKE Identity Service hat einen Daemon-Prozess, um die OIDC-Erkennungs-URL regelmäßig alle fünf Sekunden zu synchronisieren. Wenn die Netzwerkverbindung instabil ist, kann diese ausgehende Anfrage fehlschlagen. Gelegentliche Fehler wirken sich nicht auf die OIDC-Authentifizierung aus. Die im Cache gespeicherten Daten können wiederverwendet werden.
Wenn in den Logs freie Fehler auftreten, fahren Sie mit weiteren 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.
Mit den folgenden Schritten zur Fehlerbehebung können Sie diese Verbindungsprobleme diagnostizieren:
- Achten Sie darauf, dass keine Firewall die ausgehenden Anfragen von GKE Identity Service blockiert.
- Prüfen Sie, ob der Server des Identitätsanbieters ordnungsgemäß ausgeführt wird.
- Prüfen Sie, ob die OIDC-Aussteller-URL in der Ressource
ClientConfig
korrekt konfiguriert ist. - Wenn Sie das Proxyfeld in der Ressource
ClientConfig
aktiviert haben, prüfen Sie den Status oder das Log des Proxyservers für ausgehenden Traffic. - Testen Sie die Verbindung zwischen dem 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, erhalten Sie möglicherweise die folgende Fehlermeldung:
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 die Verbindung mit dem GKE Identity Service-Pod nicht herstellen kann.
Führen Sie den folgenden
curl
-Befehl aus, um zu prüfen, ob der GKE Identity Service-Endpunkt von außerhalb 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_HOST
durch die Adresse Ihres API-Servers.Die erwartete Antwort ist der Statuscode
HTTP 400
. Wenn die Anfrage das Zeitlimit überschritten hat, starten Sie den GKE Identity Service-Pod neu. Wenn der Fehler weiterhin auftritt, kann der HTTP-Server von GKE Identity Service nicht gestartet werden. Weitere Unterstützung erhalten Sie vom 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 dem Fehler URL not found
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
ClientConfig
und legen SieuseHTTPProxy
auftrue
fest:kubectl edit clientconfig default -n kube-public --kubeconfig USER_CLUSTER_KUBECONFIG
Ersetzen Sie
USER_CLUSTER_KUBECONFIG
durch den Pfad der kubeconfig-Datei des Nutzerclusters.Wenn der HTTP-Proxy aktiviert ist und dieser Fehler weiterhin auftritt, liegt möglicherweise ein Problem beim Start des Proxys vor. Rufen Sie die Logs des Proxys auf.
kubectl logs deployment/clientconfig-operator -n kube-system --kubeconfig USER_CLUSTER_KUBECONFIG
Ersetzen Sie
USER_CLUSTER_KUBECONFIG
durch den Pfad der kubeconfig-Datei des Nutzerclusters.Selbst wenn Ihr Identitätsanbieter eine bekannte Zertifizierungsstelle hat, müssen Sie einen Wert für
oidc.caPath
in Ihrer benutzerdefiniertenClientConfig
-Ressource angeben, damit der HTTP-Proxy erfolgreich gestartet werden kann.Wenn der Autorisierungsserver um Ihre Einwilligung bittet undSie die Parameter
extraparam
prompt=consent
nicht hinzugefügt haben, bearbeiten Sie die benutzerdefinierte RessourceClientConfig
und fügen Sieprompt=consent
zu den Parameternextraparams
hinzu:kubectl edit clientconfig default -n kube-public --kubeconfig USER_CLUSTER_KUBECONFIG
Ersetzen Sie
USER_CLUSTER_KUBECONFIG
durch den Pfad der kubeconfig-Datei des Nutzerclusters.Wenn die Konfigurationseinstellungen für den Speicherdienst geändert werden, müssen Sie sich möglicherweise von vorhandenen Sitzungen explizit 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 eingerichtet haben. Folgen Sie dazu einem der entsprechenden Konfigurationsdokumente:
Außerdem müssen Sie das LDAP-Dienstkonto-Secret ausfüllen und die Ressource ClientConfig
so konfiguriert haben, dass die LDAP-Authentifizierung aktiviert wird.
Informationen zum Aktivieren und Prüfen von Identitätslogs und zum Testen der Verbindung finden Sie im Leitfaden zur Fehlerbehebung bei GKE Identity Service-Identitätsanbietern. Nachdem Sie bestätigt haben, dass GKE Identity Service wie erwartet funktioniert, oder Sie ein Problem festgestellt haben, lesen Sie die folgenden Informationen zur LDAP-Fehlerbehebung.
Aktivierung der LDAP-Authentifizierung prüfen
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-service
Die 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 korrekt aktiviert ist, werden Fehler wie in diesem 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 das LDAP-Feature verwenden möchten, verwenden Sie eine Workstation, auf der die Benutzeroberfläche und der Browser aktiviert sind. 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.
Um die Anmeldekonfigurationsdatei zu generieren, führen Sie den folgenden Befehl gcloud anthos create-login-config aus:
gcloud anthos create-login-config \ --output user-login-config.yaml \ --kubeconfig KUBECONFIG
Ersetzen Sie
KUBECONFIG
durch 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_KUBECONFIG
Ersetzen Sie dabei Folgendes:
CLUSTER_NAME
durch den Namen des Nutzerclusters, zu dem eine Verbindung hergestellt werden soll.AUTH_KUBECONFIG
durch die neue kubeconfig-Datei, die erstellt werden soll, die die Anmeldedaten für den Zugriff auf Ihren Cluster enthält. Weitere Informationen finden Sie unter Beim Cluster authentifizieren.
Sie sollten im Standardwebbrowser Ihrer lokalen Workstation eine Einwilligungsseite für die Anmeldung erhalten. 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.
Zum Testen der neuen kubeconfig-Datei mit Ihren Anmeldedaten listen Sie die Pods in Ihrem Nutzercluster auf:
kubectl get pods --kubeconfig AUTH_KUBECONFIG
Ersetzen Sie AUTH_KUBECONFIG durch den Pfad der Nutzercluster-kubeconfig-Datei, 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
Lesen Sie die unten aufgeführten häufigen Probleme, wenn Sie Probleme mit der LDAP-Authentifizierung haben. Folgen Sie dann der Anleitung, um das Problem zu beheben.
Nutzer können sich in ihrem CN nicht mit Kommas authentifizieren.
Bei der Verwendung von LDAP treten möglicherweise Probleme auf, bei denen sich Nutzer nicht authentifizieren können, wenn ihr CN ein Komma wie CN="a,b"
enthält. Wenn Sie das Debugging-Log für GKE Identity Service aktivieren, wird die folgende Fehlermeldung gemeldet:
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 Versionen von Google Distributed Cloud 1.13 und früher 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 einen anderen
identifierAttribute
wiesAMAccountName
aus, anstatt den CN zu verwenden. - Entfernen Sie die Kommas innerhalb des CN in Ihrem LDAP-Verzeichnis.
Authentifizierungsfehler bei Google Cloud CLI 1.4.2
Bei 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 auch 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
anthos-auth
-Version 1.4.2 der Google Cloud CLI verwenden:gcloud anthos auth version
Die folgende Beispielausgabe zeigt, dass die Version 1.4.2 ist:
Current Version: v1.4.2
Wenn Sie die
anthos-auth
-Version 1.4.2 der Google Cloud CLI ausführen, führen Sie ein Upgrade auf Version 1.4.3 oder höher durch.
Allgemeine Probleme
In diesem Abschnitt werden häufige Authentifizierungsprobleme und deren Behebung beschrieben.
Zugriff auf die Administrator-Workstation aufgrund eines SSH-Schlüsselfehlers permission denied
verloren
Der folgende Fehler tritt auf, wenn Sie versuchen, eine Verbindung zu Ihrer Administrator-Workstation herzustellen und eine "Permission denied"
-Meldung wie im folgenden Beispiel erhalten:
Authorized users only. All activity may be monitored and reported.
TARGET_MACHINE: Permission denied (publickey).
Dieser Fehler tritt auf, wenn Sie einen falschen privaten Schlüssel oder keinen Schlüssel verwenden, wenn Sie über SSH eine Verbindung zur Administrator-Workstation herstellen.
Suchen Sie den richtigen SSH-Schlüssel und verwenden Sie ihn, um dieses Problem zu beheben. Wenn Sie den richtigen SSH-Schlüssel nicht finden, generieren Sie mithilfe der folgenden Schritte ein neues SSH-Schlüsselpaar für die Administrator-Workstation:
Erstellen Sie eine temporäre Rettungs-VM. Diese Rettungs-VM muss eine Verbindung zum selben Netzwerk und Datastore herstellen wie die aktuelle Administrator-Workstation-VM.
Schalten Sie die Administrator-Workstation-VM und die Rettungs-VM aus.
Hängen Sie das Datenlaufwerk der Administrator-Workstation-VM an die Rettungs-VM an. Das Datenlaufwerk ist normalerweise 512 MB groß, es sei denn, Sie haben in der Konfigurationsdatei für die Administrator-Workstation eine andere Laufwerksgröße angegeben, die sich vom Bootlaufwerk unterscheidet.
Schalten Sie die Rettungs-VM ein.
Stellen Sie eine SSH-Verbindung zur Rettungs-VM her:
Generieren Sie auf Ihrem lokalen Computer ein neues SSH-Schlüsselpaar.
Kopieren Sie auf Ihrem lokalen Computer den neuen öffentlichen SSH-Schlüssel mit dem Befehl
ssh-copy-id
in die Rettungs-VM:ssh-copy-id -i ~/.ssh/NEW_SSH_KEY ubuntu@RESCUE_VM
Ersetzen Sie dabei Folgendes:
NEW_SSH_KEY
durch den Namen des neuen SSH-Schlüssels, den Sie im vorherigen Schritt erstellt haben.RESCUE_VM
durch die IP-Adresse oder den FQDN Ihrer Rettungs-VM.
Stellen Sie auf der Rettungs-VM das Datenlaufwerk auf der Rettungs-VM bereit:
sudo mkdir -p /mnt/ext-disk sudo mount DEVICE /mnt/ext-disk
Ersetzen Sie
DEVICE
durch die eindeutige Kennung Ihres eigenen Laufwerks, z. B./dev/sdb1
.Kopieren Sie auf der Rettungs-VM den neuen öffentlichen SSH-Schlüssel in die Datei
authorized_keys
auf dem bereitgestellten Datenlaufwerk der VM Ihrer Administrator-Workstation.Rufen Sie den Inhalt der Datei
authorized_keys
auf der Rettungs-VM auf, die den neuen öffentlichen SSH-Schlüssel enthält, der in einem vorherigen Schritt mit dem Befehlssh-copy-id
kopiert wurde:ls ~/.ssh/authorized_keys
Kopieren Sie den letzten öffentlichen SSH-Schlüsseleintrag aus der Datei
authorized_keys
und schließen Sie dann die Datei.Bearbeiten Sie die Datei
authorized_keys
auf dem bereitgestellten Datenlaufwerk von der VM Ihrer Administrator-Workstation aus:vi /mnt/ext-disk/.ssh/authorized_keys
Fügen Sie den Inhalt des öffentlichen SSH-Schlüssels aus der Datei
authorized_keys
Ihrer Rettungs-VM ein.Speichern und schließen Sie die Datei
authorized_keys
auf dem bereitgestellten Datenlaufwerk von der VM Ihrer Administrator-Workstation aus.Prüfen Sie, ob auf die Dateien in
/mnt/ext-disk/.ssh/
die richtigen Berechtigungen angewendet wurden:chown -R ubuntu /mnt/ext-disk/.ssh/* chmod -R 600 /mnt/ext-disk/.ssh/*
Beenden Sie Ihre SSH-Verbindung zur Rettungs-VM.
Fahren Sie die Rettungs-VM herunter.
Trennen Sie das Datenlaufwerk von der Rettungs-VM und hängen Sie das Laufwerk wieder an die Administrator-Workstation-VM an.
Schalten Sie die Administrator-Workstation ein.
Nachdem die VM erfolgreich ausgeführt wurde, stellen Sie mit SSH und dem neuen SSH-Schlüsselpaar eine Verbindung zur Administrator-Workstation her.
ssh -i ~/.ssh/NEW_SSH_KEY ubuntu@ADMIN_VM
Ersetzen Sie dabei Folgendes:
NEW_SSH_KEY
durch den Namen des neuen SSH-Schlüssels, den Sie in einem vorherigen Schritt erstellt und auf die VM der Administrator-Workstation kopiert haben.RESCUE_VM
durch die IP-Adresse oder den FQDN der VM Ihrer Administrator-Workstation.
Prüfen Sie, ob Sie erfolgreich eine Verbindung über SSH herstellen können.
Löschen Sie die Rettungs-VM.