View a markdown version of this page

Authentifizierung mithilfe der IAM-Identität - Amazon DocumentDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Authentifizierung mithilfe der IAM-Identität

Amazon DocumentDB-Benutzer und -Anwendungen können IAM-Benutzer und -Rollen verwenden, um sich bei einem Amazon DocumentDB-Cluster zu authentifizieren. Die Amazon DocumentDB-IAM-Authentifizierung ist eine kennwortlose Authentifizierungsmethode. Außerdem senden Client-Anwendungen die Passwortgeheimnisse nicht an den Amazon DocumentDB-Cluster, wenn sie IAM verwenden. roles/users Stattdessen werden Client-Verbindungen AWS STS mithilfe temporärer Sicherheitstoken authentifiziert. Non-administrative Benutzer und Anwendungen können jetzt denselben IAM-Identitäts-ARN verwenden, wenn sie eine Verbindung zu verschiedenen Amazon DocumentDB-Clustern und anderen Diensten herstellen. AWS

Sie können auch wählen, ob Sie sowohl die kennwortbasierte als auch die IAM-Authentifizierung verwenden möchten, um Benutzer und Anwendungen bei einem Amazon DocumentDB-Cluster zu authentifizieren. Die IAM-Authentifizierung ist nur in der instanzbasierten Cluster-Version 5.0 von Amazon DocumentDB verfügbar. Die IAM-Authentifizierung mithilfe von IAM-Identitäts-ARNs wird für den primären Amazon DocumentDB-Benutzer nicht unterstützt.

Anmerkung

Der Hauptbenutzer kann nur mithilfe der vorhandenen kennwortbasierten Authentifizierung authentifiziert werden.

Erste Schritte mit der Authentifizierung mithilfe von IAM-Benutzern und -Rollen

Amazon DocumentDB-Benutzer und -Rollen mit IAM-Identitäten werden in einer Datenbank erstellt und verwaltet. $external

Einen Benutzer erstellen

Stellen Sie als Hauptbenutzer eine Verbindung her und erstellen Sie dann einen IAM-Benutzer und eine IAM-Rolle:

use $external; db.createUser( { user: "arn:aws:iam::123456789123:user/iamuser", mechanisms: ["MONGODB-AWS"], roles: [ { role: "readWrite", db: "readWriteDB" } ] } );

Fügen Sie alternativ einen Amazon DocumentDB-Benutzer mithilfe einer IAM-Rolle hinzu:

use $external; db.createUser( { user: "arn:aws:iam::123456789123:role/iamrole", mechanisms: ["MONGODB-AWS"], roles: [ { role: "readWrite", db: "readWriteDB" } ] } );

Einen IAM-Benutzer oder eine IAM-Rolle ändern

Ändern Sie einen vorhandenen IAM-Benutzer:

use $external; db.updateUser( "arn:aws:iam::123456789123:user/iamuser", { roles: [ { role: "read", db: "readDB" } ] } );

Ändern Sie eine bestehende IAM-Rolle:

use $external; db.updateUser( "arn:aws:iam::123456789123:role/iamrole", { roles: [ { role: "read", db: "readDB" } ] } );

So gewähren oder entziehen Sie einem IAM-Benutzer Rollen:

use $external; db.grantRolesToUser( "arn:aws:iam::123456789123:user/iamuser", [ { db: "admin", role: "readWriteAnyDatabase" } ] );
use $external; db.revokeRolesFromUser( "arn:aws:iam::123456789123:user/iamuser", [ { db: "admin", role: "readWriteAnyDatabase" } ] );

So gewähren oder entziehen Sie Rollen einer IAM-Rolle:

use $external; db.grantRolesToUser( "arn:aws:iam::123456789123:user/iamrole", [ { db: "admin", role: "readWriteAnyDatabase" } ] );
use $external; db.revokeRolesFromUser( "arn:aws:iam::123456789123:user/iamrole", [ { db: "admin", role: "readWriteAnyDatabase" } ] );

Einen IAM-Benutzer oder eine IAM-Rolle löschen

So löschen Sie einen vorhandenen IAM-Benutzer:

use $external; db.dropUser("arn:aws:iam::123456789123:user/iamuser");

So löschen Sie eine bestehende IAM-Rolle:

