

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

**Topics**
+ [Introdução à autenticação usando usuários e funções do IAM](#iam-identity-auth-get-started)
+ [Configurar tipos de computação da AWS para autenticação no Amazon DocumentDB usando o 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 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
<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 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 `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 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](event-auditing.md).

**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
<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 obter mais informações sobre cotas do IAM, consulte [IAM e cotas do AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) no *Guia 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 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
<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)
+ [Autenticação sem senha para o Amazon DocumentDB usando perfis 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-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.