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á.
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 AWS STS usando tokens de segurança temporários. Agora, usuários e aplicativos não administrativos podem usar o mesmo ARN de identidade do IAM ao se conectar a diferentes clusters e outros serviços do Amazon DocumentDB. 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 a identidade do IAM não ARNs é suportada 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 IAM AWS
Para se autenticar usando o AWS IAM, use os seguintes parâmetros de URI: authSource
as $external
e authMechanism
asMONGODB-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 uma função do IAM, vinculada ao ambiente em que está (por exemplo, AWS Lambda função, EC2 instância da Amazon). 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 MONGODB-AWS
o mecanismo de autenticação, os drivers também podem recuperar as credenciais da função do IAM da instância de computação (por exemplo, Amazon EC2, função 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'
Configurando tipos de AWS computação para autenticação no Amazon DocumentDB usando o IAM AWS
Usando a Amazon EC2/AWS Lambda/AWS Fargate
A Amazon EC2 usa as seguintes variáveis de ambiente. Se você tiver uma função do IAM anexada à EC2 instância ou uma função do IAM de execução associada 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 a função do seu código usando a chamada do AWS SDK paraAssumeRoleWithWebIdentity
:
Omita o parâmetro
ProviderID
.Encontre o valor do parâmetro
WebIdentityToken
no 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 registros de auditoria na Amazon CloudWatch e use diferentes padrões de pesquisa para obter os registros da 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.
Usando CloudWatch métricas da Amazon
StsGetCallerIdentityCalls
: essa métrica mostra quantas GetCallerIdentity
chamadas 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 cotas do IAM, consulte IAM e AWS STS cotas 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 Node.js que atualmente não são compatíveis com a autenticação de identidade do IAM para o Amazon DocumentDB. A limitação inclui o shell mais recente do MongoDB, o mongosh. Para oferecer suporte à autenticação de identidade do IAM com o Amazon DocumentDB, recomendamos o uso do shell MongoDB 5.0. O suporte ao driver Node.js será atualizado assim que a limitação for resolvida.
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 - a AWS autenticação requer 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 AWS dependências adicionais 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.