Salta al contenuto

Come posso gestire i problemi di autenticazione basata su IAM in Amazon DocumentDB?

4 minuti di lettura
0

Desidero risolvere i problemi di autenticazione che si verificano quando utilizzo Amazon DocumentDB (con compatibilità MongoDB).

Risoluzione

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Se utilizzi AWS Identity and Access Management (AWS IAM) per autenticarti in Amazon DocumentDB, potresti ricevere l'errore "MongoServerError: Authentication failed". Se hai configurato in modo errato le autorizzazioni per l'entità IAM, potresti ricevere anche un errore di autenticazione quando utilizzi i ruoli IAM.

Nota: Amazon DocumentDB supporta l'autenticazione basata su IAM solo nella versione del cluster 5.0 e successive, con cluster basati su istanze. L'utente primario di Amazon DocumentDB non supporta l'autenticazione basata su IAM.

Rivedi la configurazione degli utenti e dei ruoli del database

Completa i seguenti passaggi:

  1. Utilizza la shell MongoDB per accedere al cluster Amazon DocumentDB come utente root.

  2. Per verificare se l'entità IAM (ARN dell'utente o del ruolo IAM) è impostata correttamente nel database $external, esegui questi comandi nella shell MongoDB:

    use $external;
    show users;
  3. Assicurati di aver registrato l'ARN IAM per l'utente e il ruolo IAM nel database $external. Verifica inoltre di aver assegnato i ruoli e le autorizzazioni richiesti per il database di destinazione.

Convalida la stringa di connessione

Quando ti connetti al cluster Amazon DocumentDB, assicurati che il client specifichi correttamente AuthSource e AuthMechanism nella stringa di connessione. L'autenticazione IAM richiede l'utilizzo del meccanismo MONGODB-AWS con AuthSource=$external.

Utilizza l'autenticazione IAM per connetterti al cluster MongoDB

Verifica che l'utente o il ruolo IAM abbia le autorizzazioni appropriate per accedere al cluster MongoDB:

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

Nota: sostituisci access_key con l'ID della tua chiave di accesso AWS. Sostituisci secret_key con la tua chiave segreta AWS. Sostituisci cluster_endpoint con l'endpoint del tuo cluster Amazon DocumentDB. Sostituisci db_port con il numero di porta del tuo database. Il numero di porta del database predefinito è 27017.

Utilizza le credenziali dell'ambiente AWS per connetterti al cluster MongoDB

Verifica di poterti connettere al cluster MongoDB con le credenziali dell'ambiente AWS:

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

Nota: sostituisci cluster_endpoint con l'endpoint del tuo cluster Amazon DocumentDB. Sostituisci db_port con il numero di porta del tuo database. Il numero di porta del database predefinito è 27017.

Il client recupera automaticamente le credenziali temporanee dall'ambiente, tra cui le credenziali dei seguenti ruoli di servizio AWS:

  • Profilo dell'istanza Amazon Elastic Cloud Compute (Amazon EC2)
  • Ruolo dell'attività Amazon Elastic Container Service (Amazon ECS)
  • Ruolo di esecuzione AWS Lambda
  • Ruolo dell'account di servizio Amazon Elastic Kubernetes Service (Amazon EKS).

Verifica che il ruolo o l'utente IAM sia attivo sul client

Se non passi esplicitamente le credenziali AWS per Amazon EC2 o AWS Lambda, assicurati di aver collegato un ruolo IAM alla risorsa di calcolo.

Se non trasmetti esplicitamente le credenziali AWS per Amazon EKS, verifica che l'account di servizio o il pod abbia la mappatura o l'annotazione del ruolo IAM corretta. Inoltre, assicurati di aver collegato un ruolo IAM alla risorsa di calcolo.

Per verificare l'identità IAM effettiva, esegui questo comando get-caller-identity:

aws sts get-caller-identity

Esempio di output:

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

Se l'output corrisponde all'utente o al ruolo IAM, il database $external ha l'ARN configurato correttamente.

Nota: Amazon DocumentDB non supporta i driver Node.js versione 6.13.1 e precedenti. Per utilizzare i driver Node.js con IAM per Amazon DocumentDB, devi aggiornare i driver e gli strumenti Node.js a versioni successive alla 6.13.1.

Informazioni correlate

Autenticazione tramite identità IAM

AWS UFFICIALEAggiornata 6 mesi fa