Fehlerbehebung bei Problemen mit dem LDAP-Server

Dieses Dokument enthält Anleitungen zur Fehlerbehebung bei Problemen mit dem LDAP-Server beim Zugriff auf Ihre Flottenmitgliedscluster. Dieses Dokument gilt nur für unterstützte Clustertypen.

Verbindungsproblem

Beim Herstellen einer Verbindung zu einem LDAP-Server können Verbindungsprobleme auftreten. Das Verbindungsproblem kann auch auftreten, wenn das Zertifikat, das zur Identifizierung des LDAP-Servers verwendet wird, nicht mit dem in der ClientConfig angegebenen Zertifikat übereinstimmt.

Fehlermeldung

Die folgenden Meldungen gelten für Fehler, die beim Ausführen des Befehls gcloud anthos auth login auftreten.

  • 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

Lösung

Sie können die Probleme auf eine der folgenden Arten beheben:

  • Wenn der Cluster keine Verbindung zum LDAP-Server herstellen kann, gehen Sie so vor:
    • Um zu prüfen, ob Netzwerktraffic den LDAP-Server (Identitätsanbieter) vom Cluster aus erreichen kann, verwenden Sie telnet, nc oder einen ähnlichen Befehl, um eine Verbindung zum LDAP-Server herzustellen. Zum Herstellen einer Verbindung zum LDAP-Server müssen Sie den Befehl in einem Knoten oder Pod ausführen, in dem der Identitätsdienst-Pod ausgeführt wird.
    • Wenn der Befehl erfolgreich ist, sollte der Identitätsdienst-Pod eine Verbindung zum LDAP-Server herstellen.
    • Wenn der Befehl fehlschlägt, liegt ein Problem mit der Netzwerkverbindung vor. Prüfen Sie die Netzwerkeinstellungen oder wenden Sie sich an Ihren Netzwerkadministrator, um das Verbindungsproblem zu beheben.
  • Prüfen Sie, ob das öffentliche Zertifikat in der Konfiguration richtig formatiert ist und für folgende Fälle zu Ihrem LDAP-Server passt:
    • Sie verwenden LDAP mit TLS.
    • Sie authentifizieren sich mit einem Dienstkonto bei LDAP. Sie verwenden ein Zertifikat, um das Dienstkonto beim LDAP-Server zu identifizieren.

Authentifizierungsproblem

Ein Authentifizierungsproblem tritt in einem der folgenden Fälle auf:

  • Die LDAP-Anbietereinstellungen sind in der ClientConfig falsch konfiguriert.
  • Die von Ihnen angegebenen Nutzeranmeldedaten sind auf dem LDAP-Server nicht vorhanden.
  • Der LDAP-Server wird nicht ausgeführt.

Fehlermeldung

Die folgenden Meldungen gelten für Fehler, die beim Ausführen des Befehls gcloud anthos auth login auftreten.

  • 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

Lösung

Als Clusteradministrator können Sie die Logs des Identitätsdienst-Pods prüfen und die Authentifizierungsprobleme auf folgende Weise beheben:

  • Can't contact LDAP server: Weitere Informationen zum Beheben dieses Problems finden Sie unter Verbindungsprobleme.
  • Attempting to bind as the LDAP service account: Der Cluster versucht, eine Verbindung zum LDAP-Server mit den in der ClientConfig angegebenen Anmeldedaten des Dienstkontos herzustellen. Ist dieser Logeintrag nicht vorhanden, liegt ein Verbindungsproblem vor.
  • Successfully completed BIND as LDAP service account: Der Cluster kann eine Verbindung zum LDAP-Server herstellen und das Dienstkonto für die Nutzerauthentifizierung verwenden. Ist dieser Logeintrag nicht vorhanden, liegt ein Konfigurationsproblem vor.
  • Successfully found an entry for the user in the database: Auf dem LDAP-Server ist ein Nutzereintrag vorhanden. Dies bedeutet, dass die Felder baseDN, filter und loginAttribute korrekt für den Abruf von Nutzern konfiguriert sind. Diese Meldung wird nur angezeigt, wenn die Logging-Ausführlichkeit über dem Standardwert liegt. Weitere Informationen zum Aktivieren von Logs finden Sie unter Debug-Log aktivieren.
  • Attempting to BIND as the user to verify their credentials: Der Cluster versucht, die Anmeldedaten des Nutzers zu prüfen.
  • Successfully completed LDAP authentication: Die Nutzerauthentifizierung ist erfolgreich. Das Fehlen dieses Logeintrags weist auf ungültige Anmeldedaten hin.

Authentifizierungstoken ist abgelaufen

Trotz einer erfolgreichen Anmeldung können Probleme auftreten, wenn das Authentifizierungstoken abgelaufen ist.

Fehlermeldung

ERROR: You must be logged in to the server (Unauthorized)

