Direkt zum Inhalt

Wie gehe ich mit Problemen bei der IAM-basierten Authentifizierung bei Amazon DocumentDB um?

Lesedauer: 3 Minute
0

Ich möchte Authentifizierungsprobleme beheben, die auftreten, wenn ich Amazon DocumentDB (mit MongoDB-Kompatibilität) verwende.

Behebung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Wenn du AWS Identity and Access Management (IAM) verwendest, um dich bei Amazon DocumentDB zu authentifizieren, erhältst du möglicherweise den Fehler „MongoServerError: Authentication failed“. Wenn du die Berechtigungen für deine IAM-Entität falsch konfiguriert hast, kann auch ein Authentifizierungsfehler auftreten, wenn du IAM-Rollen verwendest.

Hinweis: Amazon DocumentDB unterstützt IAM-basierte Authentifizierung nur ab Cluster-Version 5.0 und nur bei instancebasierten Clustern. Der primäre Benutzer von Amazon DocumentDB unterstützt keine IAM-basierte Authentifizierung.

Konfiguration von Datenbankbenutzer und -rolle überprüfen

Führe die folgenden Schritte aus:

  1. Verwende die MongoDB-Shell, um dich als Root-Benutzer bei deinem Amazon DocumentDB-Cluster anzumelden.

  2. Um zu überprüfen, ob deine IAM-Entität (IAM-Benutzer oder IAM-Rollen-ARN) in der Datenbank $external korrekt eingerichtet ist, führe die folgenden Befehle in der MongoDB-Shell aus:

    use $external;
    show users;
  3. Stelle sicher, dass du die IAM-ARN für den IAM-Benutzer und die IAM-Rolle in der Datenbank $external registriert hast. Stelle außerdem sicher, dass du der Zieldatenbank die erforderlichen Rollen und Berechtigungen zugewiesen hast.

Verbindungszeichenfolge überprüfen

Wenn du dich mit dem Amazon DocumentDB-Cluster verbindest, stelle sicher, dass dein Client sowohl AuthSource als auch AuthMechanism in der Verbindungszeichenfolge korrekt angibt. Die IAM-Authentifizierung erfordert, dass du den Mechanismus MONGODB-AWS mit AuthSource=$external verwendest.

IAM-Authentifizierung verwenden, um eine Verbindung zum MongoDB-Cluster herzustellen

Stelle sicher, dass dein IAM-Benutzer oder deine IAM-Rolle über die entsprechenden Berechtigungen verfügt, um auf den MongoDB-Cluster zuzugreifen:

mongo "mongodb://<access_key>:<secret_key>@<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS"

Hinweis: Ersetze access_key durch deine AWS-Zugriffsschlüssel-ID. Ersetze secret_key durch deinen AWS-Geheimschlüssel. Ersetze cluster_endpoint durch deinen Amazon DocumentDB-Cluster-Endpunkt. Ersetze db_port durch deine Datenbank-Port-Nummer. Die Standard-Datenbank-Port-Nummer ist 27017.

AWS-Umgebungsanmeldeinformationen verwenden, um eine Verbindung zum MongoDB-Cluster herzustellen

Stelle sicher, dass du dich mit deinen AWS-Umgebungsanmeldeinformationen mit dem MongoDB-Cluster verbinden kannst:

mongo "mongodb://<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS"

Hinweis: Ersetze cluster_endpoint durch deinen Amazon DocumentDB-Cluster-Endpunkt. Ersetze db_port durch deine Datenbank-Port-Nummer. Die Standard-Datenbank-Port-Nummer ist 27017.

Der Client ruft automatisch temporäre Anmeldeinformationen aus der Umgebung ab. Dazu gehören Anmeldeinformationen aus den folgenden AWS-Servicerollen:

  • Amazon Elastic Compute Cloud (Amazon EC2)-Instance-Profil
  • Amazon Elastic Container Service (Amazon ECS)-Aufgabenrolle
  • AWS Lambda-Ausführungsrolle
  • Amazon Elastic Kubernetes Service (Amazon EKS)-Servicekonto-Rolle

Überprüfen, ob die IAM-Rolle oder der IAM-Benutzer auf dem Client aktiv ist

Wenn du AWS-Anmeldeinformationen für Amazon EC2 oder AWS Lambda nicht explizit übergibst, stelle sicher, dass du der Compute-Ressource eine IAM-Rolle zugewiesen hast.

Wenn du AWS-Anmeldeinformationen für Amazon EKS nicht explizit übergibst, überprüfe, dass das Pod oder Servicekonto über eine korrekte IAM-Rollenanmerkung und Zuordnung verfügt. Stelle außerdem sicher, dass du der Compute-Ressource eine IAM-Rolle zugewiesen hast.

Um die effektive IAM-Identität zu überprüfen, führe den folgenden Befehl get-caller-identity aus:

aws sts get-caller-identity

Beispielausgabe:

{
    "UserId": "AIDATOCZW5HO####T22",
    "Account": "236411349###",
    "Arn": "arn:aws:iam::`444455556666`:user/DocDBRole"
}

Wenn die Ausgabe dem IAM-Benutzer oder der IAM-Rolle entspricht, ist die ARN in der Datenbank $external korrekt konfiguriert.

Hinweis: Amazon DocumentDB unterstützt Node.js-Treiber der Version 6.13.1 und früher nicht. Um Node.js-Treiber mit IAM für Amazon DocumentDB zu verwenden, musst du die Node.js-Treiber und Tools auf Versionen später als 6.13.1 aktualisieren.

Ähnliche Informationen

Authentifizierung mit IAM-Identität

AWS OFFICIALAktualisiert vor 6 Monaten