View a markdown version of this page

Autenticação usando identidade do IAM - Amazon DocumentDB

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, os aplicativos cliente não enviam os segredos da senha para o cluster Amazon DocumentDB ao usar o IAM. roles/users Em vez disso, as conexões do cliente são autenticadas AWS STS usando tokens de segurança temporários. Non-administrative Agora, usuários e aplicativos 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 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.

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 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 AWS tipos de computação para se autenticar no Amazon DocumentDB usando 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 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 ambiente AWS_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 MONGODB-AWS autenticação para saber por que as instâncias do banco de dados precisam fazer GetCallerIdentity chamadas 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 Node.js drivers anteriores à versão 6.13.1, que atualmente não são compatíveis com a autenticação de identidade do IAM para o Amazon DocumentDB. Node.js drivers e ferramentas que usam Node.js driver (por exemplo, mongosh) devem ser atualizados para usar a versão 6.13.1 ou Node.js superior do driver.

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 com as credenciais do IAM rotate/expire, a conexão não será interrompida nem ficará obsoleta.