As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Autenticação usando identidade do IAM
Os usuários e aplicações do Amazon DocumentDB podem usar usuários e funções do IAM para se autenticar em um cluster do Amazon DocumentDB. A autenticação de IAM do Amazon DocumentDB é um método de autenticação sem senha. Além disso, as aplicações cliente não enviam os segredos da senha para o cluster Amazon DocumentDB ao usar perfis/usuários do IAM. Em vez disso, as conexões do cliente são autenticadas por AWS STS usando tokens de segurança temporários. Agora, usuários e aplicações não administrativos podem usar o mesmo ARN de identidade do IAM ao se conectar a diferentes clusters do Amazon DocumentDB e outros serviços da AWS.
Você também pode optar por usar tanto a autenticação baseada em senha quanto a do IAM para autenticar usuários e aplicações em um cluster do Amazon DocumentDB. A autenticação do IAM está disponível somente na versão 5.0 do cluster baseado em instâncias do Amazon DocumentDB. A autenticação do IAM usando ARNs de identidade do IAM não tem suporte pelo usuário principal do Amazon DocumentDB.
nota
O usuário principal só pode ser autenticado usando a autenticação baseada em senha existente.
Tópicos
Introdução à autenticação usando usuários e funções do IAM
Os usuários e funções do Amazon DocumentDB com identidades do IAM são criados e gerenciados em um banco de dados. $external
Criar um usuário
Conecte-se como usuário principal e, em seguida, crie um usuário e um perfil do IAM:
use $external; db.createUser( { user: "arn:aws:iam::123456789123:user/iamuser", mechanisms: ["MONGODB-AWS"], roles: [ { role: "readWrite", db: "readWriteDB" } ] } );
Como alternativa, adicione um usuário do Amazon DocumentDB usando um perfil do IAM:
use $external; db.createUser( { user: "arn:aws:iam::123456789123:role/iamrole", mechanisms: ["MONGODB-AWS"], roles: [ { role: "readWrite", db: "readWriteDB" } ] } );
Modificar um usuário ou perfil do IAM
Modificar um usuário do IAM existente:
use $external; db.updateUser( "arn:aws:iam::123456789123:user/iamuser", { roles: [ { role: "read", db: "readDB" } ] } );
Modificar um perfil do IAM existente:
use $external; db.updateUser( "arn:aws:iam::123456789123:role/iamrole", { roles: [ { role: "read", db: "readDB" } ] } );
Para conceder ou revogar perfis de um usuário do IAM:
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" } ] );
Para conceder ou revogar perfis de um perfil do IAM:
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" } ] );
Eliminar um usuário ou perfil do IAM
Para descartar um usuário do IAM existente:
use $external; db.dropUser("arn:aws:iam::123456789123:user/iamuser");
Para descartar um perfil do IAM existente:
use $external; db.dropUser("arn:aws:iam::123456789123:role/iamrole");
Configurar um URI de conexão para autenticar usando o AWS IAM
Para se autenticar usando o AWS IAM, use os seguintes parâmetros de URI: authSource como $external e authMechanism como MONGODB-AWS. Se você estiver usando um usuário do IAM, os campos de nome de usuário e senha serão substituídos por uma chave de acesso e uma chave secreta, respectivamente. Se você estiver assumindo um perfil do IAM, vinculada ao ambiente em que está (por exemplo, função AWS Lambda, instância do Amazon EC2). Não será necessário passar nenhuma credencial específica ao fazer a autenticação usando o mecanismo MONGODB-AWS. Se você estiver usando drivers do MongoDB que suportam o mecanismo de autenticação MONGODB-AWS, os drivers também podem recuperar as credenciais do perfil do IAM da instância de computação (por exemplo, Amazon EC2, função do Lambda e outras). O exemplo a seguir usa um shell mongo para autenticar usando MONGODB-AWS, passando manualmente uma chave de acesso e uma chave secreta (de um usuário do IAM) para demonstrar a autenticação no Amazon DocumentDB.
O exemplo a seguir usa o código Python para autenticar usando MONGODB-AWS sem passar explicitamente nenhuma credencial (usando uma função do IAM anexada ao ambiente) para demonstrar a autenticação no Amazon DocumentDB.
##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')
O exemplo a seguir usa um shell mongo para autenticar usando o mecanismo MONGODB-AWS, passando manualmente uma chave de acesso e uma chave secreta (de um usuário do IAM) para demonstrar a autenticação no Amazon DocumentDB.
$ mongo 'mongodb://<access_key>:<secret_key>@<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS'
O exemplo a seguir usa um shell mongo para autenticar usando MONGODB-AWS sem passar explicitamente nenhuma credencial (usando o perfil do IAM anexado ao ambiente) para demonstrar a autenticação no Amazon DocumentDB.
$ mongo 'mongodb://<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS'
Configurar tipos de computação da AWS para autenticação no Amazon DocumentDB usando o AWS IAM
Usar o Amazon EC2/AWS Lambda/AWS Fargate
O Amazon EC2 usa as seguintes variáveis de ambiente. Se você tiver um perfil do IAM anexado à instância do EC2 ou um perfil do IAM de execução associado a uma função do Lambda ou a uma tarefa do Amazon ECS, essas variáveis serão preenchidas automaticamente e o driver poderá buscar esses valores do ambiente:
AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
Para obter informações sobre como usar variáveis de ambiente, consulte Usar variáveis de ambiente do Lambda no Guia do desenvolvedor do AWS Lambda.
Usar o Amazon EKS
A atribuição de um perfil aos pods do Amazon Elastic Kubernetes Service (Amazon EKS) configurará automaticamente as duas variáveis de ambiente a seguir:
AWS_WEB_IDENTITY_TOKEN_FILE - path of web identity token file AWS_ROLE_ARN - Name of IAM role to connect with
Com a ajuda dessas variáveis, assuma manualmente o perfil do seu código usando a chamada do AWS SDK para AssumeRoleWithWebIdentity:
Omita o parâmetro
ProviderID.Encontre o valor do parâmetro
WebIdentityTokenno arquivo descrito na variável de ambienteAWS_WEB_IDENTITY_TOKEN_FILE.
Para obter mais informações, consulte O que é o Amazon EKS no Guia do usuário do Amazon EKS.
Monitorar solicitações de autenticação do IAM
Usar a auditoria do Amazon DocumentDB
Acesse a pasta de logs de auditoria no Amazon CloudWatch e use diferentes padrões de pesquisa para obter os logs para autenticação do IAM. Por exemplo, use { $.param.mechanism = "MONGODB-AWS" } como padrão de pesquisa “Pesquisar todos os fluxos de log”.
Para obter mais informações sobre eventos compatíveis com a auditoria, consulte Auditar eventos do Amazon DocumentDB.
Usar métricas do Amazon CloudWatch
StsGetCallerIdentityCalls: essa métrica mostra quantas chamadas a GetCallerIdentity uma instância do Amazon DocumentDB está fazendo para o endpoint regionalizado AWS Security Token Service (AWS STS). Consulte a especificação de autenticação MONGODB-AWS para saber por que as instâncias do banco de dados precisam fazer chamadas a GetCallerIdentity do STS.
Usar a autenticação do IAM
Quando você não quiser gerenciar o nome de usuário e a senha em seu próprio banco de dados, você pode usar a autenticação do IAM. A autenticação do IAM está disponível somente na versão 5.0 do cluster baseado em instâncias do Amazon DocumentDB.
A autenticação do IAM depende do serviço STS. Recomendamos que você avalie se é possível reduzir sua taxa de conexão ao usar a autenticação do IAM para a conexão e obter uma exceção de limitação do STS.
Para obter mais informações sobre cotas do IAM, consulte IAM e cotas do AWS STS no Guia do usuário do IAM.
Drivers que oferecem suporte ao IAM
Os drivers que suportam o Amazon DocumentDB 5.0 e o mecanismo de autenticação do MONGODB-AWS devem funcionar com a implementação de autenticação do IAM no Amazon DocumentDB.
Importante
Há uma limitação conhecida com os drivers de NodeJS de versão anterior a 6.13.1, que atualmente não têm mais suporte para autenticação de identidades do IAM para o Amazon DocumentDB. Os drivers e ferramentas do Node.js que usam o driver Node.js (por exemplo, mongosh) devem ser atualizados para usar a versão 6.13.1 ou mais recente do driver de Node.js.
Perguntas frequentes sobre autenticação de identidade do IAM
Há alguma amostra que eu possa consultar?
Consulte estas páginas para exemplos de casos de uso e configurações:
Estou recebendo um erro ao usar meu driver Python: “pymongo.errors.configurationError: MONGODB-AWS authentication requires pymongo-auth-aws”. Como posso resolver isso?
Certifique-se de usar a instrução a seguir ao instalar o driver Python com a autenticação do IAM:
pip install 'pymongo[aws]'
Isso instalará as dependências adicionais da AWS necessárias para que a autenticação do IAM funcione.
Minha conexão cairá quando minhas credenciais temporárias de perfil do IAM expirarem?
Não, as credenciais temporárias do IAM são usadas somente para estabelecer conexão e autenticação. Em seguida, todas as autorizações adicionais acontecem no cluster do Amazon DocumentDB. Mesmo que as credenciais do IAM alternem/expirem, a conexão não será interrompida nem ficará obsoleta.