Quero solucionar problemas de autenticação que eu tenho quando uso o Amazon DocumentDB (compatível com MongoDB).
Resolução
Observação: se você receber mensagens de erro ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Se você usar o AWS Identity and Access Management (AWS IAM) para se autenticar no Amazon DocumentDB, pode receber o erro "MongoServerError: Authentication failed". Se você configurou incorretamente as permissões da sua entidade do IAM, também pode receber um erro de autenticação ao usar perfis do IAM.
Observação: o Amazon DocumentDB oferece suporte à autenticação baseada em IAM somente na versão 5.0 e posterior do cluster, com clusters baseados em instâncias. O usuário primário do Amazon DocumentDB não oferece suporte à autenticação baseada em IAM.
Analise a configuração do usuário e do perfil do banco de dados
Conclua as etapas a seguir:
-
Use o shell do MongoDB para fazer login no seu cluster do Amazon DocumentDB como usuário-raiz.
-
Para verificar se sua entidade IAM (usuário do IAM ou ARN do perfil do IAM) está configurada corretamente no banco de dados $external, execute os seguintes comandos no shell do MongoDB:
use $external;
show users;
-
Certifique-se de registrar o ARN do IAM no usuário do IAM e o perfil do IAM no banco de dados $external. Confirme também se você atribuiu os perfis e permissões necessárias no banco de dados de destino.
Valide a string de conexão
Ao se conectar ao cluster do Amazon DocumentDB, certifique-se de que seu cliente especifique AuthSource e AuthMechanism corretamente na string de conexão. A autenticação do IAM exige que você use o mecanismo MONGODB-AWS com AuthSource=$external.
Use a autenticação do IAM para se conectar ao cluster do MongoDB
Confirme se seu usuário do IAM ou seu perfil do IAM tem as permissões apropriadas para acessar o cluster do MongoDB:
mongo "mongodb://<access_key>:<secret_key>@<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS"
Observação: substitua access_key pelo seu ID de chave de acesso da AWS. Substitua secret_key pela sua chave secreta da AWS. Substitua cluster_endpoint pelo endpoint do seu cluster do Amazon DocumentDB. Substitua db_port pelo número da porta do seu banco de dados. O número da porta padrão do banco de dados é 27017.
Use as credenciais de ambiente da AWS para se conectar ao cluster do MongoDB
Confirme se é possível se conectar ao cluster do MongoDB com suas credenciais de ambiente da AWS:
mongo "mongodb://<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS"
Observação: substitua cluster_endpoint pelo endpoint do seu cluster do Amazon DocumentDB. Substitua db_port pelo número da porta do seu banco de dados. O número da porta padrão do banco de dados é 27017.
O cliente recupera automaticamente as credenciais temporárias do ambiente. Isso inclui credenciais dos seguintes perfis de serviço da AWS:
- Perfil de instância do Amazon Elastic Compute Cloud (Amazon EC2)
- Perfil de tarefa do Amazon Elastic Container Service (Amazon ECS)
- Perfil de execução do AWS Lambda
- Perfil da conta de serviço do Amazon Elastic Kubernetes Service (Amazon EKS).
Verifique se o perfil do IAM ou o usuário do IAM está ativo no cliente
Se você não passar explicitamente as credenciais da AWS para o Amazon EC2 ou o AWS Lambda, certifique-se de anexar um perfil do IAM ao recurso de computação.
Se você não passar explicitamente as credenciais da AWS para o Amazon EKS, verifique se o pod ou a conta de serviço tem a anotação e o mapeamento de perfis do IAM adequados. Além disso, verifique se você anexou um perfil do IAM ao recurso de computação.
Para verificar a identidade efetiva do IAM, execute o seguinte comando get-caller-identity:
aws sts get-caller-identity
Exemplo de saída:
{
"UserId": "AIDATOCZW5HO####T22",
"Account": "236411349###",
"Arn": "arn:aws:iam::`444455556666`:user/DocDBRole"
}
Se a saída corresponder ao usuário do IAM ou ao perfil do IAM, o banco de dados $external está com seu ARN configurado corretamente.
Observação: o Amazon DocumentDB não oferece suporte às versões 6.13.1 e anteriores dos drivers Node.js. Para usar os drivers Node.js com o IAM no Amazon DocumentDB, você deve fazer upgrade dos drivers e das ferramentas do Node.js para versões posteriores à 6.13.1.
Informações relacionadas
Autenticação usando identidade do IAM