Ir para o conteúdo

Como faço para tratar problemas de autenticação baseada em IAM com o Amazon DocumentDB?

4 minuto de leitura
0

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:

  1. Use o shell do MongoDB para fazer login no seu cluster do Amazon DocumentDB como usuário-raiz.

  2. 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;
  3. 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

AWS OFICIALAtualizada há 5 meses