

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
<a name="iam-identity-auth"></a>

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.

**Topics**
+ [Introdução à autenticação usando usuários e funções do IAM](#iam-identity-auth-get-started)
+ [Configurar AWS tipos de computação para se autenticar no Amazon DocumentDB usando AWS IAM](#iam-identity-auth-compute-types)
+ [Monitorar solicitações de autenticação do IAM](#iam-identity-auth-monitoring)
+ [Usar a autenticação do IAM](#iam-identity-auth-using)
+ [Drivers que oferecem suporte ao IAM](#iam-identity-drivers)
+ [Perguntas frequentes sobre autenticação de identidade do IAM](#iam-identity-auth-faq)

## Introdução à autenticação usando usuários e funções do IAM
<a name="iam-identity-auth-get-started"></a>

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` as`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 AWS tipos de computação para se autenticar no Amazon DocumentDB usando AWS IAM
<a name="iam-identity-auth-compute-types"></a>

**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](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html) 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 para`AssumeRoleWithWebIdentity`:
+ 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](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) no *Guia do usuário do Amazon EKS*.

## Monitorar solicitações de autenticação do IAM
<a name="iam-identity-auth-monitoring"></a>

**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](event-auditing.md).

**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
<a name="iam-identity-auth-using"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) do *usuário do IAM*.

## Drivers que oferecem suporte ao IAM
<a name="iam-identity-drivers"></a>

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
<a name="iam-identity-auth-faq"></a>

**Há alguma amostra que eu possa consultar?**

Consulte estas páginas para exemplos de casos de uso e configurações:
+ [Como usuários humanos podem se autenticar no Amazon DocumentDB usando usuários e perfis do IAM?](https://github.com/aws-samples/amazon-documentdb-samples/tree/master/samples/iam_user_sample_code)
+ [Password-less autenticação no Amazon DocumentDB usando funções do IAM](https://github.com/aws-samples/amazon-documentdb-samples/tree/master/samples/iam_role_sample_code)

**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.