use $external; db.dropUser("arn:aws:iam::123456789123:role/iamrole");

Konfigurieren Sie einen Verbindungs-URI für die Authentifizierung mit IAM AWS

Verwenden Sie die folgenden URI-Parameter, um sich mit AWS IAM zu authentifizieren: authSource as und as. $external authMechanism MONGODB-AWS Wenn Sie einen IAM-Benutzer verwenden, werden die Felder Benutzername und Passwort durch einen Zugriffsschlüssel bzw. einen geheimen Schlüssel ersetzt. Wenn Sie eine IAM-Rolle übernehmen, die der Umgebung zugeordnet ist, in der Sie sich befinden (z. B. AWS Lambda Funktion, Amazon EC2-Instance). Sie müssen bei der Authentifizierung mithilfe des Mechanismus keine speziellen Anmeldeinformationen angeben. MONGODB-AWS Wenn Sie MongoDB-Treiber verwenden, die den MONGODB-AWS Authentifizierungsmechanismus unterstützen, können die Treiber auch IAM-Rollenanmeldedaten von der Compute-Instance abrufen (z. B. Amazon EC2, Lambda-Funktion und andere). Das folgende Beispiel verwendet eine Mongo-Shell zur Authentifizierung, MONGODB-AWS indem ein Zugriffsschlüssel und ein geheimer Schlüssel (eines IAM-Benutzers) manuell übergeben werden, um die Authentifizierung gegen Amazon DocumentDB zu demonstrieren.

Im folgenden Beispiel wird Python-Code zur Authentifizierung verwendet, MONGODB-AWS ohne dass explizit Anmeldeinformationen übergeben werden (unter Verwendung einer an die Umgebung angehängten IAM-Rolle), um die Authentifizierung gegenüber Amazon DocumentDB zu demonstrieren.

##Create a MongoDB client, open a connection to Amazon DocumentDB using an IAM role client = pymongo.MongoClient(‘mongodb://<DocDBEndpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false&authSource=%24external&authMechanism=MONGODB-AWS')

Das folgende Beispiel verwendet eine Mongo-Shell zur Authentifizierung mithilfe eines MONGODB-AWS Mechanismus, bei dem ein Zugriffsschlüssel und ein geheimer Schlüssel (eines IAM-Benutzers) manuell übergeben werden, um die Authentifizierung gegenüber Amazon DocumentDB zu demonstrieren.

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

Im folgenden Beispiel wird eine Mongo-Shell zur Authentifizierung verwendet, MONGODB-AWS ohne dass Anmeldeinformationen explizit übergeben werden (unter Verwendung der an die Umgebung angehängten IAM-Rolle), um die Authentifizierung gegenüber Amazon DocumentDB zu demonstrieren.

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

Konfigurieren AWS berechnet Typen für die Authentifizierung bei Amazon DocumentDB mit AWS IAM

Verwenden von Amazon EC2//AWS LambdaAWS Fargate

Amazon EC2 verwendet die folgenden Umgebungsvariablen. Wenn der EC2-Instance eine IAM-Rolle oder eine Ausführungs-IAM-Rolle zugeordnet ist, die einer Lambda-Funktion oder einer Amazon ECS-Aufgabe zugeordnet ist, werden diese Variablen automatisch aufgefüllt und der Treiber kann diese Werte aus der Umgebung abrufen:

AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

Weitere Informationen zu Umgebungsvariablen finden Sie unter Verwenden von Lambda-Umgebungsvariablen im Entwicklerhandbuch. AWS Lambda

Verwenden von Amazon EKS

Wenn Sie Ihren Amazon Elastic Kubernetes Service (Amazon EKS) -Pods eine Rolle zuweisen, werden automatisch die folgenden beiden Umgebungsvariablen eingerichtet:

AWS_WEB_IDENTITY_TOKEN_FILE - path of web identity token file AWS_ROLE_ARN - Name of IAM role to connect with

Übernehmen Sie mithilfe dieser Variablen manuell die Rolle aus Ihrem Code mithilfe des AWS SDK-Aufrufs für: AssumeRoleWithWebIdentity

  • Lassen Sie den ProviderID Parameter weg.

  • Suchen Sie den Wert des WebIdentityToken Parameters in der in der AWS_WEB_IDENTITY_TOKEN_FILE Umgebungsvariablen beschriebenen Datei.