Lösung

Um das Problem zu beheben, melden Sie sich noch einmal beim Server an.

Problem mit RBAC-Rollenbindung für den Nutzer oder die Gruppe

Dieses Problem tritt auf, wenn die Authentifizierung erfolgreich ist, jedoch die Autorisierung jedoch fehlschlägt, weil keine RBAC-Rollenbindung an den Nutzer oder die Gruppe besteht. Dieses Problem tritt beispielsweise auf, wenn Sie den Befehl kubectl get pods ausführen.

Fehlermeldung

Error from server (Forbidden): <SERVICE or PODS> is forbidden: <MORE DETAILS>

Lösung

Sie können das Problem so beheben:

  1. Melden Sie sich auf Ihrem LDAP-Server an, um die Gruppen des Zielnutzers aufzurufen.
  2. Prüfen Sie, ob Ihre Kubernetes-Rolle und -Rollenbindungen korrekt definiert sind und mit den Werten in Ihrem LDAP-Verzeichnis übereinstimmen. Ein Administrator kann die Rollenbindungen mithilfe der Kubernetes-Nutzeridentitätswechsel prüfen.
  3. Aktualisieren Sie die Rollenbindung so, dass die Gruppe des Zielnutzers berechtigt ist, die erforderliche Aktion auszuführen.
  4. Prüfen Sie, ob die Werte für baseDN und optional filter und identifierAttribute für Gruppen korrekt sind. Der Cluster verwendet die Gruppenkonfiguration aus diesen Feldern, um alle Gruppen abzufragen, denen der Nutzer angehört. Wenn baseDN leer ist, werden dem Kubernetes API-Server keine Gruppen bereitgestellt. In diesem Fall werden keine Meldungen protokolliert. Wenn baseDN nicht leer ist, fragt der Cluster die Datenbank nach den Gruppen des Nutzers ab.
    • Ist die Abfrage erfolgreich, werden die Gruppen dem Kubernetes API-Server bereitgestellt.
    • Schlägt die Abfrage fehl, werden die Gruppen nicht dem Kubernetes API-Server bereitgestellt. In diesem Fall müssen Sie die Konfigurationswerte für baseDN und filter für Gruppen korrigieren.

Nutzer gehört mehreren Gruppen an

Dieses Problem tritt auf, wenn ein Nutzer mehreren Gruppen angehört.

Fehlermeldung

could not obtain an STS token: STS token exceeds allowed size limit. Possibility of too many groups associated with the credentials provided.

Lösung

Als Clusteradministrator müssen Sie das Feld filter in der ClientConfig konfigurieren, um die Anzahl der Gruppen zu reduzieren, die von der Abfrage an den LDAP-Server zurückgegeben werden.

Problem mit der Versionskompatibilität

Dieses Problem tritt auf, wenn die Versionskompatibilität zwischen der Identitätsdienstkomponente und der installierten Version der Google Cloud CLI nicht gegeben ist.

Fehlermeldung

  • unable to parse STS Token Response
  • could not obtain an STS token: JSON parse error: The request was malformed.
  • could not obtain an STS token: Grant type must confirm that the request is intended for a token exchange.
  • could not obtain an STS token: Requested token type must correspond to an access token.
  • could not obtain an STS token: Subject token type must be a valid token type supported for token exchange.

Lösung

Sie müssen das gcloud-Tool und den Cluster auf die neueste verfügbare Version aktualisieren.

Statuscode 401 – Authentifizierung fehlgeschlagen

Dieses Problem tritt auf, wenn der Kubernetes API-Server den Dienst nicht authentifizieren kann und den Fehlercode 401 zurückgibt.

Fehlermeldung

  • ERROR: LDAP login failed: STSToken() failed: could not obtain an STS token: Post "https://127.0.0.1:15001/sts/v1beta/token": DialContext() failed: podEndpoint() failed to obtain an endpoint for deployment anthos-identity-service/ais: Unauthorized

  • ERROR: Configuring Anthos authentication failed

Lösung

Sie können dieses Problem auf eine der folgenden Arten beheben:

  • Prüfen Sie mit dem folgenden Befehl, ob sich der Identitätsdienst-Pod im Status running befindet:
    kubectl get pods -l k8s-app=ais -n anthos-identity-service --kubeconfig USER_CLUSTER_KUBECONFIG
  • Prüfen Sie die LDAP-Konfiguration in der ClientConfig mit dem folgenden Befehl:
    kubectl get clientconfig -n kube-public -o jsonpath='{.items[].spec.authentication[].ldap}' --kubeconfig USER_CLUSTER_KUBECONFIG
  • In den Logs finden Sie detaillierte Informationen zum Fehler. Weitere Informationen zum Logging finden Sie unter Logging und Monitoring für Systemkomponenten verwenden.