Weitere Informationen zu Amazon EKS finden Sie unter Was ist Amazon EKS im Amazon EKS-Benutzerhandbuch.

Überwachung von IAM-Authentifizierungsanfragen

Verwenden von Amazon DocumentDB-Auditing

Gehen Sie in Amazon zum Audit-Log-Ordner und verwenden Sie verschiedene Suchmuster CloudWatch, um die Protokolle für die IAM-Authentifizierung abzurufen. Verwenden Sie es beispielsweise { $.param.mechanism = "MONGODB-AWS" } als Suchmuster für „Alle Log-Streams durchsuchen“.

Weitere Informationen zu unterstützten Ereignissen im Auditing finden Sie unterPrüfung von Amazon DocumentDB-Ereignissen.

Verwenden von CloudWatch Amazon-Metriken

StsGetCallerIdentityCalls: Diese Metrik zeigt, wie viele GetCallerIdentity Aufrufe eine Amazon DocumentDB-Instance an den regionalized AWS -Security-Token-Service (AWS STS) -Endpunkt tätigt. Lesen Sie in der MONGODB-AWS Authentifizierungsspezifikation nach, warum Datenbankinstanzen GetCallerIdentity STS-Aufrufe tätigen müssen.

Verwenden der IAM-Authentifizierung

Wenn Sie den Benutzernamen und das Passwort nicht in Ihrer eigenen Datenbank verwalten möchten, können Sie die IAM-Authentifizierung verwenden. Die IAM-Authentifizierung ist nur in der instanzbasierten Cluster-Version 5.0 von Amazon DocumentDB verfügbar.

Die IAM-Authentifizierung ist abhängig von (). AWS -Security-Token-Service AWS STS Wenn bei der Verwendung der IAM-Authentifizierung eine AWS STS Drosselungsausnahme auftritt, senken Sie Ihre Verbindungsrate.

Informationen zu IAM-Kontingenten finden Sie unter IAM und AWS STS Kontingente im IAM-Benutzerhandbuch.

Treiber, die IAM unterstützen

Treiber, die Amazon DocumentDB 5.0 und den MONGODB-AWS Authentifizierungsmechanismus unterstützen, sollten mit der IAM-Authentifizierungsimplementierung in Amazon DocumentDB funktionieren.

Wichtig

Es gibt eine bekannte Einschränkung bei Node.js Treibern, die älter als Version 6.13.1 sind und die derzeit von der IAM-Identitätsauthentifizierung für Amazon DocumentDB nicht unterstützt werden. Node.js Treiber und Tools, die Node.js Treiber verwenden (z. B. Mongosh), müssen aktualisiert werden, um die Node.js Treiberversion 6.13.1 oder höher zu verwenden.

Häufig gestellte Fragen zur IAM-Identitätsauthentifizierung

Gibt es Beispiele, auf die ich zurückgreifen kann?

Auf diesen Seiten finden Sie Beispiele für Anwendungsfälle und Konfigurationen:

Ich erhalte eine Fehlermeldung bei der Verwendung meines Python-Treibers: „pymongo.errors. ConfigurationError: Die AWS MONGODB-Authentifizierung erfordert „pymongo-auth-aws“. Wie kann ich das lösen?

Stellen Sie sicher, dass Sie bei der Installation des Python-Treibers mit IAM-Authentifizierung die folgende Anweisung verwenden:

pip install 'pymongo[aws]'

Dadurch werden die zusätzlichen AWS Abhängigkeiten installiert, die erforderlich sind, damit die IAM-Authentifizierung funktioniert.

Wird meine Verbindung unterbrochen, wenn meine temporären Anmeldeinformationen für die IAM-Rolle ablaufen?

Nein, die temporären IAM-Anmeldeinformationen werden nur für den Verbindungsaufbau und die Authentifizierung verwendet. Dann erfolgt die gesamte weitere Autorisierung im Amazon DocumentDB-Cluster. Selbst wenn es sich um IAM-Anmeldeinformationen handelt rotate/expire, wird die Verbindung nicht unterbrochen oder veraltet.