

# Identidades do IAM
<a name="id"></a>

Uma identidade do IAM pode ser associada a uma ou mais políticas que determinam quais ações uma identidade está autorizada a realizar, em quais recursos da AWS e sob quais condições. As identidades do IAM incluem usuários do IAM, grupos do IAM e perfis do IAM. Uma entidade do IAM é um tipo de identidade que representa um usuário humano ou uma workload programática que pode ser autenticada e autorizada para executar ações na Contas da AWS. As entidades do IAM incluem usuários do IAM e perfis do IAM. Para obter as definições de termos comumente usados, consulte [Termos](introduction_identity-management.md#intro-structure-terms).

Você pode federar as identidades existentes fornecidas um provedor de identidades externo. Essas identidades assumirão perfis do IAM para acessar os recursos da AWS. Para obter mais informações, consulte [Federação e provedores de identidade na AWS](id_roles_providers.md).

Você também pode usar o Centro de Identidade do AWS IAM para criar e gerenciar identidades e acesso aos recursos da AWS. Os conjuntos de permissões do IAM Identity Center criam automaticamente os perfis do IAM necessários para fornecer acesso aos recursos. Para obter mais informações, consulte [What is IAM Identity Center?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)

O Usuário raiz da conta da AWS é uma entidade principal do Conta da AWS que é criada quando a sua Conta da AWS é criada. O usuário-raiz tem acesso a todos os serviços e recursos da AWS na conta. Para obter mais informações, consulte [Usuário-raiz do IAM](#id_root). 

**nota**  
Siga as [práticas recomendadas de segurança no IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/best-practices-use-cases.html) quando trabalhar com identidades do IAM. 
Siga as [práticas recomendadas de usuário-raiz da sua Conta da AWS](root-user-best-practices.md) quando trabalhar com o usuário-raiz.
Se tiver problemas para iniciar uma sessão, consulte [Sign in to the Console de gerenciamento da AWS](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html). 

## Usuário-raiz do IAM
<a name="id_root"></a>

Ao criar uma Conta da AWS, você começa com uma identidade de login que tenha acesso completo a todos os recursos e Serviços da AWS na conta. Essa identidade é chamada deConta da AWS* usuário-raiz*. Para obter mais informações, consulte [Usuário-raiz da conta da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html).

## Usuários do IAM
<a name="id_iam-users"></a>

Um *usuário do IAM* é uma identidade na Conta da AWS que tem permissões específicas para uma única pessoa ou aplicação. Para obter mais informações, consulte [Usuários do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html). 

## Grupos de usuários do IAM
<a name="id_iam-groups"></a>

Um *grupo de usuários do IAM* é uma identidade que especifica um conjunto de usuários do IAM. Para obter mais informações, consulte [Grupos de usuários](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html).

## Perfis do IAM
<a name="id_iam-roles"></a>

Um *perfil do IAM* é uma identidade na Conta da AWS que tem permissões específicas. Ele se assemelha a um usuário do IAM, entretanto, não está associado a uma pessoa específica. Para obter mais informações, consulte os [perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

# Usuário raiz da conta da AWS
<a name="id_root-user"></a>

Ao criar uma conta da Amazon Web Services (AWS) pela primeira vez, você começa com uma única identidade de login que tem acesso total a todos os produtos e recursos da AWS na conta. Essa identidade é chamada de *usuário raiz* da conta da AWS. O endereço de e-mail e a senha que você usou para criar sua Conta da AWS são as credenciais que você usa para fazer login como usuário-raiz.
+ Use o usuário-raiz apenas para executar as tarefas que exigem permissões de nível raiz. Para obter a lista completa das tarefas que exigem fazer login como usuário-raiz, consulte [Tarefas que exigem credenciais de usuário-raiz](#root-user-tasks). 
+ Siga as [Práticas recomendadas para o usuário-raiz para sua Conta da AWS](root-user-best-practices.md).
+ Se tiver problemas para iniciar uma sessão, consulte [Sign in to the Console de gerenciamento da AWS](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html).

**Importante**  
É altamente recomendável não usar o usuário-raiz para tarefas diárias e seguir as [melhores práticas do usuário-raiz para suas Conta da AWS](root-user-best-practices.md). Proteja as credenciais do usuário-raiz e use-as para executar as tarefas que somente ele puder executar. Para obter a lista completa das tarefas que exigem fazer login como usuário-raiz, consulte [Tarefas que exigem credenciais de usuário-raiz](#root-user-tasks). 

Embora a MFA seja aplicada para usuários-raiz por padrão, ela exige uma ação do cliente para adicionar a MFA durante a criação inicial da conta, ou conforme solicitado durante o login. Para obter mais informações sobre como usar a MFA para proteger o usuário-raiz, consulte [Autenticação multifator para Usuário raiz da conta da AWS](enable-mfa-for-root.md).

## Gerencie centralmente o acesso raiz para contas-membro
<a name="id_root-user-access-management"></a>

Para ajudá-lo a gerenciar credenciais em grande escala, é possível proteger centralmente o acesso às credenciais de usuário-raiz para contas-membro no AWS Organizations. Ao habilitar o AWS Organizations, você combina todas as suas contas do AWS em uma organização para gerenciamento central. A centralização do acesso raiz permite que você remova as credenciais de usuário-raiz e execute as tarefas privilegiadas a seguir nas contas-membro.

**Remoção de credenciais de usuário-raiz de conta-membro**  
Depois de [centralizar o acesso raiz para contas-membro](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-enable-root-access.html), será possível optar por excluir as credenciais de usuário-raiz das contas-membro no seu Organizations. Você pode remover a senha do usuário-raiz, as chaves de acesso e os certificados de assinatura e desativar a autenticação multifator (MFA). As novas contas que você criar no Organizations não terão credenciais de usuário-raiz por padrão. As contas-membro não podem fazer login com o usuário-raiz nem realizar a recuperação da senha do usuário-raiz, a menos que a recuperação de conta esteja habilitada.

**Realização de tarefas privilegiadas que exijam credenciais de usuário-raiz**  
Algumas tarefas poderão ser executadas apenas quando você fizer login como usuário-raiz de uma conta. Algumas dessas [Tarefas que exigem credenciais de usuário-raiz](#root-user-tasks) podem ser executadas pela conta de gerenciamento ou pelo administrador delegado do IAM. Para saber mais sobre como realizar ações privilegiadas em contas-membro, consulte [Execução de uma tarefa privilegiada](id_root-user-privileged-task.md).

**Habilitar a recuperação da conta do usuário-raiz**  
Se você precisar recuperar as credenciais de usuário-raiz de uma conta-membro, a conta de gerenciamento do Organizations ou o administrador delegado podem realizar a tarefa privilegiada **Permitir recuperação de senha**. A pessoa com acesso à caixa de entrada de e-mail do usuário-raiz da conta-membro pode [redefinir a senha do usuário-raiz](https://docs.aws.amazon.com/IAM/latest/UserGuide/reset-root-password.html) para recuperar as credenciais do usuário-raiz. Recomendamos excluir as credenciais de usuário-raiz depois de concluir a tarefa que requer acesso ao usuário-raiz.

# Centralização de acesso raiz para contas-membro
<a name="id_root-enable-root-access"></a>

As credenciais de usuário-raiz são as credenciais iniciais atribuídas a cada Conta da AWS que tenha acesso completo a todos os serviços e recursos da AWS na conta. Ao habilitar o AWS Organizations, você combina todas as suas contas do AWS em uma organização para gerenciamento central. Cada conta-membro tem seu próprio usuário-raiz com permissões padrão para realizar qualquer ação na conta-membro. Recomendamos que você proteja centralmente as credenciais de usuário-raiz das Contas da AWS gerenciadas usando o AWS Organizations para impedir a recuperação e o acesso às credenciais de usuário-raiz em grande escala.

Depois de centralizar o acesso raiz, é possível optar por excluir as credenciais de usuário-raiz das contas-membro em sua organização. Você pode remover a senha do usuário-raiz, as chaves de acesso e os certificados de assinatura e desativar a autenticação multifator (MFA). As novas contas que você criar no AWS Organizations não terão credenciais de usuário-raiz por padrão. As contas dos membros não podem fazer login com o usuário-raiz nem realizar a recuperação da senha do usuário-raiz.

**nota**  
Embora algumas [Tarefas que exigem credenciais de usuário-raiz](id_root-user.md#root-user-tasks) possam ser executadas pela conta gerencial ou pelo administrador delegado do IAM, algumas tarefas só podem ser executadas quando você fizer login como usuário-raiz de uma conta.  
Se precisar recuperar as credenciais de usuário-raiz de uma conta de membro para realizar uma dessas tarefas, siga as etapas em [Execução de uma tarefa privilegiada](id_root-user-privileged-task.md) e selecione **Permitir recuperação de senha**. A pessoa com acesso à caixa de entrada de e-mail do usuário-raiz da conta de membro poderá [redefinir a senha do usuário-raiz](https://docs.aws.amazon.com/IAM/latest/UserGuide/reset-root-password.html) e fazer login no usuário-raiz da conta de membro.  
 Recomendamos excluir as credenciais de usuário-raiz depois de concluir a tarefa que requer acesso ao usuário-raiz.

## Pré-requisitos
<a name="enable-root-access-management_prerequisite"></a>

Antes de centralizar o acesso raiz, você deve ter uma conta configurada com as configurações a seguir:
+ Você deve ter as seguintes permissões do IAM:
  + `iam:GetAccessKeyLastUsed`
  + `iam:GetAccountSummary`
  + `iam:GetLoginProfile`
  + `iam:GetUser`
  + `iam:ListAccessKeys`
  + `iam:ListMFADevices`
  + `iam:ListSigningCertificates`
  + `sts:AssumeRoot`
**nota**  
Para auditar o status de credencial de usuário-raiz de uma conta de membro, você pode usar a política gerenciada [IAMAuditRootUserCredentials](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMAuditRootUserCredentials) AWS para reduzir o escopo das permissões ao realizar uma tarefa privilegiada em uma conta de membro AWS Organizations, ou usar qualquer política com acesso a `iam:GetAccountSummary`.  
Para gerar o relatório de informações de credenciais de usuário-raiz, outras políticas só precisam da ação `iam:GetAccountSummary` para produzir a mesma saída. Você também pode listar ou obter informações individuais de credenciais de usuário-raiz, incluindo:  
Se há uma senha de usuário-raiz
Se há uma chave de acesso de usuário-raiz e quando ela foi usada pela última vez
Se o usuário-raiz possui certificados de assinatura associados
Dispositivos de MFA associados ao usuário-raiz
Lista do status consolidado das credenciais do usuário-raiz
+ Você deve gerenciar suas Contas da AWS no [AWS Organizations](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_introduction.html).
+ É preciso ter as permissões a seguir para habilitar esse atributo na sua organização:
  + `iam:EnableOrganizationsRootCredentialsManagement`
  + `iam:EnableOrganizationsRootSessions`
  + `iam:ListOrganizationsFeatures`
  + `organizations:EnableAwsServiceAccess`
  + `organizations:ListAccountsForParent`
  + `organizations:RegisterDelegatedAdministrator` 
+ Para garantir a funcionalidade ideal do console, recomendamos habilitar as seguintes permissões adicionais:
  + `organizations:DescribeAccount`
  + `organizations:DescribeOrganization`
  + `organizations:ListAWSServiceAccessForOrganization`
  + `organizations:ListDelegatedAdministrators`
  + `organizations:ListOrganizationalUnitsForParent`
  + `organizations:ListParents`
  + `organizations:ListTagsForResource`

## Habilitação do acesso raiz centralizado (console)
<a name="enable-root-access-console"></a>

**Para habilitar esse atributo para contas-membro no Console de gerenciamento da AWS**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console, escolha **Gerenciar acesso raiz** e, em seguida, selecione **Habilitar**.
**nota**  
Se você vir que o **Gerenciamento de acesso raiz está desabilitado**, habilite o acesso confiável para o AWS Identity and Access Management no AWS Organizations. Para obter detalhes, consulte [AWS IAM e o AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-iam.html) no *Guia do usuário do AWS Organizations*.

1. Na seção Capacidades para habilitar, escolha quais atributos habilitar.
   + Selecione **Gerenciamento de credenciais de raiz** para permitir que a conta de gerenciamento e o administrador delegado do IAM excluam as credenciais de usuário-raiz das contas-membro. Você deve habilitar as Ações de usuário-raiz privilegiado nas contas-membro para permitir que as contas-membro recuperem suas credenciais de usuário-raiz após serem excluídas.
   + Selecione **Ações de usuário-raiz privilegiado em contas-membro** para permitir que a conta de gerenciamento e o administrador delegado do IAM realizem determinadas tarefas que exijam credenciais de usuário-raiz.

1. (Opcional) Insira o ID da conta do **Administrador delegado** que está autorizado a gerenciar o acesso de usuário-raiz e a realizar ações privilegiadas nas contas-membro. Recomendamos uma conta destinada a fins de segurança ou gerenciamento.

1. Escolha **Habilitar**.

## Habilitação do acesso raiz centralizado (AWS CLI)
<a name="enable-root-access-cli"></a>

**Para habilitar o acesso raiz centralizado a partir da AWS Command Line Interface (AWS CLI)**

1. Se você ainda não habilitou o acesso confiável para o AWS Identity and Access Management no AWS Organizations, use o comando a seguir: [aws organizations enable-aws-service-access](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/organizations/enable-aws-service-access.html).

1. Use o comando a seguir para permitir que a conta de gerenciamento e o administrador delegado do IAM excluam as credenciais de usuário-raiz das contas-membro: [aws iam enable-organizations-root-credentials-management](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-organizations-root-credentials-management.html).

1. Use o comando a seguir para permitir que a conta de gerenciamento e o administrador delegado do IAM realizem tarefas que exijam credenciais de usuário-raiz: [aws iam enable-organizations-root-sessions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-organizations-root-sessions.html).

1. (Opcional) Use o comando a seguir para registrar um administrador delegado: [aws organizations register-delegated-administrator](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/organizations/register-delegated-administrator.html).

   O exemplo a seguir atribui a conta 111111111111 como administrador delegado do serviço IAM.

   ```
   aws organizations register-delegated-administrator 
   --service-principal iam.amazonaws.com
   --account-id 111111111111
   ```

## Habilitação do acesso raiz centralizado (AWS API)
<a name="enable-root-access-api"></a>

**Para habilitar o acesso raiz centralizado a partir da AWS API**

1. Se você ainda não habilitou o acesso confiável para o AWS Identity and Access Management no AWS Organizations, use o comando a seguir: [EnableAWSServiceAccess](https://docs.aws.amazon.com/organizations/latest/APIReference/API_EnableAWSServiceAccess.html).

1. Use o comando a seguir para permitir que a conta de gerenciamento e o administrador delegado do IAM excluam as credenciais de usuário-raiz das contas-membro: [EnableOrganizationsRootCredentialsManagement](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableOrganizationsRootCredentialsManagement.html).

1. Use o comando a seguir para permitir que a conta de gerenciamento e o administrador delegado do IAM realizem tarefas que exijam credenciais de usuário-raiz: [EnableOrganizationsRootSessions](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableOrganizationsRootSessions.html).

1. (Opcional) Use o comando a seguir para registrar um administrador delegado: [RegisterDelegatedAdministrator](https://docs.aws.amazon.com/organizations/latest/APIReference/API_RegisterDelegatedAdministrator.html).

## Próximas etapas
<a name="enable-root-access_next-steps"></a>

Depois de proteger centralmente as credenciais privilegiadas para as contas-membro em sua organização, consulte [Execução de uma tarefa privilegiada](id_root-user-privileged-task.md) para realizar ações privilegiadas em uma conta-membro.

# Execução de uma tarefa privilegiada em uma conta-membro do AWS Organizations
<a name="id_root-user-privileged-task"></a>

A conta gerencial da AWS Organizations ou uma conta de administrador delegado do IAM podem executar algumas tarefas privilegiadas em contas de membro que, de outra forma, exigiriam credenciais de usuário-raiz. Com o acesso raiz centralizado, essas tarefas são executadas por meio de sessões privilegiadas de curto prazo. Essas sessões fornecem credenciais temporárias com escopo para ações privilegiadas específicas, sem exigir o login do usuário-raiz na conta de membro.

Depois de iniciar uma sessão privilegiada, será possível excluir uma política de bucket do Amazon S3 mal configurada, excluir uma política de fila do Amazon SQS mal configurada, excluir as credenciais de usuário-raiz de uma conta-membro e reativar as credenciais de usuário-raiz de uma conta-membro.

**nota**  
Para usar o acesso raiz centralizado, você deve fazer login por meio de uma conta gerencial ou uma conta de administrador delegado com um usuário ou perfil do IAM com a permissão `sts:AssumeRoot` explicitamente concedida. Você pode usar credenciais usuário-raiz para chamar `sts:AssumeRoot`.

## Pré-requisitos
<a name="root-user-privileged-task_prerequisite"></a>

Antes de iniciar uma sessão privilegiada, é preciso ter as configurações a seguir:
+ Você habilitou o acesso raiz centralizado em sua organização. Para obter etapas para ativar esse atributo, consulte [Centralização de acesso raiz para contas-membro](id_root-enable-root-access.md).
+ Sua conta de gerenciamento ou conta de administrador delegado tem as permissões a seguir: `sts:AssumeRoot`

## Realização de uma ação privilegiada em uma conta-membro (console)
<a name="root-user-privileged-task_action-console"></a>

**Para iniciar uma sessão para ação privilegiada em uma conta-membro no Console de gerenciamento da AWS**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console, escolha **Gerenciamento de acesso raiz**.

1. Selecione um nome na lista de contas-membro e escolha **Realizar ação privilegiada**.

1. Escolha a ação privilegiada que você deseja realizar na conta-membro.
   + Selecione **Excluir política de bucket do Amazon S3** para remover uma política de bucket mal configurada que impeça que todas as entidades principais acessem o bucket do Amazon S3.

     1. Escolha **Pesquisar no S3** para selecionar um nome dentre os buckets pertencentes à conta-membro, e selecione **Escolher**.

     1. Escolha **Excluir política de bucket**.

     1. Use o console do Amazon S3 para corrigir a política de bucket após excluir a política mal configurada. Para obter mais informações, consulte [Adição de uma política de bucket com o console do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) no *Guia do usuário do Amazon S3*.
   + Selecione **Excluir política do Amazon SQS** para excluir uma política baseada em recursos do Amazon Simple Queue Service que negue a todas as entidade principais acesso a uma fila do Amazon SQS.

     1. Insira o nome da fila em **Nome da fila do SQS** e selecione **Excluir política do SQS**.

     1. Use o console do Amazon SQS para corrigir a política de fila após excluir a política mal configurada. Para obter mais informações, consulte [Configuração de uma política de acesso no Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-add-permissions.html), no *Guia do desenvolvedor do Amazon SQS*.
   + Selecione **Excluir credenciais de usuário-raiz** para remover o acesso raiz de uma conta-membro. A exclusão das credenciais do usuário-raiz removerá a senha do usuário-raiz, as chaves de acesso e os certificados de assinatura e desativará a autenticação multifator (MFA) da conta do membro.

     1. Escolha **Excluir credenciais de usuário-raiz**.
   + Selecione **Permitir recuperação de senha** para recuperar as credenciais de usuário-raiz para uma conta-membro.

     Essa opção só estará disponível quando a conta-membro não tiver credenciais de usuário-raiz.

     1. Escolha **Permitir recuperação de senha**.

     1. Depois de realizar essa ação privilegiada, a pessoa com acesso à caixa de entrada de e-mail do usuário-raiz da conta-membro poderá [redefinir a senha do usuário-raiz](https://docs.aws.amazon.com/IAM/latest/UserGuide/reset-root-password.html) e fazer login no usuário-raiz da conta-membro.

## Realização de uma ação privilegiada em uma conta-membro (AWS CLI)
<a name="root-user-privileged-task_action-cli"></a>

**Para iniciar uma sessão para ação privilegiada em uma conta-membro a partir da AWS Command Line Interface**

1. Use o comando a seguir para assumir uma sessão de usuário-raiz: [aws sts assume-root](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/assume-root.html).
**nota**  
Não há suporte para o endpoint global em `sts:AssumeRoot`. Você deve enviar essa solicitação a um endpoint regional do AWS STS. Para obter mais informações, consulte [Gerenciar o AWS STS em uma Região da AWS](id_credentials_temp_enable-regions.md).

   Ao iniciar uma sessão de usuário-raiz privilegiado para uma conta-membro, você deverá definir `task-policy-arn` estabelecer o escopo da sessão para a ação privilegiada a ser executada durante a sessão. É possível usar uma das políticas gerenciadas pela AWS a seguir para definir o escopo das ações de sessão privilegiada.
   + [IAMAuditRootUserCredentials](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMAuditRootUserCredentials)
   + [IAMCreateRootUserPassword](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMCreateRootUserPassword)
   + [IAMDeleteRootUserCredentials](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMDeleteRootUserCredentials)
   + [S3UnlockBucketPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-S3UnlockBucketPolicy)
   + [SQSUnlockQueuePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-SQSUnlockQueuePolicy)

   Para limitar as ações que uma conta de gerenciamento ou administrador delegado pode realizar durante uma sessão de usuário-raiz privilegiado, é possível usar a chave de condição do AWS STS [sts:TaskPolicyArn](reference_policies_iam-condition-keys.md#ck_taskpolicyarn).

    No exemplo a seguir, o administrador delegado assume o usuário-raiz para excluir as credenciais de usuário-raiz da conta do membro de ID *111122223333*. 

   ```
   aws sts assume-root \
     --target-principal 111122223333 \
     --task-policy-arn arn=arn:aws:iam::aws:policy/root-task/IAMDeleteRootUserCredentials \
     --duration-seconds 900
   ```

1. Use `SessionToken`, `AccessKeyId` e `SecretAccessKey` da resposta para realizar ações privilegiadas na conta-membro. É possível omitir o nome de usuário e a senha na solicitação para usar como padrão a conta-membro.
   + **Verificação do status das credenciais de usuário-raiz**. Use os comandos a seguir para verificar o status das credenciais de usuário-raiz de uma conta-membro.
     + [get-user](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-user.html)
     + [get-login-profile](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-login-profile.html)
     + [list-access-keys](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-access-keys.html)
     + [list-signing-certificates](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-signing-certificates.html)
     + [list-mfa-devices](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-mfa-devices.html)
     + [get-access-key-last-used](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-access-key-last-used.html)
   + **Exclusão das credenciais de usuário-raiz**. Use os comandos a seguir para excluir o acesso raiz. Você pode remover a senha do usuário-raiz, as chaves de acesso e os certificados de assinatura e desativar a autenticação multifator (MFA) para remover todo o acesso e a recuperação do usuário-raiz.
     + [delete-login-profile](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/delete-login-profile.html)
     + [delete-access-key](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/delete-access-key.html)
     + [delete-signing-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/delete-signing-certificate.html)
     + [deactivate-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/deactivate-mfa-device.html)
   + **Exclusão de política de bucket do Amazon S3**. Use os comandos a seguir para ler, editar e excluir uma política de bucket mal configurada que impeça que todas as entidades principais acessem o bucket do Amazon S3.
     + [list-buckets](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/list-buckets.html)
     + [get-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-policy.html)
     + [put-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-policy.html)
     + [delete-bucket-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-bucket-policy.html)
   + **Exclusão de política do Amazon SQS**. Use os comandos a seguir para visualizar e excluir uma política baseada em recursos do Amazon Simple Queue Service que negue a todas as entidade principais acesso a uma fila do Amazon SQS.
     + [list-queues](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/list-queues.html)
     + [get-queue-url](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/get-queue-url.html)
     + [get-queue-attributes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/get-queue-attributes.html)
     + [set-queue-attributes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/set-queue-attributes.html)
   + **Permissão para recuperação de senha**. Use os comandos a seguir para visualizar o nome do usuário e recuperar as credenciais de usuário-raiz para uma conta-membro.
     + [get-login-profile](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/get-login-profile.html)
     + [create-login-profile](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-login-profile.html)

## Realização de uma ação privilegiada em uma conta-membro (AWS API)
<a name="root-user-privileged-task_action-api"></a>

**Para iniciar uma sessão para ação privilegiada em uma conta-membro a partir da AWS API**

1. Use o comando a seguir para assumir uma sessão de usuário-raiz: [AssumeRoot](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoot.html).
**nota**  
Não há suporte para o endpoint global para AssumeRoot. Você deve enviar essa solicitação a um endpoint regional do AWS STS. Para obter mais informações, consulte [Gerenciar o AWS STS em uma Região da AWS](id_credentials_temp_enable-regions.md).

   Ao iniciar uma sessão de usuário-raiz privilegiado para uma conta-membro, você deverá definir `TaskPolicyArn` estabelecer o escopo da sessão para a ação privilegiada a ser executada durante a sessão. É possível usar uma das políticas gerenciadas pela AWS a seguir para definir o escopo das ações de sessão privilegiada.
   + [IAMAuditRootUserCredentials](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMAuditRootUserCredentials)
   + [IAMCreateRootUserPassword](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMCreateRootUserPassword)
   + [IAMDeleteRootUserCredentials](security-iam-awsmanpol.md#security-iam-awsmanpol-IAMDeleteRootUserCredentials)
   + [S3UnlockBucketPolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-S3UnlockBucketPolicy)
   + [SQSUnlockQueuePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-SQSUnlockQueuePolicy)

   Para limitar as ações que uma conta de gerenciamento ou administrador delegado pode realizar durante uma sessão de usuário-raiz privilegiado, é possível usar a chave de condição do AWS STS [sts:TaskPolicyArn](reference_policies_iam-condition-keys.md#ck_taskpolicyarn).

   No exemplo a seguir, o administrador delegado assume o usuário-raiz para ler, editar e excluir uma política baseada em recursos mal configurada para um bucket do Amazon S3 para a conta-membro de ID *111122223333*.

   ```
   https://sts.us-east-2.amazonaws.com/
     ?Version=2011-06-15
     &Action=AssumeRoot
     &TargetPrincipal=111122223333
     &PolicyArns.arn=arn:aws:iam::aws:policy/root-task/S3UnlockBucketPolicy 
     &DurationSeconds 900
   ```

1. Use `SessionToken`, `AccessKeyId` e `SecretAccessKey` da resposta para realizar ações privilegiadas na conta-membro. É possível omitir o nome de usuário e a senha na solicitação para usar como padrão a conta-membro.
   + **Verificação do status das credenciais de usuário-raiz**. Use os comandos a seguir para verificar o status das credenciais de usuário-raiz de uma conta-membro.
     + [GetUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html)
     + [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)
     + [ListAccessKeys](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html)
     + [ListSigningCertificates](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSigningCertificates.html)
     + [ListMFADevices](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADevices.html)
     + [GetAccessKeyLastUsed](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html)
   + **Exclusão das credenciais de usuário-raiz**. Use os comandos a seguir para excluir o acesso raiz. Você pode remover a senha do usuário-raiz, as chaves de acesso e os certificados de assinatura e desativar a autenticação multifator (MFA) para remover todo o acesso e a recuperação do usuário-raiz.
     + [DeleteLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteLoginProfile.html)
     + [DeleteAccessKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html)
     + [DeleteSigningCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSigningCertificate.html)
     + [DeactivateMfaDevice](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html)
   + **Exclusão de política de bucket do Amazon S3**. Use os comandos a seguir para ler, editar e excluir uma política de bucket mal configurada que impeça que todas as entidades principais acessem o bucket do Amazon S3.
     + [ListBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)
     + [GetBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicy.html)
     + [PutBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketPolicy.html)
     + [DeleteBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketPolicy.html)
   + **Exclusão de política do Amazon SQS**. Use os comandos a seguir para visualizar e excluir uma política baseada em recursos do Amazon Simple Queue Service que negue a todas as entidade principais acesso a uma fila do Amazon SQS.
     + [ListQueues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ListQueues.html)
     + [GetQueueUrl](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueUrl.html)
     + [GetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_GetQueueAttributes.html)
     + [SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)
   + **Permissão para recuperação de senha**. Use os comandos a seguir para visualizar o nome do usuário e recuperar as credenciais de usuário-raiz para uma conta-membro.
     + [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)
     + [CreateLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateLoginProfile.html)

# Autenticação multifator para Usuário raiz da conta da AWS
<a name="enable-mfa-for-root"></a>

**Importante**  
A AWS recomenda usar uma chave de acesso ou chave de segurança para MFA na AWS sempre que possível, pois elas são mais resistentes a ataques como phishing. Para obter mais informações, consulte [Chaves de acesso e chaves de segurança](#passkeys-security-keys-for-root).

A autenticação multifator (MFA) é um mecanismo simples e eficaz para aumentar sua segurança. O primeiro fator, sua senha, é um segredo que você memoriza, também conhecido como fator de conhecimento. Outros fatores podem ser fatores de posse (algo que você tem, como uma chave de segurança) ou fatores de inerência (algo que você é, como um escaneamento biométrico). Para obter mais segurança, recomendamos veementemente que você configure a autenticação multifator (MFA) para ajudar a proteger seus recursos da AWS.

**nota**  
Todos os tipos de Conta da AWS (contas autônomas, de gerenciamento e de membros) exigem que a MFA seja configurada para o usuário-raiz. Os usuários precisarão registrar a MFA em até 35 dias após a primeira tentativa de login, para acessar o Console de gerenciamento da AWS, se a MFA ainda não estiver habilitada.

É possível habilitar a MFA para o Usuário raiz da conta da AWS ou para usuários do IAM. Quando você habilitar a MFA para o usuário-raiz, ela afetará somente as credenciais do usuário-raiz. Para obter mais informações sobre como habilitar a MFA para seus usuários do IAM, consulte [Código da autenticação multifator no IAM da AWS](id_credentials_mfa.md).

**nota**  
As Contas da AWS gerenciadas usando o AWS Organizations podem ter a opção de [gerenciar o acesso raiz de forma centralizada](id_root-user.md#id_root-user-access-management) das contas de membros para evitar a recuperação de credenciais e o acesso em grande escala. Se essa opção estiver habilitada, você poderá excluir as credenciais de usuário-raiz das contas de membros, incluindo senhas e MFA, impedindo efetivamente o login como usuário-raiz, a recuperação de senha ou a configuração da MFA. Como alternativa, se você preferir manter os métodos de login baseados em senha, proteja a conta registrando a MFA para aprimorar a proteção da conta.

Antes de habilitar a MFA para seu usuário-raiz, revise e [atualize as configurações e as informações de contato da sua conta](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-root-user.html) para verificar se você tem acesso ao e-mail e ao número de telefone. Se o dispositivo com MFA for perdido, roubado ou não estiver funcionando, você ainda poderá fazer login como usuário-raiz verificando sua identidade usando esse e-mail e número de telefone. Para saber como fazer login usando fatores alternativos de autenticação, consulte [Recuperar uma identidade protegida por MFA no IAM](id_credentials_mfa_lost-or-broken.md). Para desabilitar este recurso, entre em contato com [AWS Support](https://console.aws.amazon.com/support/home#/). 

A AWS é compatível com os seguintes tipos de MFA para seu usuário-raiz:
+ [Chaves de acesso e chaves de segurança](#passkeys-security-keys-for-root)
+ [Aplicações de autenticador virtual](#virtual-auth-apps-for-root)
+ [Tokens físicos de TOTP](#hardware-totp-token-for-root)

## Chaves de acesso e chaves de segurança
<a name="passkeys-security-keys-for-root"></a>

A AWS Identity and Access Management é compatível com chaves de acesso e chaves de segurança para MFA. Com base nos padrões FIDO, chaves de acesso usam criptografia de chave pública para proporcionar uma autenticação forte e resistente a phishing que é mais segura do que as senhas. A AWS é compatível com dois tipos de chaves de acesso: chaves de acesso vinculadas a dispositivo (chaves de segurança) e chaves de acesso sincronizadas.
+ **Chaves de segurança**: dispositivos físicos, como a YubiKey, usados como segundo fator de autenticação. Uma única chave de segurança é compatível com várias contas de usuário-raiz e usuários do IAM. 
+ **Chaves de acesso sincronizadas**: usam gerenciadores de credenciais de provedores como Google, Apple, contas da Microsoft e serviços de terceiros, como 1Password, Dashlane e Bitwarden, como segundo fator.

É possível usar autenticadores biométricos integrados, como Touch ID em Apple MacBooks, para desbloquear seu gerenciador de credenciais e fazer login na AWS. As chaves de acesso são criadas com o provedor escolhido usando sua impressão digital, rosto ou PIN do dispositivo. É possível usar uma chave de acesso de autenticação entre dispositivos (CDA) de um dispositivo, como um dispositivo móvel ou uma chave de segurança de hardware, para entrar em outro dispositivo, como um laptop. Para obter mais informações, consulte [autenticação entre dispositivos](https://passkeys.dev/docs/reference/terms/#cross-device-authentication-cda) (CDA).

É possível sincronizar chaves de acesso em seus dispositivos para facilitar o login na AWS e aprimorar a usabilidade e a capacidade de recuperação. Para obter mais informações sobre como habilitar chaves de acesso e chaves de segurança, consulte [Habilitar uma chave de acesso ou uma chave de segurança para o usuário-raiz (console)](enable-fido-mfa-for-root.md).

A FIDO Alliance conta com uma lista de todos os [produtos certificados pela FIDO](https://fidoalliance.org/certification/fido-certified-products/) compatíveis com as especificações da FIDO.

## Aplicações de autenticador virtual
<a name="virtual-auth-apps-for-root"></a>

Uma aplicação de autenticador virtual funciona em um telefone ou outro dispositivo e emula um dispositivo físico. As aplicações de autenticação virtual implementam o algoritmo de [senha de uso único com marcação temporal](https://datatracker.ietf.org/doc/html/rfc6238) (TOTP) e oferecem suporte a vários tokens em um único dispositivo. O usuário deve digitar um código válido no dispositivo quando solicitado durante o processo de acesso. Cada token atribuído a um usuário deve ser exclusivo. O usuário não pode digitar um código do token de outro usuário para se autenticar.

Recomendamos que você use um dispositivo MFA virtual ao mesmo tempo em que aguarda a aprovação da compra do hardware ou enquanto aguarda a chegada do hardware. Para obter uma lista de algumas aplicações compatíveis que podem ser usadas como dispositivos de MFA virtuais, consulte [Autenticação multifator (MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1). Para obter instruções sobre como configurar um dispositivo MFA virtual com a AWS, consulte [Habilitar um dispositivo MFA virtual para o usuário-raiz (console)](enable-virt-mfa-for-root.md).

## Tokens físicos de TOTP
<a name="hardware-totp-token-for-root"></a>

Um dispositivo físico gera um código numérico de seis dígitos baseado no [algoritmo de senha de uso único com marcação temporal (TOTP)](https://datatracker.ietf.org/doc/html/rfc6238). O usuário deve digitar um código válido no dispositivo em uma segunda página da web durante o login. Cada dispositivo MFA atribuído a um usuário deve ser exclusivo. Um usuário não pode digitar um código do dispositivo de outro usuário para ser autenticado. Para obter informações sobre os dispositivos físicos de MFA compatíveis, consulte [autenticação multifator (MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1). Para obter instruções sobre como configurar um token de hardware TOTP com a AWS, consulte [Habilitar um token de hardware TOTP para o usuário-raiz (console)](enable-hw-mfa-for-root.md).

Se você quiser usar um dispositivo físico de MFA, recomendamos que use chaves de segurança FIDO como alternativa aos dispositivos físicos de TOTP. As chaves de segurança FIDO proporcionam a vantagem de não usar bateria, ter resistência a phishing e comportar vários usuários-raiz e usuários do IAM em um único dispositivo para maior segurança.

**Topics**
+ [

## Chaves de acesso e chaves de segurança
](#passkeys-security-keys-for-root)
+ [

## Aplicações de autenticador virtual
](#virtual-auth-apps-for-root)
+ [

## Tokens físicos de TOTP
](#hardware-totp-token-for-root)
+ [

# Habilitar uma chave de acesso ou uma chave de segurança para o usuário-raiz (console)
](enable-fido-mfa-for-root.md)
+ [

# Habilitar um dispositivo MFA virtual para o usuário-raiz (console)
](enable-virt-mfa-for-root.md)
+ [

# Habilitar um token de hardware TOTP para o usuário-raiz (console)
](enable-hw-mfa-for-root.md)

# Habilitar uma chave de acesso ou uma chave de segurança para o usuário-raiz (console)
<a name="enable-fido-mfa-for-root"></a>

Você só pode configurar e habilitar uma chave de acesso para o seu usuário-raiz no Console de gerenciamento da AWS, não na AWS CLI e nem na API da AWS. <a name="enable_fido_root"></a>

**Para habilitar uma chave de acesso ou uma chave de segurança para seu usuário-raiz do IAM (console)**

1. Abra o [AWS Management Console](https://console.aws.amazon.com/) e inicie a sessão usando suas credenciais de usuário-raiz.

   Para obter instruções, consulte [Sign in to the Console de gerenciamento da AWS as the root user](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) no *Início de Sessão da AWS User Guide*.

1. No lado direito da barra de navegação, selecione o nome da conta e escolha **Security credentials** (Credenciais de segurança).  
![\[Credenciais de segurança no menu de navegação\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. **Na página **Minhas credenciais de segurança** do usuário-raiz, em **Autenticação multifator (MFA)**, escolha Atribuir dispositivo de MFA**.

1. **Na página de **nome do dispositivo de MFA**, insira o **nome do dispositivo**, escolha **Chave de acesso ou Chave de segurança** e, em seguida, escolha Avançar**.

1. Em **Configurar dispositivo**, configure sua chave de acesso. Crie uma chave de acesso com dados biométricos, como seu rosto ou impressão digital, com um pin do dispositivo ou inserindo a chave de segurança FIDO na porta USB do seu computador e tocando nela.

1. Siga as instruções no seu navegador para escolher um provedor de chave de acesso ou onde você deseja armazená-la para uso em todos os seus dispositivos. 

1. Escolha **Continuar**.

Agora, você registrou sua chave de acesso para uso com a AWS. A próxima vez que usar as credenciais de usuário-raiz para fazer login, você deverá se autenticar com sua chave de acesso para concluir o processo de login.

Para obter ajuda na solução de problemas de chaves de segurança FIDO, consulte [Solucionar problemas de chaves de acesso e chaves de segurança FIDO](troubleshoot_mfa-fido.md).

# Habilitar um dispositivo MFA virtual para o usuário-raiz (console)
<a name="enable-virt-mfa-for-root"></a>

É possível usar o Console de gerenciamento da AWS para configurar e habilitar um dispositivo com MFA virtual para seu usuário-raiz. Para habilitar dispositivos com MFA para a Conta da AWS, você deve estar conectado à AWS usando suas credenciais de usuário-raiz. 

**Para configurar e habilitar um dispositivo com MFA virtual para uso com seu usuário-raiz (console)**

1. Abra o [AWS Management Console](https://console.aws.amazon.com/) e inicie a sessão usando suas credenciais de usuário-raiz.

   Para obter instruções, consulte [Sign in to the Console de gerenciamento da AWS as the root user](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) no *Início de Sessão da AWS User Guide*.

1. No lado direito da barra de navegação, escolha o nome de sua conta e escolha **Security credentials** (Credenciais de segurança).  
![\[Credenciais de segurança no menu de navegação\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. Na seção **Multi-Factor Authentication (MFA)** (Autenticação multifator [MFA]), selecione **Assign MFA device** (Atribuir dispositivo de MFA).

1. No assistente, digite um **Nome de dispositivo**, escolha **Aplicação de autenticador** e escolha **Próximo**.

   O IAM gera e exibe informações de configuração para o dispositivo com MFA virtual, incluindo um código QR gráfico. O gráfico é uma representação da chave de configuração secreta que está disponível para entrada manual em dispositivos que não suportam códigos de QR.

1. Abra o aplicativo MFA virtual no dispositivo. 

   Se o aplicativo de MFA virtual oferecer suporte a vários dispositivos ou contas de MFA virtual, selecione a opção para criar uma conta ou um dispositivo MFA virtual.

1. A maneira mais fácil de configurar o aplicativo é usar o aplicativo para digitalizar o código QR. Se você não puder digitalizar o código, é possível digitar as informações de configuração manualmente. O código QR e a chave de configuração secreta gerados pelo IAM estão vinculados a sua Conta da AWS e não podem ser usados com outra conta. Entretanto, eles podem ser reutilizados para configurar um novo dispositivo MFA para a sua conta caso você perca acesso ao dispositivo MFA original.
   + Para usar o código de QR para configurar o dispositivo MFA virtual, no assistente, escolha **Mostrar código de QR**. Em seguida, siga as instruções do app para digitalizar o código. Por exemplo, pode ser necessário selecionar o ícone de câmera ou escolher um comando como **Scan account barcode (Digitalizar código de barras da conta)** e usar a câmera do dispositivo para digitalizar o código QR.
   + No assistente **Set up device** (Configurar dispositivo), selecione **Show secret key** (Exibir chave secreta) e digite a chave secreta em sua aplicação de MFA.
**Importante**  
Faça um backup seguro do código QR ou da chave de configuração secreta, ou habilite vários dispositivos de MFA para sua conta. É possível registrar até **oito** dispositivos com MFA de qualquer combinação dos [ tipos de MFA atualmente compatíveis](https://aws.amazon.com/iam/features/mfa/) com seu Usuário raiz da conta da AWS e usuários do IAM. Um dispositivo de MFA virtual pode ficar indisponível, por exemplo, se você perder o smartphone no qual o dispositivo de MFA virtual está hospedado. Se isso acontecer e você não conseguir fazer login em sua conta sem dispositivos com MFA adicionais anexados ao usuário ou até por [Recuperar um dispositivo com MFA de usuário raiz](id_credentials_mfa_lost-or-broken.md#root-mfa-lost-or-broken), não poderá fazer login em sua conta e terá de [entrar em contato com o atendimento ao cliente](https://support.aws.amazon.com/#/contacts/aws-mfa-support) para remover a proteção de MFA da conta. 

   O dispositivo começa a gerar números de seis dígitos.

1. No assistente, na caixa **MFA code 1** (Código MFA 1), digite a senha de uso único que atualmente é exibida no dispositivo de MFA virtual. Espere até 30 segundos para que o dispositivo gere uma nova senha de uso único. Em seguida, digite a segunda senha de uso único na caixa **Código MFA 2**. Escolha **Add MFA** (Adicionar MFA). 
**Importante**  
Envie sua solicitação imediatamente após gerar o código. Se você gerar os códigos e esperar muito tempo para enviar a solicitação, o dispositivo MFA associa com êxito ao usuário, mas o dispositivo MFA está fora de sincronia. Isso ocorre porque as senhas únicas baseadas em tempo (time-based one-time passwords, TOTP) expiram após um curto período. Caso isso ocorra, você pode [ressincronizar o dispositivo](id_credentials_mfa_sync.md).

O dispositivo está pronto para uso com a AWS. Para obter informações sobre como usar a MFA com o Console de gerenciamento da AWS, consulte [Login habilitado para MFA](console_sign-in-mfa.md).

# Habilitar um token de hardware TOTP para o usuário-raiz (console)
<a name="enable-hw-mfa-for-root"></a>

Você só pode configurar e habilitar um dispositivo de MFA físico para o seu usuário-raiz no Console de gerenciamento da AWS, não na AWS CLI e nem na API da AWS.

**nota**  
É possível ver um texto diferente, como **Fazer login usando MFA** e **Solucionar problemas do dispositivo de autenticação**. No entanto, os mesmos recursos são fornecidos. Em ambos os casos, se você não puder verificar o endereço de e-mail e o número de telefone de sua conta usando fatores alternativos de autenticação, entre em contato com o [AWS Support](https://aws.amazon.com/forms/aws-mfa-support) para excluir sua configuração de MFA.<a name="enable_physical_root"></a>

**Para habilitar um token de hardware TOTP para o usuário-raiz (console)**

1. Abra o [AWS Management Console](https://console.aws.amazon.com/) e inicie a sessão usando suas credenciais de usuário-raiz.

   Para obter instruções, consulte [Sign in to the Console de gerenciamento da AWS as the root user](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) no *Início de Sessão da AWS User Guide*.

1. No lado direito da barra de navegação, selecione o nome da conta e escolha **Security credentials** (Credenciais de segurança).  
![\[Credenciais de segurança no menu de navegação\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. Expanda a seção **Multi-factor authentication (MFA) (Autenticação multifator (MFA))**.

1. Escolha **Assign MFA device** (Atribuir dispositivo de MFA).

1. No assistente, digite um **Device name** (Nome de dispositivo), escolha **Hardware TOTP token** (Token de hardware TOTP) e escolha **Next** (Avançar).

1. Na caixa **Serial number (Número de série)**, insira o número de série localizado na parte de trás do dispositivo MFA.

1. Na caixa **MFA code 1 (Código MFA 1)**, digite o número de seis dígitos exibido pelo dispositivo MFA. Talvez seja necessário pressionar o botão na parte frontal do dispositivo para exibir o número.  
![\[Painel do IAM, dispositivo MFA\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/MFADevice.png)

1. Aguarde 30 segundos enquanto o dispositivo atualiza o código e digite o próximo número de seis dígitos na caixa **MFA code 2 (Código MFA 2)**. Talvez seja necessário pressionar o botão na parte frontal do dispositivo novamente para exibir o segundo número.

1. Escolha **Add MFA** (Adicionar MFA). O dispositivo de MFA agora está associado à Conta da AWS.
**Importante**  
Envie sua solicitação imediatamente após gerar os códigos de autenticação. Se você gerar os códigos e esperar muito tempo para enviar a solicitação, o dispositivo MFA será associado com êxito ao usuário, mas o dispositivo MFA ficará fora de sincronia. Isso ocorre porque as senhas únicas baseadas em tempo (time-based one-time passwords, TOTP) expiram após um curto período. Caso isso ocorra, você pode [ressincronizar o dispositivo](id_credentials_mfa_sync.md).

   A próxima vez que você usar suas credenciais de usuário-raiz para fazer login, você deve digitar um código do dispositivo MFA.

# Alterar a senha para o Usuário raiz da conta da AWS
<a name="root-user-password"></a>

É possível alterar o endereço de e-mail e a senha na página [Credenciais de segurança](https://console.aws.amazon.com/iam/home?#security_credential) ou **Conta**. Você também pode selecionar **Esqueceu a senha?** na página de login da AWS para redefinir sua senha.

Para alterar a senha do usuário-raiz., é necessário fazer login como Usuário raiz da conta da AWS, e não como um usuário do IAM. Para saber como redefinir uma senha de usuário-raiz *esquecida*, consulte [Redefinir uma senha de usuário-raiz perdida ou esquecida](reset-root-password.md). 

Para proteger sua senha, é importante seguir estas melhores práticas:
+ Altere sua senha periodicamente. 
+ Mantenha sua senha privada, pois qualquer pessoa que souber sua senha poderá acessar sua conta.
+ Use na AWS uma senha diferente da que você usa em outros sites. 
+ Evite senhas que sejam fáceis de adivinhar. Elas incluem senhas como `secret`, `password`, `amazon` ou `123456`. Evite também usar termos como palavras do dicionário, o seu nome, endereço de e-mail ou outras informações pessoais que possam ser facilmente obtidas.

**Importante**  
Contas da AWS gerenciadas por meio do AWS Organizations podem ter [acesso raiz centralizado](id_root-user.md#id_root-user-access-management) habilitado para contas-membro. Essas contas-membro não têm credenciais de usuário-raiz, não podem fazer login como usuário-raiz e são impedidas de recuperar a senha do usuário-raiz. Entre em contato com seu administrador se precisar realizar uma tarefa que exija credenciais de usuário-raiz.

------
#### [ Console de gerenciamento da AWS ]

**Para alterar a senha para o usuário-raiz**
**Permissões mínimas**  
Para executar as etapas a seguir, é necessário ter as seguintes permissões do IAM:  
Você deve fazer login como usuário-raiz da Conta da AWS, o que não requer permissões adicionais do AWS Identity and Access Management (IAM). Não é possível executar essas etapas como usuário ou perfil do IAM.

1. Abra o [AWS Management Console](https://console.aws.amazon.com/) e inicie a sessão usando suas credenciais de usuário-raiz.

   Para obter instruções, consulte [Sign in to the Console de gerenciamento da AWS as the root user](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) no *Início de Sessão da AWS User Guide*.

1. No canto superior direito do console, selecione o nome de sua conta e as **Credenciais de segurança**.

1. Na página **Account** (Conta), ao lado de **Account settings** (Configurações da conta), escolha **Edit** (Editar). Você será avisado para se autenticar novamente para fins de segurança.
**nota**  
Se você não vir a opção **Editar**, é provável que você não esteja conectado como usuário-raiz da sua conta. Não será possível modificar as configurações da conta enquanto estiver conectado como usuário ou perfil do IAM.

1. Na página **Atualizar configurações da conta**, em **Senha**, escolha **Editar**.

1. Na página **Atualizar sua senha**, preencha os campos **Senha atual**, **Nova senha** e **Confirmar nova senha**.
**Importante**  
Certifique-se de escolher uma senha forte. Embora você possa definir uma política de senha de conta para usuários do IAM, essa política não se aplica ao usuário-raiz.

   A AWS exige que sua senha atenda às seguintes condições:
   + Ter no mínimo 8 caracteres e no máximo 128 caracteres de extensão.
   + Incluir no mínimo três dos seguintes tipos de caracteres: maiúsculas, minúsculas, números e os símbolos \$1 @ \$1 \$1 % ^ & \$1 () <> [] \$1\$1 \$1 \$1\$1-=.
   + Não ser idêntica ao nome ou endereço de e-mail da sua Conta da AWS.

1. Escolha **Salvar alterações**.

------
#### [ AWS CLI or AWS SDK ]

Não há suporte a essa tarefa na AWS CLI ou por uma operação de API de um dos AWS SDKs. É possível realizar essa tarefa somente usando o Console de gerenciamento da AWS.

------

# Redefinir uma senha de usuário-raiz perdida ou esquecida
<a name="reset-root-password"></a>

Quando você criou sua Conta da AWS inicialmente, forneceu um endereço de e-mail e uma senha. Essas são as suas credenciais de Usuário raiz da conta da AWS. Se você esquecer sua senha de usuário-raiz, poderá redefinir a senha no Console de gerenciamento da AWS.

Contas da AWS gerenciadas por meio do AWS Organizations podem ter [acesso raiz centralizado](id_root-user.md#id_root-user-access-management) habilitado para contas-membro. Essas contas-membro não têm credenciais de usuário-raiz, não podem fazer login como usuário-raiz e são impedidas de recuperar a senha do usuário-raiz. Entre em contato com seu administrador se precisar realizar uma tarefa que exija credenciais de usuário-raiz.

**Importante**  
**Está com problemas para fazer login na AWS?** Certifique-se de estar na [página de login da AWS](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html) correta para o seu tipo de usuário. Se você for o Usuário raiz da conta da AWS (proprietário da conta), poderá fazer login na AWS usando as credenciais que configurou ao criar a Conta da AWS. Se você é um usuário do IAM, o administrador da conta poderá fornecer as credenciais que você pode usar para fazer login na AWS. Se você precisar solicitar suporte, não use o link de feedback nesta página, pois o formulário é recebido pela equipe de documentação da AWS, não pelo Suporte. Em vez disso, na página [Entre em contato conosco](https://aws.amazon.com/contact-us/), escolha **Ainda não consegue fazer login em sua conta da AWS** e escolha uma das opções de suporte disponíveis.

**Como redefinir sua senha de usuário-raiz**

1. Abra o [AWS Management Console](https://console.aws.amazon.com/) e inicie a sessão usando suas credenciais de usuário-raiz.

   Para obter instruções, consulte [Sign in to the Console de gerenciamento da AWS as the root user](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) no *Início de Sessão da AWS User Guide*.
**nota**  
 Se você estiver conectado ao [Console de gerenciamento da AWS](https://console.aws.amazon.com/) com as credenciais de *usuário do IAM*, deverá sair do sistema para que possa redefinir a senha de usuário-raiz. Se você vir a página de login do usuário do IAM específica da conta, escolha **Sign-in using root account credentials** (Fazer login usando as credenciais da conta raiz) perto da parte inferior da página. Se necessário, forneça o endereço de e-mail da conta e selecione **Next (Próximo)** para acessar a página **Root user sign in (Login do usuário-raiz)**.

1. Escolha **Esqueceu sua senha?**.
**nota**  
Se você for um usuário do IAM, essa opção não estará disponível. A opção **Esqueceu sua senha?** está disponível somente para a conta do usuário-raiz. Os usuários do IAM devem solicitar que o administrador redefina uma senha esquecida. Para obter mais informações, consulte [Esqueci a senha de usuário do IAM da minha conta da AWS](https://docs.aws.amazon.com/signin/latest/userguide/troubleshooting-sign-in-issues.html#troubleshoot-forgot-iam-password). Se você iniciar sessão via portal de acesso do AWS, consulte [Redefinir a senha de usuário do IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/resetpassword-accessportal.html).

1. Forneça o endereço de e-mail associado à conta. Em seguida, forneça o texto CAPTCHA e escolha **Continuar**.

1. Verifique o e-mail associado à sua Conta da AWS para ver se há uma mensagem da Amazon Web Services. O e-mail será enviado por um endereço que termina em `@verify.signin.aws`. Siga as orientações no e-mail. Se você não vir o e-mail em sua conta, verifique a pasta de spam. Se você não tiver mais acesso ao e-mail, consulte [Não tenho acesso ao e-mail de minha conta da AWS](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-troubleshooting.html#credentials-not-working-console) no *Guia do usuário do Início de Sessão da AWS*.

# Criar chaves de acesso para o usuário-raiz
<a name="id_root-user_manage_add-key"></a>

**Atenção**  
É altamente recomendável **não** criar pares de chaves de acesso para o usuário raiz. Como [apenas algumas tarefas exigem o usuário raiz](id_root-user.md#root-user-tasks) e elas normalmente são executadas com pouca frequência, recomendamos entrar no Console de gerenciamento da AWS para realizar as tarefas de usuário raiz. Antes de criar chaves de acesso, avalie as [alternativas às chaves de acesso de longo prazo](security-creds-programmatic-access.md#security-creds-alternatives-to-long-term-access-keys).

Embora não seja recomendável, é possível criar chaves de acesso para seu usuário raiz para executar comandos na AWS Command Line Interface (AWS CLI) ou usar operações de API de um dos AWS SDKs usando credenciais de usuário raiz. Quando você cria chaves de acesso, o ID da chave de acesso e a chave de acesso secreta são criados como um conjunto. Durante a criação de chaves de acesso, a AWS oferece a você uma oportunidade de visualizar e fazer download da chave de acesso secreta que faz parte de uma chave de acesso. Se não fizer o download ou perdê-lo, você pode excluir a chave de acesso e, em seguida, criar uma nova. É possível criar chaves de acesso do usuário raiz com o console, a AWS CLI ou a API da AWS.

Uma chave de acesso recém-criada tem o status de *ativo*, o que significa que você pode usar a chave de acesso para chamadas de API e CLI. É possível atribuir até duas chaves de acesso ao usuário raiz.

As chaves de acesso que não estiverem em uso deverão ser desativadas. Quando uma chave de acesso estiver inativa, você não poderá usá-la para chamadas de API. As chaves inativas ainda contam para o seu limite. Você pode criar ou excluir uma chave de acesso a qualquer momento. No entanto, se uma chave de acesso for excluída, isto será definitivo, e não poderá ser recuperada.

------
#### [ Console de gerenciamento da AWS ]

**Para criar uma chave de acesso para o Usuário raiz da conta da AWS**
**Permissões mínimas**  
Para executar as etapas a seguir, é necessário ter as seguintes permissões do IAM:  
Você deve fazer login como usuário-raiz da Conta da AWS, o que não requer permissões adicionais do AWS Identity and Access Management (IAM). Não é possível executar essas etapas como usuário ou perfil do IAM.

1. Abra o [AWS Management Console](https://console.aws.amazon.com/) e inicie a sessão usando suas credenciais de usuário-raiz.

   Para obter instruções, consulte [Sign in to the Console de gerenciamento da AWS as the root user](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) no *Início de Sessão da AWS User Guide*.

1. No canto superior direito do console, selecione o nome de sua conta e, em seguida, selecione **Credenciais de segurança**. 

1. Na seção **Chaves de acesso**, escolha **Criar chave de acesso**. Se essa opção não estiver disponível, então você já tem o número máximo de chaves de acesso. Você deverá excluir uma das chaves de acesso existentes antes de poder criar outra chave. Para obter mais informações, consulte [Cotas de objetos do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-entities). 

1. Na página **Alternativas às chaves de acesso do usuário raiz**, revise as recomendações de segurança. Para continuar, marque a caixa de seleção e escolha **Criar chave de acesso**. 

1. Na página **Recuperar chave de acesso**, sua ID da **chave de acesso** será exibida. 

1. Em **Chave de acesso secreta**, selecione **Mostrar** e copie o ID da chave de acesso e a chave secreta da janela do navegador para colá-la em outro lugar seguro. Como alternativa, é possível escolher **Baixar arquivo. csv**, o que iniciará o download de um arquivo denominado `rootkey.csv` que contém o ID da chave de acesso e a chave secreta. Salve o arquivo em um lugar seguro.

1. Selecione **Concluído**. Quando você não precisar mais usar a chave de acesso, [recomendamos que a exclua](id_root-user_manage_delete-key.md) ou, pelo menos, considere desativá-la, para que não seja mal utilizada.

------
#### [ AWS CLI & SDKs ]

**Para criar uma chave de acesso para o usuário raiz**
**nota**  
Para executar o comando ou operação de API a seguir como usuário raiz, você já deve ter um par de chaves de acesso ativo. Se você ainda não tiver nenhuma chave de acesso, crie a primeira chave de acesso usando o Console de gerenciamento da AWS. Em seguida, será possível usar as credenciais dessa primeira chave de acesso com a AWS CLI para criar a segunda chave de acesso ou excluir uma chave de acesso.
+ AWS CLI: [aws iam create-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)  
**Example**  

  ```
  $ aws iam create-access-key
  {
      "AccessKey": {
          "UserName": "MyUserName",
          "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
          "Status": "Active",
          "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
          "CreateDate": "2021-04-08T19:30:16+00:00"
      }
  }
  ```
+ API da AWS: [CreateAccessKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html) na *Referência da API do IAM*. 

------

# Excluir chaves de acesso para o usuário-raiz
<a name="id_root-user_manage_delete-key"></a>

É possível usar o Console de gerenciamento da AWS, a AWS CLI ou a API da AWS para excluir as chaves de acesso do usuário raiz.

------
#### [ Console de gerenciamento da AWS ]

**Para excluir uma chave de acesso para o usuário raiz**
**Permissões mínimas**  
Para executar as etapas a seguir, é necessário ter as seguintes permissões do IAM:  
Você deve fazer login como usuário-raiz da Conta da AWS, o que não requer permissões adicionais do AWS Identity and Access Management (IAM). Não é possível executar essas etapas como usuário ou perfil do IAM.

1. Abra o [AWS Management Console](https://console.aws.amazon.com/) e inicie a sessão usando suas credenciais de usuário-raiz.

   Para obter instruções, consulte [Sign in to the Console de gerenciamento da AWS as the root user](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-root-user-sign-in-tutorial.html) no *Início de Sessão da AWS User Guide*.

1. No canto superior direito do console, selecione o nome de sua conta e, em seguida, selecione **Credenciais de segurança**. 

1. Na seção **Chaves de acesso**, selecione a chave de acesso que deseja excluir e, em seguida, em **Ações** escolha **Excluir**.
**nota**  
Como alternativa, é possível **Desativar** uma chave de acesso, em vez de excluí-la permanentemente. Dessa forma é possível retomar o uso dela futuramente, sem a necessidade de alterar o ID da chave ou a chave secreta. Enquanto a chave estiver inativa, todas as tentativas de usá-la em solicitações para a API da AWS falharão com o status de acesso negado.

1. Na caixa de diálogo **Excluir <ID da chave de acesso>**, escolha **Desativar**, insira o ID da chave de acesso para confirmar que você deseja excluí-la e escolha **Excluir**. 

------
#### [ AWS CLI & SDKs ]

**Para excluir uma chave de acesso para o usuário raiz**
**Permissões mínimas**  
Para executar as etapas a seguir, é necessário ter as seguintes permissões do IAM:  
Você deve fazer login como usuário-raiz da Conta da AWS, o que não requer permissões adicionais do AWS Identity and Access Management (IAM). Não é possível executar essas etapas como usuário ou perfil do IAM.
+ AWS CLI: [aws iam delete-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)  
**Example**  

  ```
  $ aws iam delete-access-key \
      --access-key-id AKIAIOSFODNN7EXAMPLE
  ```

  Esse comando não gera nenhuma saída quando é bem-sucedido.
+ API da AWS: [DeleteAccessKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html) 

------

## Tarefas que exigem credenciais de usuário-raiz
<a name="root-user-tasks"></a>

Recomendamos que [configurar um usuário administrativo no Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) para realizar tarefas diárias e acessar os recursos da AWS. Porém, as tarefas listadas abaixo podem ser executadas apenas quando você fizer login como o usuário-raiz de uma conta.

Para simplificar o gerenciamento de credenciais de usuário-raiz privilegiado em todas as contas-membro no AWS Organizations, é possível habilitar o acesso raiz centralizado para ajudá-lo a proteger centralmente o acesso altamente privilegiado às suas Contas da AWS. [Gerencie centralmente o acesso raiz para contas-membro](#id_root-user-access-management)permite que você remova centralmente e evite a recuperação de credenciais de usuário-raiz a longo prazo, melhorando a segurança da conta em sua organização. Depois que você habilitar esse atributo, poderá executar as tarefas privilegiadas a seguir nas contas-membro.
+ Remova as credenciais do usuário-raiz da conta-membro para evitar a recuperação da conta do usuário-raiz. Também é possível permitir a recuperação de senha para recuperar as credenciais de usuário-raiz para uma conta-membro.
+ Remova uma política de bucket mal configurada que negue a todas as entidades principais o acesso ao bucket do Amazon S3.
+ Exclua uma política baseada em recursos do Amazon Simple Queue Service que negue a todas as entidade principais acesso a uma fila do Amazon SQS.

**Tarefas de gerenciamento de contas**
+ [Alterar as configurações da sua Conta da AWS.](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-root-user.html) Contas da AWS autônomas que não fazem parte do AWS Organizations requerem credenciais de usuário-raiz para atualização do endereço de e-mail, da senha do usuário-raiz e das chaves de acesso do usuário-raiz. Outras configurações da conta, como nome da conta, informações de contato, contatos alternativos, preferência de moeda de pagamento e Regiões da AWS, não requerem credenciais de usuário-raiz.
**nota**  
O AWS Organizations, com todos os atributos habilitados, pode ser usado para gerenciar as configurações das contas de membros centralmente, na conta gerencial e nas contas de administrador delegado. Usuários ou perfis do IAM autorizados, tanto na conta gerencial quanto nas contas de administrador delegado, podem fechar as contas de membros e atualizar os endereços de e-mail, os nomes das contas, as informações de contato, os contatos alternativos e as Regiões da AWS das contas de membros. 
+ [Feche sua Conta da AWS.](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/close-account.html) Contas da AWS autônomas que não fazem parte do AWS Organizations requerem credenciais de usuário-raiz para serem fechadas. Com o AWS Organizations, você pode fechar as contas de membros centralmente, na conta gerencial e nas contas de administrador delegado.
+ [Restaurar permissões do usuário do IAM.](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html) Se o único administrador do IAM revogar acidentalmente suas próprias permissões, será possível fazer login como o usuário-raiz para editar políticas e restaurar essas permissões.

**Tarefas de cobrança**
+ [Ativação do acesso do IAM ao console de Gerenciamento de Faturamento e Custos](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/control-access-billing.html#ControllingAccessWebsite-Activate).
+ Algumas tarefas de cobrança são limitadas ao usuário-raiz. Consulte [Gerenciando uma Conta da AWS](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/manage-account-payment.html) no Guia de usuário do AWS Billing para obter mais informações.
+ Exiba determinadas faturas de imposto. Um usuário do IAM com a permissão [aws-portal:ViewBilling](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-permissions-ref.html#user-permissions) pode visualizar e fazer download de faturas de IVA da AWS Europa, mas não da AWS Inc. ou da Amazon Internet Services Private Limited (AISPL).

**AWS GovCloud (US)Tarefas do**
+ [Cadastre-se no AWS GovCloud (US)](https://docs.aws.amazon.com/govcloud-us/latest/UserGuide/getting-started-sign-up.html).
+ Solicitar as chaves de acesso do usuário-raiz da conta AWS GovCloud (US) ao AWS Support.

**Tarefa do Amazon EC2**
+ [Registrado como um vendedor](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) no Marketplace de instâncias reservadas.

**AWS KMSTarefa do**
+ Caso uma chave do AWS Key Management Service perca o controle, um administrador poderá recuperá-la entrando em contato com o Suporte. No entanto, o Suporte responderá ao número de telefone principal do usuário-raiz para autorização confirmando a OTP do ticket.

**Tarefa do Amazon Mechanical Turk**
+  [Vincule sua Conta da AWS à sua conta do MTurk Requester](https://docs.aws.amazon.com/AWSMechTurk/latest/AWSMechanicalTurkGettingStartedGuide/SetUp.html#accountlinking).

**Tarefas do Amazon Simple Storage Service**
+ [Configurar um bucket do Amazon S3 para habilitar a MFA (autenticação multifator)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/MultiFactorAuthenticationDelete.html).
+ [Editar ou excluir uma política de bucket do Amazon S3 que negue todas as entidade principais](https://aws.amazon.com/premiumsupport/knowledge-center/change-vpc-endpoint-s3-bucket-policy/).

  Você pode usar ações privilegiadas para desbloquear um bucket do Amazon S3 com uma política de bucket mal configurada. Para obter detalhes, consulte [Execução de uma tarefa privilegiada em uma conta-membro do AWS Organizations](id_root-user-privileged-task.md).

**Tarefa do Amazon Simple Queue Service**
+ [Edite ou exclua uma política baseada em recurso do Amazon SQS que negue todas as entidade principais](https://aws.amazon.com/premiumsupport/knowledge-center/sqs-queue-access-issues-deny-policy).

  Você pode usar ações privilegiadas para desbloquear uma fila do Amazon SQS com uma política baseada em recursos mal configurada. Para obter detalhes, consulte [Execução de uma tarefa privilegiada em uma conta-membro do AWS Organizations](id_root-user-privileged-task.md).

## Recursos adicionais
<a name="id_root-user-resources"></a>

Para obter mais informações sobre o usuário-raiz da AWS, consulte os recursos a seguir:
+ Para obter ajuda com problemas do usuário-raiz, consulte [Solucionar problemas com o usuário-raiz](troubleshooting_root-user.md).
+ Para gerenciar centralmente os endereços de e-mail do usuário-raiz no AWS Organizations, consulte [Como atualizar o endereço de e-mail do usuário-raiz de uma conta do membro](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_update_primary_email.html) no *Guia do usuário do AWS Organizations*.

Os artigos a seguir fornecem informações adicionais sobre como trabalhar com o usuário-raiz.
+ [Quais são algumas das práticas recomendadas para proteger minha Conta da AWS e seus recursos?](https://repost.aws/knowledge-center/security-best-practices)
+ [Como posso criar uma regra de evento do EventBridge para me notificar se meu usuário-raiz for usado?](https://repost.aws/knowledge-center/root-user-account-eventbridge-rule) 
+ [Monitorar e notificar atividades do Usuário raiz da conta da AWS](https://aws.amazon.com/blogs/mt/monitor-and-notify-on-aws-account-root-user-activity/) 
+ [Monitorar a atividade do usuário-raiz do IAM](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/monitor-iam-root-user-activity.html) 

# Usuários do IAM
<a name="id_users"></a>

**Importante**  
 As [práticas recomendadas](best-practices.md) do IAM aconselham exigir que os usuários humanos usem a federação com um provedor de identidades para acessar a AWS usando credenciais temporárias em vez de usuários do IAM com credenciais de longo prazo. Recomendamos usar somente usuários do IAM para [casos de uso específicos](gs-identities-iam-users.md) não compatíveis com usuários federados.

Um *usuário do IAM* é uma entidade que você cria na sua Conta da AWS. O usuário do IAM representa a pessoa ou a workload que usa o usuário do IAM para interagir com a AWS. Um usuário do IAM consiste em um nome e credenciais.

Um usuário do IAM com permissões de administrador não é o mesmo que um Usuário raiz da conta da AWS. Para obter mais informações sobre o usuário raiz, consulte [Usuário raiz da conta da AWS](id_root-user.md).

## Como a AWS identifica um usuário do IAM
<a name="id_users_create_aws-identifiers"></a>

Quando você cria um usuário do IAM, o IAM cria as seguintes maneiras de identificar esse usuário:
+ Um "nome amigável" para o usuário do IAM, que é o nome que você especificou ao criar esse usuário, como `Richard` ou `Anaya`. Esses são os nomes que você vê no Console de gerenciamento da AWS. Como os nomes de usuário do IAM aparecem nos nomes dos recursos da Amazon (ARNs), não recomendamos incluir informações de identificação pessoal no nome do IAM. Consulte [Requisitos de nome do IAM](reference_iam-quotas.md#reference_iam-quotas-names) para obter requisitos e restrições de nomes do IAM.
+ Um nome de recurso da Amazon (ARN) para o usuário do IAM. Você usa o ARN quando precisa identificar exclusivamente esse usuário do IAM em toda a AWS. Por exemplo, você pode usar um ARN para especificar o usuário do IAM como uma `Principal` em uma política do IAM para um bucket do Amazon S3. Um ARN para um usuário do IAM pode se parecer com o seguinte: 

  `arn:aws:iam::account-ID-without-hyphens:user/Richard`
+ Um identificador exclusivo para o usuário do IAM. Esse ID é retornado somente quando você usa a API, o Tools for Windows PowerShell ou a AWS CLI para criar o usuário do IAM. Ele não está visível no console.

Para obter mais informações sobre esses identificadores, consulte [Identificadores do IAM](reference_identifiers.md).

## Usuários do IAM e credenciais
<a name="id_users_creds"></a>

Você pode acessar a AWS de diferentes maneiras dependendo das credenciais do usuário do IAM:
+ [**Senha do console**](id_credentials_passwords.md): uma senha que o usuário do IAM pode digitar para fazer login em sessões interativas, como o Console de gerenciamento da AWS. Desabilitar a senha (acesso ao console) de um usuário do IAM impede que ele faça login no Console de gerenciamento da AWS usando suas credenciais de login. Isso não altera as permissões do usuário nem o impede de acessar o console usando uma função assumida. Os usuários do IAM com acesso ao console habilitado também podem usar essas mesmas credenciais para autenticar a AWS CLI e acessar o SDK usando o comando `aws login` da AWS CLI. Esses usuários precisarão ter permissões [SignInLocalDevelopmentAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/SignInLocalDevelopmentAccess.html). Para obter mais detalhes, consulte [Autenticação e credenciais de acesso para a AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-authentication.html) no *Guia do usuário da AWS Command Line Interface*. 
+ [**Chaves de acesso**](id_credentials_access-keys.md): usadas para fazer chamadas programáticas para a AWS. Porém, existem alternativas mais seguras a serem consideradas antes de criar chaves de acesso para usuários do IAM. Para obter mais informações, consulte [Considerações e alternativas para chaves de acesso de longo prazo](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#alternatives-to-long-term-access-keys) na *Referência geral da AWS*. Se o usuário do IAM tiver chaves de acesso ativas, elas continuarão funcionando e permitirão o acesso por meio da AWS CLI, do Tools for Windows PowerShell, da API da AWS ou do AWS Console Mobile Application.
+ [**Chaves SSH para uso com CodeCommit**](id_credentials_ssh-keys.md): uma chave SSH pública no formato OpenSSH que pode ser usada para autenticação com CodeCommit.
+ [**Certificados de servidor**](id_credentials_server-certs.md): Certificados SSL/TLS que você pode usar para autenticar com alguns serviços da AWS. Recomendamos que você use o AWS Certificate Manager (ACM) para provisionar, gerenciar e implantar seus certificados de servidor. Use o IAM apenas quando precisar oferecer suporte a conexões HTTPS em uma região que não seja compatível com o ACM. Para saber quais regiões são compatíveis com o ACM, consulte [Cotas e endpoints do AWS Certificate Manager](https://docs.aws.amazon.com/general/latest/gr/acm.html) na *Referência geral da AWS*.

Você pode escolher as credenciais certas para o seu usuário do IAM. Quando você usa o Console de gerenciamento da AWS para criar um usuário do IAM, é necessário pelo menos incluir uma senha ou chaves de acesso para o console. Por padrão, um novo usuário do IAM criado usando a AWS CLI ou a API da AWS não tem nenhum tipo de credencial. Você deve criar o tipo de credencial para um usuário do IAM com base na seu caso de uso. 

Você tem as seguintes opções para administrar senhas, chaves de acesso e dispositivos com senhas, chaves de acesso e dispositivos de autenticação multifator (MFA):
+ **[Gerenciar senhas para seus usuários do IAM](id_credentials_passwords.md).** Crie e altere as senhas que permitem acesso ao Console de gerenciamento da AWS. Definir uma política de senha para impor uma complexidade mínima para a senha. Permita que os usuários do IAM alterem suas próprias senhas. 
+ **[Gerenciar chaves de acesso para seus usuários do IAM](id_credentials_access-keys.md).** Criar e atualizar as chaves de acesso para acesso programático aos recursos na sua conta. 
+ **[Habilite a autenticação multifator (MFA) para o usuário do IAM](id_credentials_mfa.md).** Como [prática recomendada](best-practices.md), recomendamos exigir a autenticação multifator de todos os usuários do IAM na sua conta. Com a MFA, os usuários do IAM devem fornecer duas formas de identificação: primeiro, eles fornecem as credenciais que fazem parte de sua identidade de usuário (uma senha ou uma chave de acesso). Além disso, eles fornecem um código numérico temporário que é gerado em um dispositivo de hardware ou por uma aplicação em um smartphone ou tablet.
+ **[Localizar senhas e chaves de acesso não utilizadas](id_credentials_finding-unused.md).** Qualquer pessoa que tenha uma senha ou chaves de acesso da sua conta ou de um usuário do IAM em sua conta terá acesso aos seus recursos da AWS. A [prática recomendada](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html) de segurança é remover as senhas e as chaves de acesso quando os usuários do IAM não precisarem mais delas.
+ **[Fazer download de um relatório de credenciais para sua conta](id_credentials_getting-report.md).** Você pode gerar e baixar um relatório de credenciais que lista todos os usuários do IAM em sua conta e o status de diversas credenciais deles, incluindo senhas, chaves de acesso e dispositivos com MFA. Em caso de senhas e chaves de acesso, o relatório de credenciais mostra quando uma senha ou chave de acesso foi usada recentemente.

## Usuários do IAM e permissões
<a name="id_users_perms"></a>

Por padrão, um novo usuário do IAM não tem [permissões](access.md) para fazer nada. Ele não está autorizado a executar nenhuma operação da AWS ou a acessar qualquer recurso da AWS. Uma vantagem de ter usuários do IAM individuais é que você pode atribuir permissões individualmente para cada usuário. Você pode atribuir permissões administrativas para alguns usuários que, por sua vez, podem administrar seus recursos da AWS e até mesmo criar e gerenciar outros usuários do IAM. Na maioria dos casos, entretanto, você deseja limitar as permissões de um usuário apenas às tarefas (ações ou operações da AWS) e aos recursos necessários para o trabalho. 

Imagine um usuário chamado Diego. Ao criar o usuário do IAM `Diego`, você cria uma senha para ele e anexa permissões que permitem que ele execute determinada instância do Amazon EC2 e leia (`GET`) informações de uma tabela em um banco de dados do Amazon RDS. Para conhecer os procedimentos para criar usuários do IAM e conceder as credenciais e as permissões iniciais, consulte [Criar um usuário do IAM na Conta da AWS](id_users_create.md). Para obter os procedimentos sobre como alterar as permissões para usuários existentes, consulte [Alterar permissões de um usuário do IAM](id_users_change-permissions.md). Para obter os procedimentos sobre como alterar a senha ou chaves de acesso do usuário, consulte [Senhas de usuários na AWS](id_credentials_passwords.md) e [Gerenciar chaves de acesso para usuários do IAM](id_credentials_access-keys.md).

Você também pode adicionar um limite de permissões para seus usuários do IAM. Um limite de permissões é um recurso avançado que permite usar políticas gerenciadas da AWS para limitar as permissões máximas que uma política com base em identidade pode conceder a um usuário ou perfil do IAM. Para obter mais informações sobre os tipos e os usos de políticas, consulte [Políticas e permissões no AWS Identity and Access Management](access_policies.md).

## Usuários do IAM e contas
<a name="id_users_accounts"></a>

Cada usuário do IAM está associado a uma única Conta da AWS. Como os usuários da IAM são definidos na sua Conta da AWS, não precisam ter um método de pagamento registrado na AWS. Qualquer atividade da AWS executada pelos usuários do IAM na sua conta é cobrada na sua conta.

O número e o tamanho dos recursos do IAM em uma conta da AWS são limitados. Para obter mais informações, consulte [IAM e cotas do AWS STS](reference_iam-quotas.md).

## Usuários do IAM como contas de serviço
<a name="id_users_service_accounts"></a>

Um usuário do IAM é um recurso no IAM que tem credenciais e permissões associadas. Um usuário do IAM pode representar uma pessoa ou uma aplicação que usa credenciais para fazer solicitações da AWS. Isso é geralmente chamado de *conta de serviço*. Se você optar por usar as credenciais de longo prazo de um usuário do IAM em sua aplicação, **não incorpore chaves de acesso diretamente no código da aplicação.** Os SDKs da AWS a AWS Command Line Interface permitem que você coloque as chaves de acesso em locais conhecidos, para que não seja necessário mantê-las em código. Para obter mais informações, consulte [Gerenciar chaves de acesso de usuários do IAM corretamente](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html#iam-user-access-keys) na *Referência geral da AWS*. Como alternativa, e como uma prática recomendada, você pode [usar credenciais de segurança temporárias (funções do IAM), em vez de chaves de acesso de longo prazo](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html#use-roles).

# Como os usuários do IAM fazem login na AWS
<a name="id_users_sign-in"></a>

Para fazer login no Console de gerenciamento da AWS como usuário do IAM, você deve fornecer seu ID de conta ou alias de conta, além de seu nome de usuário e senha. Quando o administrador criou seu usuário do IAM no console, ele deve ter enviado suas credenciais de login, incluindo seu nome de usuário e o URL para a página de login da sua conta, que inclui o ID ou o alias da sua conta. 

```
https://My_AWS_Account_ID.signin.aws.amazon.com/console/
```

**Dica**  
Para criar um marcador para a página de login da conta no navegador da web, digite manualmente o URL de login da conta na entrada do marcador. Não use o recurso de marcador do navegador da web, pois os redirecionamentos podem ocultar o URL de login. 

Você também pode fazer login no seguinte endpoint geral de login e digitar o ID ou o alias da conta manualmente:

```
[https://console.aws.amazon.com/](https://console.aws.amazon.com/)
```

Para maior conveniência, a página de login da AWS usa um cookie de navegador para lembrar o nome de usuário e as informações da conta do IAM. Na próxima vez que o usuário acessar qualquer página no Console de gerenciamento da AWS, o console usará o cookie para redirecionar o usuário para a página de login da conta.

Você tem acesso apenas aos recursos da AWS que seu administrador especifica na política anexada à sua identidade de usuário do IAM. Para trabalhar no console, você deve ter permissões para executar as ações que o console executa, como listar e criar recursos da AWS. Para ter mais informações, consulte [Gerenciamento de acesso para recursos da AWS](access.md) e [Exemplos de políticas baseadas em identidade do IAM](access_policies_examples.md).

**nota**  
Se sua organização tiver um sistema de identidade existente, você poderá criar uma opção de autenticação única (SSO). A SSO fornece aos usuários acesso ao Console de gerenciamento da AWS de sua conta sem exigir que eles tenham uma identidade de usuário do IAM. O SSO também elimina a necessidade do login dos usuários no site da organização e na AWS separadamente. Para ter mais informações, consulte [Habilitar o acesso do intermediador de identidades personalizado ao console da AWS](id_roles_providers_enable-console-custom-url.md). 

**Registrar detalhes de login no CloudTrail**  
Se você habilitar o CloudTrail para registrar eventos de login em seus logs, você deverá estar ciente de como o CloudTrail escolhe onde os eventos devem ser registrados.
+ Se fizerem login diretamente em um console, os usuários serão redirecionados para um endpoint de login global ou regional, com base no suporte a regiões pelo console de serviço selecionado. Por exemplo, a página inicial do console principal é compatível com regiões, logo, se você fizer login no seguinte URL:

  ```
  https://alias.signin.aws.amazon.com/console
  ```

  você será redirecionado para um endpoint de login regional como `https://us-east-2.signin.aws.amazon.com`, o que resulta em um registro em log do CloudTrail no log da região do usuário:

  Por outro lado, o console do Amazon S3 não oferece suporte a regiões, logo, se você fizer login no URL a seguir

  ```
  https://alias.signin.aws.amazon.com/console/s3
  ```

  A AWS redirecionará você para o endpoint de login global em `https://signin.aws.amazon.com`, o que resulta em um registro em log do CloudTrail global.
+ Você pode solicitar manualmente um determinado endpoint de login regional fazendo login na página inicial do console compatível com a região usando uma sintaxe de URL como a seguinte:

  ```
  https://alias.signin.aws.amazon.com/console?region=ap-southeast-1
  ```

  A AWS redirecionará você para o endpoint de login regional `ap-southeast-1` e isso resultará em um evento de log do CloudTrail regional.

Para obter mais informações sobre o CloudTrail e o IAM, consulte [Registrar eventos do IAM no CloudTrail](https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html).

Caso os usuários precisem de acesso programático para trabalhar com a conta, você pode criar um par de chaves de acesso (uma ID de chave de acesso e uma chave de acesso secreta) para cada usuário. Porém, existem alternativas mais seguras a serem consideradas antes de criar chaves de acesso para os usuários. Para obter mais informações, consulte [Considerações e alternativas para chaves de acesso de longo prazo](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#alternatives-to-long-term-access-keys) na *Referência geral da AWS*.

## Recursos adicionais
<a name="id_users_sign-in-additional-resources"></a>

Os recursos a seguir podem ajudar você a saber mais sobre o login da AWS.
+ O [Guia de usuário do Início de Sessão da AWS](https://docs.aws.amazon.com/signin/latest/userguide/what-is-sign-in.html) ajuda a entender as diferentes maneiras pelas quais você pode fazer login na Amazon Web Services (AWS), dependendo do tipo de usuário que você é.
+ Você pode fazer login com até cinco identidades diferentes simultaneamente em um único navegador da Web no Console de gerenciamento da AWS. Para obter detalhes, consulte [Signing in to multiple accounts](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/multisession.html) no *Guia de conceitos básicos do Console de gerenciamento da AWS*.

# Login habilitado para MFA
<a name="console_sign-in-mfa"></a>

Os usuários configurados com dispositivos de [autenticação multifator (MFA)](id_credentials_mfa.md) devem usar esses dispositivos para fazer login no Console de gerenciamento da AWS. Depois que o usuário insere suas credenciais de login, a AWS verifica a conta do usuário para ver se a MFA é necessária. 

**Importante**  
Se você usar credenciais da chave secreta e chave de acesso para acesso direto ao Console de gerenciamento da AWS com a chamada de API AWS STS[https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html), o MFA NÃO será necessário. Para ter mais informações, consulte [Usar credenciais da chave secreta e chave de acesso para acesso ao console](securing_access-keys.md#console-access-security-keys).

Os tópicos a seguir fornecem informações sobre como os usuários concluem o login quando a MFA é necessária. 

**Topics**
+ [

## Vários dispositivos com MFA habilitados
](#console_sign-in-multiple-mfa)
+ [

## Chave de segurança FIDO
](#console_sign-in-mfa-fido)
+ [

## Dispositivo com MFA virtual
](#console_sign-in-mfa-virtual)
+ [

## Token físico de TOTP
](#console_sign-in-mfa-hardware)

## Vários dispositivos com MFA habilitados
<a name="console_sign-in-multiple-mfa"></a>

Ao fazer login no Console de gerenciamento da AWS como usuário raiz de uma Conta da AWS ou usuário do IAM com vários dispositivos de MFA habilitados para essa conta, o usuário só precisará usar um dispositivo de MFA para fazer login. Depois de fazer a autenticação com a senha do usuário, o usuário seleciona o tipo de dispositivo de MFA que gostaria de usar para concluir a autenticação. Em seguida, solicita-se que o usuário faça a autenticação com o tipo de dispositivo selecionado. 

## Chave de segurança FIDO
<a name="console_sign-in-mfa-fido"></a>

Se a MFA for necessária para o usuário, uma segunda página de login será exibida. O usuário precisa tocar na chave de segurança FIDO.

**nota**  
Os usuários do Google Chrome não devem escolher nenhuma das opções disponíveis no pop-up que solicite **Verify your identity with amazon.com** (Confirmar sua identidade na amazon.com). Você só precisa tocar na chave de segurança.

Ao contrário de outros dispositivos de MFA, as chaves de segurança FIDO não perdem a sincronia. Os administradores podem desativar uma chave de segurança FIDO se ela for perdida ou quebrada. Para ter mais informações, consulte [Desativar dispositivos MFA (console)](id_credentials_mfa_disable.md#deactive-mfa-console).

Para obter informações sobre os navegadores compatíveis com WebAuthn e FIDO compatíveis com a AWS, consulte [Configurações compatíveis com o uso de chaves de acesso e chaves de segurança](id_credentials_mfa_fido_supported_configurations.md).

## Dispositivo com MFA virtual
<a name="console_sign-in-mfa-virtual"></a>

Se a MFA for necessária para o usuário, uma segunda página de login será exibida. Na caixa **código MFA**, o usuário deve informar o código numérico fornecido pelo aplicativo de MFA.

Se o código de MFA estiver correto, o usuário poderá acessar o Console de gerenciamento da AWS. Se o código estiver incorreto, o usuário poderá tentar novamente com outro código. 

Um dispositivo MFA virtual pode estar fora de sincronia. Se após várias tentativas sem êxito um usuário não conseguir fazer login no Console de gerenciamento da AWS, será solicitado que ele sincronize o dispositivo MFA virtual. O usuário pode seguir as instruções na tela para sincronizar o dispositivo MFA virtual. Para obter informações sobre como sincronizar um dispositivo em nome de um usuário na Conta da AWS, consulte [Sincronizar novamente os dispositivos MFA virtuais e de hardware](id_credentials_mfa_sync.md). 

## Token físico de TOTP
<a name="console_sign-in-mfa-hardware"></a>

Se a MFA for necessária para o usuário, uma segunda página de login será exibida. Na caixa **MFA code** (Código de MFA), o usuário deve informar o código numérico fornecido por um token de hardware TOTP. 

Se o código de MFA estiver correto, o usuário poderá acessar o Console de gerenciamento da AWS. Se o código estiver incorreto, o usuário poderá tentar novamente com outro código. 

Um token de hardware TOTP pode perder a sincronia. Se, após várias tentativas, o usuário não conseguir fazer login no Console de gerenciamento da AWS, será solicitado que ele sincronize o dispositivo de token MFA. O usuário pode seguir as instruções na tela para sincronizar o dispositivo de token de MFA. Para obter informações sobre como sincronizar um dispositivo em nome de um usuário na Conta da AWS, consulte [Sincronizar novamente os dispositivos MFA virtuais e de hardware](id_credentials_mfa_sync.md). 

# Criar um usuário do IAM na Conta da AWS
<a name="id_users_create"></a>

**Importante**  
 As [práticas recomendadas](best-practices.md) do IAM aconselham exigir que os usuários humanos usem a federação com um provedor de identidades para acessar a AWS usando credenciais temporárias em vez de usuários do IAM com credenciais de longo prazo. Recomendamos usar somente usuários do IAM para [casos de uso específicos](gs-identities-iam-users.md) não compatíveis com usuários federados.

O processo de criar um usuário do IAM e habilitá-lo para executar tarefas consiste nas seguintes etapas:

1. Crie o [usuário no Console de gerenciamento da AWS, na AWS CLI](getting-started-workloads.md), no Tools for Windows PowerShell ou usando uma operação da API da AWS. Se você criar o usuário no Console de gerenciamento da AWS, as etapas de 1 a 4 serão tratadas automaticamente com base em suas opções. Se você criar os usuários do IAM de forma programática, deverá executar cada uma dessas etapas separadamente.

1. Crie credenciais para o usuário, dependendo do tipo de acesso que o usuário requer:
   + **Habilitar acesso ao console: *opcional***: se o usuário precisar acessar o Console de gerenciamento da AWS, [crie uma senha para o usuário](id_credentials_passwords_admin-change-user.md). Desabilitar o acesso ao console para um usuário impede que ele faça login no Console de gerenciamento da AWS usando seu próprio nome de usuário e senha. Isso não altera as permissões do usuário nem o impede de acessar o console usando uma função assumida.
**dica**  
Crie apenas as credenciais necessárias para o usuário. Por exemplo, para um usuário que precise de acesso apenas pelo Console de gerenciamento da AWS, não crie chaves de acesso.

1. Conceda ao usuário permissões para realizar as tarefas necessárias. Recomendamos que você inclua os usuários do IAM nos grupos e gerencie as permissões por meio de políticas anexadas a esses grupos. No entanto, também é possível conceder permissões associando políticas de permissões diretamente ao usuário. Se você usar o console para adicionar o usuário, poderá copiar as permissões de um usuário existente para o novo usuário.

   Você também pode adicionar um [limite de permissões](access_policies_boundaries.md) para limitar as permissões do usuário especificando uma política que define as permissões máximas que ele pode ter. Os limites de permissões não concedem nenhuma permissão.

   Para obter instruções sobre como criar uma política de permissão personalizada a ser usada para conceder permissões ou para definir um limite de permissões, consulte [Defina permissões personalizadas do IAM com políticas gerenciadas pelo cliente](access_policies_create.md).

1. (Opcional) Adicione metadados ao usuário anexando tags. Para obter mais informações sobre como usar tags no IAM, consulte [Tags para recursos do AWS Identity and Access Management](id_tags.md).

1. Forneça ao usuário as informações de login necessárias. Isso inclui a senha e a URL do console na página de login da conta em que o usuário fornece essas credenciais. Para ter mais informações, consulte [Como os usuários do IAM fazem login na AWS](id_users_sign-in.md).

1. (Opcional) Configure a [multi-factor authentication (MFA)](id_credentials_mfa.md) para o usuário. A MFA requer que o usuário forneça um código de uso único a cada vez que ele faz login no Console de gerenciamento da AWS.

1. (Opcional) Dê aos usuários do IAM permissões para gerenciar suas próprias credenciais de segurança. (Por padrão, os usuários do IAM não têm permissões para gerenciar suas próprias credenciais.) Para ter mais informações, consulte [Permitir que os usuários do IAM alterem as próprias senhas](id_credentials_passwords_enable-user-change.md).
**nota**  
Se você usar o console para criar o usuário e selecionar **O usuário deverá criar uma nova senha no próximo login (recomendado)**, o usuário receberá as permissões necessárias.

Para obter informações sobre as permissões de que você precisa para criar um usuário, consulte [Permissões necessárias para acessar recursos do IAM](access_permissions-required.md).

Para obter instruções sobre como criar usuários do IAM para casos de uso específicos, consulte os seguintes tópicos:
+ [Criar um acesso de emergência para um usuário do IAM](getting-started-emergency-iam-user.md)
+ [Crie um usuário do IAM para workloads que não podem usar perfis do IAM](getting-started-workloads.md)

# Visualizar usuários do IAM
<a name="id_users_list"></a>

Você pode listar os usuários do IAM da sua Conta da AWS ou de um determinado grupo do IAM, e listar todos os grupos do IAM a que um usuário pertence. Para obter informações sobre as permissões que você precisa para listar usuários, consulte [Permissões necessárias para acessar recursos do IAM](access_permissions-required.md). 

## Para listar todos os usuários do IAM na conta
<a name="id_users_manage_list-users"></a>

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, escolha **Users**. 

O console exibe os usuários do IAM da sua Conta da AWS.

------
#### [ AWS CLI ]

Execute este comando:
+ `[aws iam list-users](https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html)`

------
#### [ API ]

Chame a seguinte operação:
+ `[ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)` 

------

## Para listar os usuários do IAM em um grupo do IAM
<a name="id_users_manage_list-users-group"></a>

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, selecione **User groups** (Grupos de usuários).

1. Escolha o nome do grupo de usuários. 

Os usuários do IAM que são membros do grupo são listados na guia **Usuários**.

------
#### [ AWS CLI ]

Execute este comando:
+ `[aws iam get-group](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html)`

------
#### [ API ]

Chame a seguinte operação:
+ `[GetGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html)` 

------

## Para listar todos os grupos do IAM a que um usuário pertence
<a name="id_users_manage_list-groups-users"></a>

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, escolha **Users**.

1. Na lista **Usuários**, escolha o nome de usuário do IAM. 

1. Selecione a guia **Grupos** para exibir a lista de grupos que incluem o usuário atual.

------
#### [ AWS CLI ]

Execute este comando:
+ `[aws iam list-groups-for-user](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups-for-user.html)`

------
#### [ API ]

Chame a seguinte operação:
+ `[ListGroupsForUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupsForUser.html)` 

------

## Próximas etapas
<a name="id_users_list-next-steps"></a>

Depois de ter uma lista dos usuários do IAM, você pode renomear, excluir ou desativar um usuário do IAM usando os procedimentos a seguir.
+ [Renomear um usuário do IAM](id_users_rename.md)
+ [Remover ou desativar um usuário do IAM](id_users_remove.md)

# Renomear um usuário do IAM
<a name="id_users_rename"></a>

**nota**  
Como [prática recomendada](best-practices.md), aconselhamos exigir que os usuários humanos usem a federação com um provedor de identidades para acessar a AWS usando credenciais temporárias. Seguindo as práticas recomendadas, você não gerenciará usuários e grupos do IAM. Em vez disso, seus usuários e grupos serão gerenciados fora da AWS e podem acessar recursos da AWS como *identidade federada*. Identidade federada é um usuário de seu diretório de usuários corporativos, um provedor de identidades da Web, AWS Directory Service, o diretório do Centro de Identidade ou qualquer usuário que acesse os serviços da AWS usando credenciais fornecidas por meio de uma fonte de identidade. As identidades federadas utilizam os grupos definidos pelo provedor de identidade. Se você estiver usando o Centro de Identidade do AWS IAM, consulte [Manage identities in IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-sso.html) (Gerenciar identidades no Centro de Identidade do IAM) no *Guia do usuário do Centro de Identidade do AWS IAM* para obter informações sobre a criação de usuários e grupos no Centro de Identidade do IAM.

A Amazon Web Services oferece várias ferramentas para gerenciar os usuários do IAM na sua Conta da AWS. Você pode listar os usuários do IAM da sua conta ou de um grupo de usuários, ou listar todos os grupos do IAM a que um usuário pertence. Você pode renomear ou alterar o caminho de um usuário do IAM. Se estiver migrando para utilizar identidades federadas em vez de usuários do IAM, você poderá excluir um usuário do IAM da conta da AWS ou desativá-lo.

Para obter mais informações sobre como adicionar, alterar ou remover políticas gerenciadas para um usuário do IAM, consulte [Alterar permissões de um usuário do IAM](id_users_change-permissions.md). Para obter informações sobre como gerenciar políticas em linha para usuários do IAM, consulte [Adicionar e remover permissões de identidade do IAM](access_policies_manage-attach-detach.md), [Editar políticas do IAM](access_policies_manage-edit.md) e [Excluir políticas do IAM](access_policies_manage-delete.md). Como prática recomendada, use políticas gerenciadas em vez de políticas em linha. As *políticas gerenciadas pela AWS* concedem permissões para vários casos de uso comuns. Lembre-se de que as políticas gerenciadas pela AWS podem não conceder permissões de privilégio mínimo para seus casos de uso específicos porque estão disponíveis para uso por todos os clientes da AWS. Como resultado, recomendamos que você reduza ainda mais as permissões definindo as [políticas gerenciadas pelo cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) específicas para seus casos de uso. Para ter mais informações, consulte [AWSPolíticas gerenciadas pela](access_policies_managed-vs-inline.md#aws-managed-policies). Para obter mais informações sobre políticas gerenciadas pela AWS que são projetadas para funções de trabalho específicas, consulte [AWSPolíticas gerenciadas pela para funções de trabalho](access_policies_job-functions.md).

Para saber como validar políticas do IAM, consulte [Validação de política do IAM](access_policies_policy-validator.md).

**dica**  
O [IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html) pode analisar os serviços e as ações que seus perfis do IAM usam e, em seguida, gerar uma política aperfeiçoada que você pode utilizar. Depois de testar cada política gerada, você pode implantar a política em seu ambiente de produção. Isso garante que você conceda apenas as permissões necessárias para suas workloads. Para obter mais informações sobre a geração de políticas, consulte [Geração de políticas do IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html).

Para obter informações sobre como gerenciar senhas de usuário do IAM, consulte [Gerenciar senhas para usuários do IAM](id_credentials_passwords_admin-change-user.md).

## Renomeação de um usuário do IAM
<a name="id_users_renaming"></a>

Para alterar o nome ou caminho de um usuário, você deve usar a AWS CLI, o Tools for Windows PowerShell ou a API da AWS. Não há opção no console para renomear um usuário. Para obter informações sobre as permissões que você precisa para renomear um usuário, consulte [Permissões necessárias para acessar recursos do IAM](access_permissions-required.md). 

Quando você altera o nome ou caminho de um usuário, acontece o seguinte: 
+ Todas as políticas anexadas ao usuário permanecem com o usuário sob o novo nome.
+ O usuário permanece nos mesmos grupos do IAM com o novo nome.
+ O ID exclusivo para o usuário permanece o mesmo. Para obter mais informações sobre IDs exclusivos, consulte [Identificadores exclusivos](reference_identifiers.md#identifiers-unique-ids).
+ Todas as políticas de recurso ou função que se refiram ao usuário *como um principal* (o usuário está sendo recebendo acesso) são automaticamente atualizadas para usar o novo nome ou caminho. Por exemplo, quaisquer políticas baseadas em fila no Amazon SQS ou políticas baseadas em recursos no Amazon S3 são atualizadas automaticamente para usar o novo nome e caminho. 

O IAM não atualiza automaticamente as políticas que se referem ao usuário *como um recurso* para usar o novo nome ou caminho; você deve fazer isso manualmente. Por exemplo, imagine que o usuário `Richard` tenha uma política anexada que lhe permite gerenciar suas credenciais de segurança. Se um administrador renomear `Richard` como `Rich`, o administrador também precisa atualizar essa política para alterar o recurso disso:

```
arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/Richard
```

para isso:

```
arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/Rich
```

Isso também se aplica se um administrador mudar o caminho; o administrador precisa atualizar a política para refletir o novo caminho para o usuário. 

### Para renomear um usuário
<a name="id_users_manage_list-users-rename"></a>
+ AWS CLI: [aws iam update-user](https://docs.aws.amazon.com/cli/latest/reference/iam/update-user.html)
+ API da AWS: [UpdateUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateUser.html) 

# Remover ou desativar um usuário do IAM
<a name="id_users_remove"></a>

As [práticas recomendadas](best-practices.md#remove-credentials) aconselham que você remova usuários do IAM não utilizados da Conta da AWS. Se quiser reter as credenciais dos usuários do IAM para uso futuro, em vez de excluí-las da conta, você poderá desativar o acesso do usuário. Para obter mais informações, consulte [Desativar um usuário do IAM](#id_users_deactivating).

**Atenção**  
Depois que um usuário do IAM e suas chaves de acesso são excluídos, não podem ser restaurados ou recuperados.

## Pré-requisito: visualizar o acesso do usuário do IAM
<a name="users-manage_prerequisites"></a>

Antes de remover um usuário, analise sua atividade recente em nível de serviço. Esse processo ajuda a evitar a remoção do acesso de uma entidade principal (pessoa ou aplicação) que o esteja usando. Para obter mais informações sobre como visualizar as informações acessadas por último, consulte [Refinar permissões na AWS usando informações do último acesso](access_policies_last-accessed.md).

## Remoção de um usuário do IAM (console)
<a name="id_users_deleting_console"></a>

Quando você usa o Console de gerenciamento da AWS para remover um usuário do IAM, o IAM exclui automaticamente as seguintes informações associadas: 
+ O identificador de usuário do IAM
+ Quaisquer associações de grupo: ou seja, o usuário do IAM é removido de todos os grupos dos quais o usuário do IAM era membro
+ Qualquer senha associada ao usuário do IAM 
+ Todas as políticas em linha incorporadas no usuário do IAM (as políticas que foram aplicadas ao usuário do IAM usando permissões de grupo de usuários não são afetadas) 
**nota**  
O IAM remove todas as políticas gerenciadas anexadas ao usuário do IAM quando você exclui o usuário, mas não exclui as políticas gerenciadas. 
+ Todos os dispositivos MFA associados

### Para remover um usuário do IAM (console)
<a name="id_users_remove-section-1"></a>

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, escolha **Usuários** e, em seguida, marque a caixa de seleção ao lado do nome de usuário do IAM que você deseja excluir. 

1. Na parte superior da página, escolha **Delete** (Excluir).
**nota**  
Se algum dos usuários tiver chaves de acesso ativas, será necessário desativar as chaves de acesso antes de excluir os usuários. Para obter mais informações, consulte [Para desativar uma chave de acesso para um usuário do IAM](access-keys-admin-managed.md#admin-deactivate-access-key).

1. Na caixa de diálogo de confirmação, insira o nome de usuário no campo de entrada de texto para confirmar a exclusão do usuário. Escolha **Excluir**. 

O console exibe uma notificação de status informando que o usuário do IAM foi excluído.

------

## Exclusão de um usuário do IAM (AWS CLI)
<a name="id_users_deleting_cli"></a>

Ao contrário do Console de gerenciamento da AWS, quando você exclui um usuário do IAM com a AWS CLI, é necessário excluir manualmente os itens anexados ao usuário do IAM. Este procedimento ilustra o processo. 

**Para excluir um usuário do IAM da Conta da AWS (AWS CLI)**

1. Exclua a senha do usuário, caso ele tenha uma.

   `[aws iam delete-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-login-profile.html)`

1. Exclui as chaves de acesso do usuário, se o usuário as tiver.

   `[aws iam list-access-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)` (para listar as chaves de acesso do usuário) e `[aws iam delete-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)`

1. Exclui o certificado de assinatura do usuário. Observe que ao excluir uma credencial de segurança, ela é removida permanentemente e não pode ser recuperada.

   `[aws iam list-signing-certificates](https://docs.aws.amazon.com/cli/latest/reference/iam/list-signing-certificates.html)` (para listar o certificados de assinatura do usuário) e `[aws iam delete-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-signing-certificate.html)`

1. Exclui a chave pública SSH do usuário, se o usuário tiver uma.

   `[aws iam list-ssh-public-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-ssh-public-keys.html)` (para listar as chaves públicas SSH do usuário) e `[aws iam delete-ssh-public-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-ssh-public-key.html)`

1. Exclui as credenciais do Git do usuário.

   `[aws iam list-service-specific-credentials](https://docs.aws.amazon.com/cli/latest/reference/iam/list-service-specific-credentials.html)` (para listar as credenciais do git do usuário) e `[aws iam delete-service-specific-credential](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-service-specific-credential.html)`

1. Desativa o dispositivo de autenticação multifator (MFA), se o usuário tiver um.

   `[aws iam list-mfa-devices](https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-devices.html)` (para listar os dispositivos MFA do usuário), `[aws iam deactivate-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html)` (para desativar o dispositivo) e `[aws iam delete-virtual-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-virtual-mfa-device.html)` (para excluir permanentemente um dispositivo MFA virtual) 

1. Exclui as políticas em linha do usuário. 

   `[aws iam list-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-user-policies.html)` (para listar as políticas em linha do usuário) e [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user-policy.html) (para excluir a política) 

1. Desanexa todas as políticas gerenciadas anexadas ao usuário. 

   `[aws iam list-attached-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-user-policies.html)` (para listar as políticas gerenciadas anexadas ao usuário) e [https://docs.aws.amazon.com/cli/latest/reference/iam/detach-user-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/detach-user-policy.html) (para desanexar a política) 

1. Remova o usuário de todos os grupos do IAM. 

   `[aws iam list-groups-for-user](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups-for-user.html)` (para listar os grupos do IAM aos quais o usuário pertence) e `[aws iam remove-user-from-group](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-user-from-group.html)` 

1. Exclua o usuário.

   `[aws iam delete-user](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-user.html)` 

## Desativar um usuário do IAM
<a name="id_users_deactivating"></a>

Talvez seja necessário desativar um usuário do IAM enquanto ele estiver temporariamente fora da empresa. Você pode manter as credenciais de usuário do IAM do usuário como estão e apenas bloquear o acesso dele à AWS.

Para desativar um usuário, crie e anexe uma política que negue ao usuário acesso à AWS. Você pode restaurar o acesso do usuário posteriormente.

Aqui estão dois exemplos de políticas de negação que você pode anexar a um usuário para negar seu acesso.

A política a seguir não inclui um limite de tempo. Você deve remover a política para restaurar o acesso do usuário.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [ 
      {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*"
      } 
   ]
}
```

------

A política a seguir inclui uma condição que inicia a política em 24 de dezembro de 2024 às 23:59 (UTC) e termina em 28 de fevereiro de 2025 às 23:59 (UTC).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
          "DateGreaterThan": {"aws:CurrentTime": "2024-12-24T23:59:59Z"},
          "DateLessThan": {"aws:CurrentTime": "2025-02-28T23:59:59Z"}
          }
       }
   ]
}
```

------

# Controlar o acesso do usuário do IAM ao Console de gerenciamento da AWS
<a name="console_controlling-access"></a>

Os usuários do IAM com permissão que fizerem login na sua Conta da AWS por meio do Console de gerenciamento da AWS poderão acessar seus recursos da AWS. A lista a seguir mostra como conceder aos usuários do IAM acesso a recursos da sua Conta da AWS por meio do Console de gerenciamento da AWS. Ela também mostra como os usuários do IAM podem acessar outros recursos da AWS por meio do site da AWS.

**nota**  
Não há custo pelo uso do IAM.

**A Console de gerenciamento da AWS**  
Você cria uma senha para cada usuário do IAM que precisa acessar o Console de gerenciamento da AWS. Os usuários acessam o console por meio da página de login da sua Conta da AWS habilitada para o IAM. Para obter informações sobre como acessar a página de login, consulte [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html), no *Guia do usuário do Início de Sessão da AWS*. Para obter informações sobre como criar senhas, leia [Senhas de usuários na AWS](id_credentials_passwords.md).  
Você pode impedir que um usuário do IAM acesse o Console de gerenciamento da AWS removendo a senha dele. Isso impede que ele faça login no Console de gerenciamento da AWS usando suas credenciais de login. Isso não altera as permissões do usuário nem o impede de acessar o console usando uma função assumida. Se o usuário tiver chaves de acesso ativas, elas continuarão funcionando e permitirão o acesso por meio da AWS CLI, do Tools for Windows PowerShell, da API da AWS ou do AWS Console Mobile Application.

**Seus recursos da AWS, como instâncias do Amazon EC2, buckets do Amazon S3 etc.**  
Mesmo que os usuários do IAM tenham senhas, eles ainda precisarão de permissão para acessar seus recursos da AWS. Quando você cria um usuário do IAM, ele não tem nenhuma permissão por padrão. Para dar a seus usuários do IAM as permissões que eles precisam ter, você anexa políticas a eles. Se houver muitos usuários do IAM que executam as mesmas tarefas com os mesmos recursos, você poderá lhes atribuir a um grupo. Então, atribua as permissões a esse grupo. Para obter informações sobre a criação de usuários e grupos do IAM, consulte [Identidades do IAM](id.md). Para obter informações sobre o uso de políticas para definir permissões, consulte [Gerenciamento de acesso para recursos da AWS](access.md).

**AWSFóruns de discussão da **  
Qualquer um pode ler as postagens no [Fóruns de discussão da AWS](https://forums.aws.amazon.com/). Os usuários que desejam publicar dúvidas ou comentários no Fórum de discussão da AWS podem fazê-lo usando seu nome de usuário. Na primeira vez que um usuário publica no Fórum de discussão da AWS, o usuário é solicitado a inserir um apelido e um endereço de e-mail. Somente esse usuário pode usar esse apelido nos Fóruns de discussão da AWS. 

**Informações de uso e faturamento da sua Conta da AWS**  
Você pode conceder aos usuários acesso às informações de uso e faturamento da sua Conta da AWS. Para obter mais informações, consulte [Controlar o acesso às suas informações de faturamento](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/control-access-billing.html) no *Guia do usuário do AWS Billing*. 

**As informações de perfil da sua Conta da AWS**  
Os usuários não podem acessar as informações de perfil da sua Conta da AWS.

**Credenciais de segurança da sua Conta da AWS**  
Os usuários não podem acessar as credenciais de segurança da sua Conta da AWS.

**nota**  
As políticas do IAM controlam o acesso, independentemente da interface. Por exemplo, você pode fornecer a um usuário uma senha para acessar o Console de gerenciamento da AWS. As políticas para esse usuário (ou qualquer grupo ao qual o usuário pertence) controlam o que o usuário pode fazer no Console de gerenciamento da AWS. Ou, você pode fornecer ao usuário chaves de acesso da AWS para fazer chamadas de API para a AWS. As políticas controlam as ações que o usuário pode chamar por meio de uma biblioteca ou cliente que usa essas chaves de acesso para autenticação.

# Alterar permissões de um usuário do IAM
<a name="id_users_change-permissions"></a>

Você pode alterar as permissões de um usuário do IAM na sua Conta da AWS alterando suas associações a grupos, copiando permissões de um usuário existente, anexando políticas diretamente a um usuário ou definindo um [limite de permissões](access_policies_boundaries.md). Um limite de permissões controla o número máximo de permissões que um usuário pode ter. Os limites de permissões são um recurso avançado da AWS.

Para obter informações sobre as permissões que você precisa para modificar as permissões de um usuário, consulte [Permissões necessárias para acessar recursos do IAM](access_permissions-required.md).

**Topics**
+ [

## Visualizar acesso do usuário
](#users-modify_prerequisites)
+ [

## Gerar uma política com base na atividade de acesso de um usuário
](#users_change_permissions-gen-policy)
+ [

## Adição de permissões a um usuário (console)
](#users_change_permissions-add-console)
+ [

## Alteração das permissões de um usuário (console)
](#users_change_permissions-change-console)
+ [

## Para remover uma política de permissões de um usuário (console)
](#users_change_permissions-remove-policy-console)
+ [

## Para remover o limite de permissões de um usuário (console)
](#users_change_permissions-remove-boundary-console)
+ [

## Adição e remoção das permissões de um usuário (AWS CLI ou API da AWS)
](#users_change_permissions-add-programmatic)

## Visualizar acesso do usuário
<a name="users-modify_prerequisites"></a>

Antes de alterar as permissões de um usuário, você deve revisar a atividade no nível de serviço recente. Isso é importante porque você não deseja remover acesso de uma entidade principal (pessoa ou aplicativo) que está usando. Para obter mais informações sobre como visualizar as informações acessadas por último, consulte [Refinar permissões na AWS usando informações do último acesso](access_policies_last-accessed.md).

## Gerar uma política com base na atividade de acesso de um usuário
<a name="users_change_permissions-gen-policy"></a>

Às vezes, você pode conceder permissões a uma entidade do IAM (usuário ou função) além do que é exigido. Para ajudar você a refinar as permissões concedidas, você pode gerar uma política do IAM baseada na atividade de acesso para uma entidade. O IAM Access Analyzer revisa seus logs do AWS CloudTrail e gera um modelo de política que contém as permissões que foram usadas pela entidade no intervalo de datas especificado. Você pode usar o modelo para criar uma política gerenciada com permissões refinadas e anexá-la à entidade do IAM. Dessa forma, você concede apenas as permissões de que o usuário ou a função precisa para interagir com os recursos da AWS para seu caso de uso específico. Para saber mais, consulte [Geração de políticas do IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html).

## Adição de permissões a um usuário (console)
<a name="users_change_permissions-add-console"></a>

O IAM oferece três formas de adicionar políticas de permissões a um usuário:
+ **Adicionar o usuário do IAM a um grupo do IAM**: tornar o usuário membro de um grupo. As políticas do grupo são anexadas ao usuário.
+ **Copiar permissões de um usuário do IAM existente**: copiar todas as associações de grupos, políticas gerenciadas anexadas, políticas em linha e quaisquer limites de permissões existentes do usuário de origem.
+ **Anexar políticas diretamente ao usuário do IAM**: anexar uma política gerenciada diretamente ao usuário. Para facilitar o gerenciamento das permissões, anexe suas políticas a um grupo e associe os usuários do IAM aos grupos apropriados.

**Importante**  
Se o usuário tiver um limite de permissões, você não poderá adicionar mais permissões ao usuário do que as permitidas pelo limite de permissões.

### Para adicionar permissões adicionando o usuário do IAM a um grupo
<a name="users_change_permissions-add-group-console"></a>

Adicionar um usuário do IAM a um grupo do IAM atualiza imediatamente as permissões do usuário com as permissões definidas para o grupo.

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, escolha **Users**.

1. Na lista **Usuários**, escolha o nome de usuário do IAM. 

1. Selecione a guia **Grupos** para exibir a lista de grupos que incluem o usuário atual.

1. Escolha **Adicionar usuário aos grupos**. 

1. Marque a caixa de seleção de cada grupo no qual você deseja que o usuário ingresse. A lista mostra o nome de cada grupo e as políticas que o usuário receberá se tornar membro desse grupo.

1. (Opcional) Você pode escolher **Criar grupo** para definir um novo grupo. Esse recurso é útil se você quiser adicionar o usuário a um grupo com políticas de anexo diferentes das dos grupos existentes:

   1. Na nova guia, em **Nome do grupo de usuários**, digite um nome para o novo grupo.
**nota**  
O número e o tamanho dos recursos do IAM em uma conta da AWS são limitados. Para obter mais informações, consulte [IAM e cotas do AWS STS](reference_iam-quotas.md). Os nomes de grupos podem ser uma combinação de até 128 letras, dígitos e estes caracteres: adição (\$1), igual (=), vírgula (,), ponto (.), arroba (@) e hífen (-). Os nomes devem ser exclusivos dentro de uma conta. Eles não são diferenciados por letras maiúsculas e minúsculas. Por exemplo, você não pode criar dois grupos denominados *TESTGROUP* e *testgroup*.

   1. Marque uma ou mais caixas de seleção para as políticas gerenciadas que você deseja anexar ao grupo. Você também pode criar uma nova política gerenciada escolhendo **Criar política**. Se fizer isso, volte para esta guia ou janela do navegador quando a nova política for concluída; escolha **Atualizar** e, em seguida, escolha a nova política para anexá-la ao grupo. Para obter mais informações, consulte [Defina permissões personalizadas do IAM com políticas gerenciadas pelo cliente](access_policies_create.md).

   1. Escolha **Criar grupo de usuários**.

   1. Retorne à guia original e atualize a lista de grupos. Em seguida, marque a caixa de seleção do novo grupo.

1. Escolha **Adicionar usuário aos grupos**.

O console exibe uma mensagem de status informando que o usuário foi adicionado aos grupos que você especificou.

------

### Para adicionar permissões copiando-as de outro usuário do IAM
<a name="users_change_permissions-add-copy-console"></a>

Se você optar por adicionar permissões a um usuário do IAM por meio de cópia de permissões, o IAM copiará todas as associações de grupo, políticas gerenciadas anexadas, políticas em linha e quaisquer limites de permissões existentes do usuário especificado e as aplicará imediatamente ao usuário selecionado no momento.

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, escolha **Users**.

1. Na lista **Usuários**, escolha o nome de usuário do IAM. 

1. Na guia **Permissões**, escolha e selecione **Adicionar permissões**.

1. Na página **Adicionar permissões**, escolha **Copiar permissões**. A lista exibe os usuários do IAM disponíveis com sua associação aos grupos e às políticas anexadas. 

1. Selecione o botão ao lado do usuário cujas permissões você deseja copiar. 

1. Escolha **Próximo** para ver uma lista de alterações a serem feitas para o usuário. Em seguida, selecione **Adicionar permissões**.

O console exibe uma mensagem de status informando que as permissões foram copiadas do usuário do IAM que você especificou.

------

### Para adicionar permissões anexando políticas diretamente ao usuário do IAM
<a name="users_change_permissions-add-directly-console"></a>

Você pode anexar uma política gerenciada diretamente a um usuário do IAM. As permissões atualizadas são aplicadas imediatamente.

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, escolha **Users**.

1. Na lista **Usuários**, escolha o nome de usuário do IAM. 

1. Na guia **Permissões**, escolha e selecione **Adicionar permissões**.

1. Na página **Adicionar permissões**, escolha **Anexar políticas diretamente**. A lista **Políticas de permissões** exibe as políticas disponíveis juntamente com os tipos de política e entidades anexadas. 

1. Selecione o botão de opção ao lado do **nome da Política** que você deseja anexar. 

1. Escolha **Próximo** para ver uma lista de alterações a serem feitas para o usuário. Em seguida, selecione **Adicionar permissões**.

O console exibe uma mensagem de status informando que a política foi adicionada ao usuário do IAM especificado.

------

### Para definir o limite de permissões de um usuário do IAM
<a name="users_change_permissions-set-boundary-console"></a>

Um limite de permissões é um atributo avançado para o gerenciamento de permissões na AWS que é usado para definir as permissões máximas que um usuário do IAM pode ter. Definir um limite de permissões restringe imediatamente as permissões do usuário do IAM ao limite, independentemente das outras permissões concedidas.

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, escolha **Users**.

1. Na lista **Usuários**, escolha o nome do usuário do IAM cujo limite de permissões você deseja alterar. 

1. Escolha a aba **Permissões**. Se necessário, abra a seção **Limite de permissões** e escolha **Definir limite de permissões**.

1. Na página **Definir limite de permissões**, em **Políticas de permissões**, selecione a política que você deseja usar para o limite de permissões.

1. Escolha **Definir limite**.

O console exibe uma mensagem de status informando que o limite de permissões foi adicionado.

------

## Alteração das permissões de um usuário (console)
<a name="users_change_permissions-change-console"></a>

O IAM permite que você altere as permissões associadas a um usuário das seguintes maneiras:
+ **Editar uma política de permissões**: edite a política em linha de um usuário, a política em linha do grupo do usuário ou edite uma política gerenciada associada ao usuário diretamente ou de um grupo. Se o usuário tiver um limite de permissões, você não poderá fornecer mais permissões além das permitidas pela política usada como o limite de permissões do usuário.
+ **Alterar o limite de permissões**: altere a política usada como o limite de permissões para o usuário. Isso pode expandir ou restringir o número máximo de permissões que um usuário pode ter. 

### Editar uma política de permissões anexada a um usuário
<a name="users_change_permissions-edit-policy-console"></a>

A alteração das permissões atualiza o acesso do usuário imediatamente.

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, escolha **Users**.

1. Na lista **Usuários**, escolha o nome do usuário do IAM cujo limite de permissões você deseja alterar. 

1. Escolha a aba **Permissões**. Se necessário, abra a seção **Limite de permissões**.

1. Escolha o nome da política que deseja editar para visualizar os detalhes da política. Escolha a guia **Entidades anexadas** para visualizar outras entidades (usuários, grupos e perfis do IAM) que poderão ser afetadas caso edite a política. 

1. Escolha a guia **Permissões** e revise as permissões concedidas pela política. Para fazer alterações nas permissões, escolha **Editar**. 

1. Edite a política e resolva as recomendações de [validação de política](access_policies_policy-validator.md). Para obter mais informações, consulte [Editar políticas do IAM](access_policies_manage-edit.md).

1. Escolha **Avançar**, revise o resumo da política e, em seguida, selecione **Salvar alterações**.

O console exibe uma mensagem de status informando que a política foi atualizada.

------

### Para alterar o limite de permissões de um usuário
<a name="users_change_permissions-change-boundary-console"></a>

A alteração de um limite de permissões atualiza o acesso do usuário imediatamente.

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, escolha **Users**.

1. Na lista **Usuários**, escolha o nome do usuário do IAM cujo limite de permissões você deseja alterar. 

1. Escolha a aba **Permissões**. Se necessário, abra a seção **Limite de permissões** e, em seguida, escolha **Alterar limite**.

1. Selecione a política que você deseja usar para o limite de permissões.

1. Escolha **Definir limite**.

O console exibe uma mensagem de status informando que o limite de permissões foi alterado.

------

## Para remover uma política de permissões de um usuário (console)
<a name="users_change_permissions-remove-policy-console"></a>

A remoção de uma política de permissões atualiza o acesso do usuário imediatamente.

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, escolha **Users**.

1. Escolha o nome do usuário cujas políticas de permissões você deseja remover. 

1. Escolha a aba **Permissões**. 

1. Se quiser remover as permissões removendo uma política existente, visualize a coluna **Anexado via** para entender como o usuário está obtendo essa política antes de escolher **Remover** para remover a política:
   + Se a política for aplicável devido à associação ao grupo, escolher **Remover** removerá o usuário do grupo. Lembre-se de que você pode ter várias políticas anexadas a um único grupo. Se você remover um usuário de um grupo, ele perderá o acesso a *todas* as políticas que recebeu por meio dessa associação ao grupo.
   + Se for uma política gerenciada anexada diretamente ao usuário, escolher **Remover** desanexará a política do usuário. Isso não afetará a política em si nem qualquer outra entidade à qual política esteja anexada.
   + Se a política for uma política incorporada em linha, a opção **Remover** removerá a política do IAM. As políticas em linha anexadas diretamente a um usuário existem somente para esse usuário.

Se a política tiver sido concedida ao usuário por meio de uma associação de grupo, o console exibirá uma mensagem de status informando que o usuário do IAM foi removido do grupo do IAM. Se a política estiver diretamente anexada ou em linha, a mensagem de status informará que a política foi removida.

------

## Para remover o limite de permissões de um usuário (console)
<a name="users_change_permissions-remove-boundary-console"></a>

A remoção do limite de permissões atualiza o acesso do usuário imediatamente.

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, escolha **Users**.

1. Na lista **Usuários**, escolha o nome do usuário do IAM cujo limite de permissões você deseja remover. 

1. Escolha a aba **Permissões**. Se necessário, abra a seção **Limite de permissões**.

1.  Escolha **Alterar limite**. Para confirmar que você deseja remover o limite de permissões, na caixa de diálogo de confirmação, escolha **Remover limite**.

O console exibe uma mensagem de status informando que o limite de permissões foi removido.

------

## Adição e remoção das permissões de um usuário (AWS CLI ou API da AWS)
<a name="users_change_permissions-add-programmatic"></a>

Para adicionar ou remover permissões de forma programática, você deve adicionar ou remover as associações a grupos, anexar ou desanexar as políticas gerenciadas ou adicionar ou excluir as políticas em linha. Para obter mais informações, consulte os tópicos a seguir.
+ [Editar usuários em grupos do IAM](id_groups_manage_add-remove-users.md)
+ [Adicionar e remover permissões de identidade do IAM](access_policies_manage-attach-detach.md)

# Senhas de usuários na AWS
<a name="id_credentials_passwords"></a>

É possível gerenciar as senhas de usuários do IAM em sua conta. Usuários do IAM precisam de senhas para acessar o Console de gerenciamento da AWS. Os usuários não precisam de senhas para acessar os recursos da AWS de forma programática ao usar a AWS CLI, o Tools for Windows PowerShell, os SDKs ou APIs da AWS. Para esses ambientes, existe a opção de atribuir [chaves de acesso](id_credentials_access-keys.md) aos usuários do IAM. Porém, existem alternativas mais seguras às chaves de acesso que recomendamos considerar primeiro. Para ter mais informações, consulte [AWSCredenciais de segurança de](security-creds.md).

**nota**  
Se um de seus usuários do IAM perder ou esquecer a senha, você *não poderá* recuperá-la do IAM. Dependendo das suas configurações, o usuário ou o administrador devem criar uma nova senha.

**Topics**
+ [

# Definir uma política de senhas de contas para usuários do IAM
](id_credentials_passwords_account-policy.md)
+ [

# Gerenciar senhas para usuários do IAM
](id_credentials_passwords_admin-change-user.md)
+ [

# Permitir que os usuários do IAM alterem as próprias senhas
](id_credentials_passwords_enable-user-change.md)
+ [

# Como um usuário do IAM altera a própria senha
](id_credentials_passwords_user-change-own.md)

# Definir uma política de senhas de contas para usuários do IAM
<a name="id_credentials_passwords_account-policy"></a>

Você pode definir uma política de senha personalizada em sua Conta da AWS para especificar requisitos de complexidade e períodos de alternância obrigatórios para suas senhas de usuários do IAM. Se você não definir uma política de senha personalizada, as senhas de usuário do IAM deverão atender à política de senha da AWS padrão. Para obter mais informações, consulte [Opções de políticas de senha personalizadas](#password-policy-details).

**Topics**
+ [

## Regras para definir uma política de senha
](#password-policy-rules)
+ [

## Permissões necessárias para definir uma política de senha
](#default-policy-permissions-required)
+ [

## Política de senha padrão
](#default-policy-details)
+ [

## Opções de políticas de senha personalizadas
](#password-policy-details)
+ [

## Para definir uma política de senha (console)
](#IAMPasswordPolicy)
+ [

## Para alterar uma política de senha (console)
](#id_credentials_passwords_account-policy-section-1)
+ [

## Para excluir uma política de senhas personalizada (console)
](#id_credentials_passwords_account-policy-section-2)
+ [

## Definir uma política de senha (AWS CLI)
](#PasswordPolicy_CLI)
+ [

## Definir uma política de senha (API da AWS)
](#PasswordPolicy_API)

## Regras para definir uma política de senha
<a name="password-policy-rules"></a>

A política de senha do IAM não se aplica à senha do Usuário raiz da conta da AWS ou às chaves de acesso do usuário do IAM. Se uma senha expirar, o usuário do IAM não poderá fazer login no Console de gerenciamento da AWS, mas poderá continuar a usar as chaves de acesso.

Quando você criar ou alterar uma política de senha, a maioria das configurações de política de senha será aplicada da próxima vez que seus usuários mudarem suas senhas. No entanto, algumas das configurações serão aplicadas imediatamente. Por exemplo: 
+ Quando os requisitos de tamanho mínimo e o tipo de caracteres forem alterados, as configurações serão aplicadas na próxima vez que os usuários mudarem suas senhas. Os usuários não serão forçados a mudar suas senhas existentes, mesmo se as senhas existentes não estiverem em conformidade com a política de senhas atualizada.
+ Quando você definir um período de expiração de senha, ele será aplicado imediatamente. Por exemplo, suponhamos que você defina um período de expiração de senha de 90 dias. Nesse caso, a senha expira para todos os usuários do IAM cuja senha existente tenha sido configurada há mais de 90 dias. Esses usuários são obrigados a alterar sua senha na próxima vez que fizerem login.

Você não pode criar uma “política de bloqueio” para bloquear um usuário fora da conta após um número especificado de tentativas de login com falha. Para maior segurança, recomendamos que você combine uma política de senha forte com a autenticação multifator (MFA). Para obter mais informações sobre MFA, consulte [Código da autenticação multifator no IAM da AWS](id_credentials_mfa.md).

## Permissões necessárias para definir uma política de senha
<a name="default-policy-permissions-required"></a>

Você deve configurar permissões para permitir que uma entidade (usuário ou função) do IAM visualize ou edite a política de senha da conta. Você pode incluir as seguintes ações de política de senha em uma política do IAM: 
+ `iam:GetAccountPasswordPolicy`: permite que a entidade visualize a política de senha para a conta
+ `iam:DeleteAccountPasswordPolicy`: permite que a entidade exclua a política de senha personalizada para a conta e reverta para a política de senha padrão
+ `iam:UpdateAccountPasswordPolicy`: permite que a entidade crie ou altere a política de senha personalizada para a conta

A política a seguir permite acesso total para visualizar e editar a política de senha da conta. Para saber mais sobre como criar uma política do IAM usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "FullAccessPasswordPolicy",
            "Effect": "Allow",
            "Action": [
                "iam:GetAccountPasswordPolicy",
                "iam:DeleteAccountPasswordPolicy",
                "iam:UpdateAccountPasswordPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Para obter informações sobre as permissões necessárias para um usuário do IAM alterar sua própria senha, consulte [Permitir que os usuários do IAM alterem as próprias senhas](id_credentials_passwords_enable-user-change.md).

## Política de senha padrão
<a name="default-policy-details"></a>

Se um administrador não definir uma política de senha personalizada, as senhas de usuário do IAM deverão atender à política de senha padrão da AWS.

A política de senha padrão impõe as seguintes condições:
+ Tamanho mínimo da senha é 8 caracteres e o máximo 128 caracteres.
+ No mínimo três dos seguintes tipos de caracteres: maiúsculas, minúsculas, números e caracteres não alfanuméricos (`! @ # $ % ^ & * ( ) _ + - = [ ] { } | '`)
+ Não ser idêntico ao nome ou endereço de e-mail da sua Conta da AWS
+ A senha nunca expira

## Opções de políticas de senha personalizadas
<a name="password-policy-details"></a>

Ao configurar uma política de senha personalizada para sua conta, você pode especificar as seguintes condições:
+ **Password minimum length** (Comprimento mínimo da senha): especifique um mínimo de seis caracteres e um máximo de 128 caracteres.
+ **Força da senha**: selecione qualquer uma das seguintes opções para definir a força das suas senhas de usuário do IAM:
  + Exigir pelo menos uma letra maiúscula do alfabeto latino (A–Z)
  + Exigir pelo menos uma letra minúscula do alfabeto latino (a–z)
  + Exigir pelo menos um número
  + Exigir pelo menos um caractere não alfanumérico `! @ # $ % ^ & * ( ) _ + - = [ ] { } | '` 
+ **Turn on password expiration** (Ativar expiração de senha): você pode selecionar e especificar no mínimo um e no máximo 1.095 dias para que as senhas de usuário do IAM permaneçam válidas após serem definidas. Por exemplo, se você especificar uma validade de 90 dias, isso afetará imediatamente todos os seus usuários. Após a mudança, os usuários que têm senhas com mais de 90 dias precisam definir uma nova senha ao acessar o console. Usuários com senhas de 75 a 89 dias recebem um aviso do Console de gerenciamento da AWS sobre a validade da senha. Os usuários do IAM podem alterar a senha a qualquer momento, desde que tenham recebido permissão para isso. Ao definir uma nova senha, o período de expiração para ela será reiniciado. Um usuário do IAM só pode ter uma senha válida por vez.
+ **Password expiration requires administrator reset** (A expiração da senha requer redefinição do administrador): selecione esta opção para impedir que os usuários do IAM usem o Console de gerenciamento da AWS para atualizar suas próprias senhas depois que elas expirarem. Antes de selecionar esta opção, confirme se a sua Conta da AWS tem mais de um usuário com permissões administrativas para redefinir as senhas de usuário do IAM. Administradores com a permissão `iam:UpdateLoginProfile` podem redefinir senhas de usuário do IAM. Usuários do IAM com permissões `iam:ChangePassword` e chaves de acesso ativas podem redefinir sua própria senha do console do usuário do IAM programaticamente. Se você desmarcar esta caixa de seleção, os usuários do IAM com senhas expiradas ainda deverão definir uma nova senha para que possam acessar o Console de gerenciamento da AWS.
+ **Allow users to change their own password** (Permitir que os usuários alterem suas próprias senhas): você pode permitir que todos os usuários do IAM na conta alterem suas próprias senhas. Isso dá aos usuários acesso à ação `iam:ChangePassword` somente para seu usuário e à ação `iam:GetAccountPasswordPolicy`. Essa opção não anexa uma política de permissões a cada usuário. Em vez disso, o IAM aplica as permissões no nível da conta a todos os usuários. Ou então, você pode permitir que apenas alguns usuários gerenciem suas próprias senhas. Para fazer isso, desmarque esta caixa de seleção. Para obter mais informações sobre o uso de políticas para limitar quem pode gerenciar senhas, consulte [Permitir que os usuários do IAM alterem as próprias senhas](id_credentials_passwords_enable-user-change.md).
+ **Prevent password reuse** (Impedir a reutilização de senha): você pode impedir que os usuários do IAM reutilizem um número específico de senhas anteriores. Você pode especificar um número mínimo de 1 e um número máximo de 24 senhas anteriores que não podem ser repetidas. 

## Para definir uma política de senha (console)
<a name="IAMPasswordPolicy"></a>

Você pode usar o Console de gerenciamento da AWS para criar, alterar ou excluir uma política de senha. As alterações na política de senha se aplicam aos usuários do IAM criados após essa alteração de política e aos usuários existentes do IAM ao alterarem suas senhas.

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, selecione **Configurações da conta**.

1. Na seção **Password policy** (Política de senha), escolha **Edit** (Editar). 

1. Escolha **Custom** (Personalizada) para usar uma política de senha personalizada.

1. Selecione as opções que você deseja aplicar à política de senha e escolha **Save changes (Salvar alterações)**. 

1. Confirme se deseja definir uma política de senha personalizada escolhendo **Set custom** (Definir personalizada).

O console exibe uma mensagem de status informando que os requisitos de senha para os usuários do IAM foram atualizados.

------

## Para alterar uma política de senha (console)
<a name="id_credentials_passwords_account-policy-section-1"></a>

Você pode usar o Console de gerenciamento da AWS para criar, alterar ou excluir uma política de senha. As alterações na política de senha se aplicam aos usuários do IAM criados após essa alteração de política e aos usuários existentes do IAM ao alterarem suas senhas.

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, selecione **Configurações da conta**.

1. Na seção **Password policy** (Política de senha), escolha **Edit** (Editar). 

1. Selecione as opções que você deseja aplicar à política de senha e escolha **Save changes (Salvar alterações)**. 

1. Confirme se deseja definir uma política de senha personalizada escolhendo **Set custom** (Definir personalizada).

O console exibe uma mensagem de status informando que os requisitos de senha para os usuários do IAM foram atualizados.

------

## Para excluir uma política de senhas personalizada (console)
<a name="id_credentials_passwords_account-policy-section-2"></a>

Você pode usar o Console de gerenciamento da AWS para criar, alterar ou excluir uma política de senha. As alterações na política de senha se aplicam aos usuários do IAM criados após essa alteração de política e aos usuários existentes do IAM ao alterarem suas senhas.

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, selecione **Configurações da conta**.

1. Na seção **Password policy** (Política de senha), escolha **Edit** (Editar). 

1. Escolha **IAM default** (Padrão do IAM) para excluir a política de senha personalizada e escolha **Save changes** (Salvar alterações).

1. Confirme se deseja definir a política de senha padrão do IAM escolhendo **Set default** (Definir padrão).

O console exibe uma mensagem de status informando que a política de senha está definida como padrão do IAM.

------

## Definir uma política de senha (AWS CLI)
<a name="PasswordPolicy_CLI"></a>

Você pode usar o AWS Command Line Interface para definir uma política de senha.

**Para gerenciar a política de senha de conta personalizada a no AWS CLI**  
Execute os seguintes comandos:
+ Para criar ou alterar a política de senha personalizada: [https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html)
+ Para exibir a política de senha: [https://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html) 
+ Para excluir a política de senha personalizada: [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html) 

## Definir uma política de senha (API da AWS)
<a name="PasswordPolicy_API"></a>

Você pode usar operações de AWS API para definir uma política de senha.

**Para gerenciar a política de senha de conta personalizada na AWS API**  
Chame as seguintes operações:
+ Para criar ou alterar a política de senha personalizada: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html)
+ Para exibir a política de senha: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html) 
+ Para excluir a política de senha personalizada: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccountPasswordPolicy.html) 

# Gerenciar senhas para usuários do IAM
<a name="id_credentials_passwords_admin-change-user"></a>

Os usuários do IAM que usarem o Console de gerenciamento da AWS para trabalhar com recursos da AWS deverão ter uma senha para fazer login. Você pode criar, alterar ou excluir uma senha de um usuário do IAM em sua conta da AWS. 

Depois de ter atribuído uma senha a um usuário, o usuário pode fazer login no Console de gerenciamento da AWS usando o URL de login para a sua conta, que é semelhante a: 

```
https://12-digit-AWS-account-ID or alias.signin.aws.amazon.com/console
```

Para obter mais informações sobre como usuários do IAM fazem login no Console de gerenciamento da AWS, consulte [Como fazer login na conta da AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do Início de Sessão da AWS*. 

Mesmo que os usuários tenham suas próprias senhas, eles ainda precisarão de permissões para acessar seus recursos da AWS. Por padrão, um usuário não tem nenhuma permissão. Para conceder aos seus usuários as permissões de que precisam, atribua políticas a eles ou aos grupos aos quais pertencem. Para obter informações sobre a criação de usuários e grupos, consulte [Identidades do IAM](id.md). Para obter informações sobre o uso de políticas para definir permissões, consulte [Alterar permissões de um usuário do IAM](id_users_change-permissions.md). 

É possível conceder aos usuários permissão para alterar as próprias senhas. Para obter mais informações, consulte [Permitir que os usuários do IAM alterem as próprias senhas](id_credentials_passwords_enable-user-change.md). Para obter informações sobre como os usuários acessam a página de login, consulte [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html), no *Guia do usuário do Início de Sessão da AWS*. 

**Topics**
+ [

## Criar, alterar ou excluir uma senha de usuário do IAM (console)
](#id_credentials_passwords_admin-change-user_console)

## Criar, alterar ou excluir uma senha de usuário do IAM (console)
<a name="id_credentials_passwords_admin-change-user_console"></a>

Você pode usar o Console de gerenciamento da AWS para gerenciar senhas de seus usuários do IAM.

As necessidades de acesso dos usuários podem mudar com o tempo. Talvez seja necessário habilitar um usuário destinado ao acesso à CLI para ter acesso ao console, alterar a senha de um usuário porque ele recebeu o e-mail com suas credenciais ou excluir um usuário quando ele sair da organização ou não precisar mais de acesso à AWS. 

### Para criar uma senha de usuário do IAM (console)
<a name="id_credentials_passwords_admin-change-user-section-1"></a>

Use este procedimento para conceder acesso ao console a um usuário, criando uma senha associada ao nome de usuário.

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, escolha **Users**.

1. Escolha o nome do usuário cuja senha você deseja criar. 

1. Escolha a guia **Credenciais de segurança** e, em **Login no console**, escolha **Habilitar acesso ao console**.

1. Na caixa de diálogo **Habilitar acesso ao console**, selecione **Redefinir senha** e escolha se o IAM deve gerar uma senha ou criar uma senha personalizada: 
   + Para que o IAM gere uma senha, escolha a opção **Autogenerated password** (Senha gerada automaticamente).
   + Para criar uma senha personalizada, escolha **Senha personalizada** e digite a senha. 
**nota**  
A senha que você criou deve cumprir a [política de senhas](id_credentials_passwords_account-policy.md) da conta.

1. Para exigir que o usuário crie uma nova senha ao fazer login, escolha **Exigir alteração de senha no próximo login**. 

1. Para exigir que o usuário use a nova senha imediatamente, selecione **Revogar sessões ativas do console**. Esse procedimento anexa uma política em linha ao usuário do IAM que nega o acesso do usuário aos recursos caso as credenciais sejam mais antigas do que o período especificado pela política.

1. Escolha **Redefinir senha**

1. A caixa de diálogo **Senha do console** informa que você ativou a nova senha do usuário. Para visualizar a senha e compartilhá-la com o usuário, escolha **Mostrar** na caixa de diálogo **Senha do console**. Selecione **Baixar arquivo .csv** para baixar um arquivo com as credenciais do usuário.
**Importante**  
Por motivos de segurança, você não pode acessar a senha depois de concluir esta etapa, mas pode criar uma nova senha a qualquer momento.

O console exibe uma mensagem de status informando que o acesso ao console foi habilitado.

------

### Para alterar a senha para um usuário do IAM (console)
<a name="id_credentials_passwords_admin-change-user-section-2"></a>

Use este procedimento para atualizar uma senha associada ao nome de usuário.

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, escolha **Users**.

1. Escolha o nome do usuário cuja senha você deseja alterar. 

1. Escolha a guia **Credenciais de segurança** e, em **Login no console**, escolha **Gerenciar acesso ao console**.

1. Na caixa de diálogo **Gerenciar acesso ao console**, selecione **Redefinir senha** e, em seguida, escolha se deseja que o IAM gere uma senha ou crie uma senha personalizada: 
   + Para que o IAM gere uma senha, escolha a opção **Autogenerated password** (Senha gerada automaticamente).
   + Para criar uma senha personalizada, escolha **Senha personalizada** e digite a senha. 
**nota**  
A senha que você criou deve cumprir a [política de senhas](id_credentials_passwords_account-policy.md) da conta.

1. Para exigir que o usuário crie uma nova senha ao fazer login, escolha **Exigir alteração de senha no próximo login**. 

1. Para exigir que o usuário use a nova senha imediatamente, selecione **Revogar sessões ativas do console**. Esse procedimento anexa uma política em linha ao usuário do IAM que nega o acesso do usuário aos recursos caso as credenciais sejam mais antigas do que o período especificado pela política.

1. Escolha **Redefinir senha**

1. A caixa de diálogo **Senha do console** informa que você ativou a nova senha do usuário. Para visualizar a senha e compartilhá-la com o usuário, escolha **Mostrar** na caixa de diálogo **Senha do console**. Selecione **Baixar arquivo .csv** para baixar um arquivo com as credenciais do usuário.
**Importante**  
Por motivos de segurança, você não pode acessar a senha depois de concluir esta etapa, mas pode criar uma nova senha a qualquer momento.

O console exibe uma mensagem de status informando que o acesso ao console foi atualizado.

------

### Para excluir (desabilitar) a senha de um usuário do IAM (console)
<a name="id_credentials_passwords_admin-change-user-section-3"></a>

Use este procedimento para excluir uma senha associada ao nome de usuário, removendo o acesso do usuário ao console.

**Importante**  
Você pode impedir que um usuário do IAM acesse o Console de gerenciamento da AWS removendo a senha dele. Isso impede que ele faça login no Console de gerenciamento da AWS usando suas credenciais de login. Isso não altera as permissões do usuário nem o impede de acessar o console usando uma função assumida. Se o usuário tiver chaves de acesso ativas, elas continuarão funcionando e permitirão o acesso por meio da AWS CLI, do Tools for Windows PowerShell, da API da AWS ou do AWS Console Mobile Application.

------
#### [ Console ]

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Como fazer login na AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Guia do usuário do AWS Sign-In*.

1. Na **Página inicial do console do IAM**, no painel de navegação à esquerda, insira sua consulta na caixa de texto **Pesquisar IAM**.

1. No painel de navegação, escolha **Users**.

1. Escolha o nome do usuário cuja senha você deseja excluir. 

1. Escolha a guia **Credenciais de segurança** e, em **Login no console**, escolha **Gerenciar acesso ao console**.

1. Para requerer que o usuário pare de usar o console imediatamente, selecione **Revogar sessões ativas do console**. Esse procedimento anexa uma política em linha ao usuário do IAM que nega o acesso do usuário aos recursos caso as credenciais sejam mais antigas do que o período especificado pela política.

1. Escolha **Desabilitar acesso**

O console exibe uma mensagem de status informando que o acesso ao console foi desabilitado.

------

### Criar, alterar ou excluir uma senha de usuário do IAM (AWS CLI)
<a name="Using_ManagingPasswordsCLIAPI"></a>

Você pode usar a API da AWS CLI para gerenciar as senhas de seus usuários do IAM.

**Para criar uma senha (AWS CLI)**

1. (Opcional) Para determinar se um usuário tem uma senha, execute este comando: [aws iam get-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html)

1. Para criar uma senha, execute o seguinte comando: [aws iam create-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/create-login-profile.html)

**Para alterar a senha de um usuário (AWS CLI)**

1. (Opcional) Para determinar se um usuário tem uma senha, execute este comando: [aws iam get-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html)

1. Para alterar uma senha, execute o seguinte comando: [aws iam update-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/update-login-profile.html)

**Para excluir (desabilitar) a senha de um usuário (AWS CLI)**

1. (Opcional) Para determinar se um usuário tem uma senha, execute este comando: [aws iam get-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/get-login-profile.html)

1. (Opcional) Para determinar quando uma senha foi usada pela última vez, execute este comando: [aws iam get-login-user](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user.html)

1. Para excluir uma senha, execute o seguinte comando: [aws iam delete-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-login-profile.html)

**Importante**  
Quando você excluir a senha de um usuário, o usuário não poderá mais fazer login no Console de gerenciamento da AWS. Se o usuário tiver chaves de acesso ativas, elas continuarão funcionando e permitirão o acesso por meio da AWS CLI, do Tools for Windows PowerShell ou de chamadas de função da API da AWS. Ao usar a AWS CLI, o Tools for Windows PowerShell ou a API da AWS para excluir um usuário da sua Conta da AWS, você deve primeiro excluir a senha usando essa operação. Para obter mais informações, consulte [Exclusão de um usuário do IAM (AWS CLI)](id_users_remove.md#id_users_deleting_cli). 

**Para revogar as sessões ativas do console de um usuário antes de um horário especificado (AWS CLI)**

1. Para incorporar uma política em linha que revogue as sessões ativas do console de um usuário do IAM antes de um horário especificado, use a seguinte política em linha e execute este comando: [aws iam put-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-user-policy.html)

   Essa política em linha nega todas as permissões e inclui a chave de condição `aws:TokenIssueTime`. Ela revoga as sessões ativas do console do usuário antes do horário especificado no elemento `Condition` da política em linha. Substitua o valor da chave de condição `aws:TokenIssueTime` pelos seus próprios valores.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Deny",
       "Action": "*",
       "Resource": "*",
       "Condition": {
         "DateLessThan": {
           "aws:TokenIssueTime": "2014-05-07T23:47:00Z"
         }
       }
     }
   }
   ```

------

1. (Opcional) Para listar os nomes das políticas em linha incorporadas no usuário do IAM, execute este comando: [aws iam list-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-user-policies.html)

1. (Opcional) Para listar os nomes das políticas em linha incorporadas no usuário do IAM, execute este comando: [aws iam list-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user-policy.html)

### Criar, alterar ou excluir uma senha de usuário do IAM (API da AWS)
<a name="Using_ManagingPasswordsAPI"></a>

Você pode usar a API da AWS para gerenciar as senhas de seus usuários do IAM.

**Para criar uma senha (API da AWS)**

1. (Opcional) Para determinar se um usuário tem uma senha, chame esta operação: [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)

1. Para criar uma senha, chame esta operação: [CreateLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateLoginProfile.html)

**Para alterar a senha de um usuário (API da AWS)**

1. (Opcional) Para determinar se um usuário tem uma senha, chame esta operação: [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)

1. Para alterar uma senha, chame esta operação: [UpdateLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateLoginProfile.html)

**Para excluir (desabilitar) a senha de um usuário (API da AWS)**

1. (Opcional) Para determinar se um usuário tem uma senha, execute este comando: [GetLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetLoginProfile.html)

1. (Opcional) Para determinar quando uma senha foi usada pela última vez, execute este comando: [GetUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html)

1. Para excluir uma senha, execute o seguinte comando: [DeleteLoginProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteLoginProfile.html)

**Importante**  
Quando você excluir a senha de um usuário, o usuário não poderá mais fazer login no Console de gerenciamento da AWS. Se o usuário tiver chaves de acesso ativas, elas continuarão funcionando e permitirão o acesso por meio da AWS CLI, do Tools for Windows PowerShell ou de chamadas de função da API da AWS. Ao usar a AWS CLI, o Tools for Windows PowerShell ou a API da AWS para excluir um usuário da sua Conta da AWS, você deve primeiro excluir a senha usando essa operação. Para obter mais informações, consulte [Exclusão de um usuário do IAM (AWS CLI)](id_users_remove.md#id_users_deleting_cli). 

**Para revogar as sessões ativas do console de um usuário antes de um horário especificado (API AWS)**

1. Para incorporar uma política em linha que revogue as sessões ativas do console de um usuário do IAM antes de um horário especificado, use a seguinte política em linha e execute este comando: [PutUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutUserPolicy.html)

   Essa política em linha nega todas as permissões e inclui a chave de condição `aws:TokenIssueTime`. Ela revoga as sessões ativas do console do usuário antes do horário especificado no elemento `Condition` da política em linha. Substitua o valor da chave de condição `aws:TokenIssueTime` pelos seus próprios valores.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Deny",
       "Action": "*",
       "Resource": "*",
       "Condition": {
         "DateLessThan": {
           "aws:TokenIssueTime": "2014-05-07T23:47:00Z"
         }
       }
     }
   }
   ```

------

1. (Opcional) Para listar os nomes das políticas em linha incorporadas no usuário do IAM, execute este comando: [ListUserPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUserPolicies.html)

1. (Opcional) Para listar os nomes das políticas em linha incorporadas no usuário do IAM, execute este comando: [GetUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUserPolicy.html)

# Permitir que os usuários do IAM alterem as próprias senhas
<a name="id_credentials_passwords_enable-user-change"></a>

**nota**  
Usuários com identidades federadas usarão o processo definido pelo provedor de identidade para alterar as senhas. Como [prática recomendada](best-practices.md), exija que os usuários humanos usem a federação com um provedor de identidades para acessar a AWS usando credenciais temporárias.

Você pode conceder aos usuários do IAM permissão para alterar as próprias senhas para fazer login no Console de gerenciamento da AWS. É possível fazer isso de duas formas:
+ [Permitir que todos os usuários do IAM na conta alterem as próprias senhas](#proc_letalluserschangepassword). 
+ [Permitir que apenas usuários selecionados do IAM alterem as próprias senhas](#proc_letselectuserschangepassword). Nesse cenário, você desabilita a opção para todos os usuários alterarem suas próprias senhas e usa uma política do IAM para conceder permissões a apenas alguns usuários. Essa abordagem permite que esses usuários mudem suas próprias senhas e, opcionalmente, outras credenciais, como suas próprias chaves de acesso. 

**Importante**  
Recomendamos que você [defina uma política de senha personalizada](id_credentials_passwords_account-policy.md) que exija que os usuários do IAM criem senhas fortes.

## Para permitir que todos os usuários do IAM alterem as próprias senhas
<a name="proc_letalluserschangepassword"></a>

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, clique em **Account settings (Configurações da conta)**.

1. Na seção **Password policy** (Política de senha), escolha **Edit** (Editar).

1. Escolha **Custom** (Personalizada) para usar uma política de senha personalizada.

1. Selecione **Allow users to change their own password** (Permitir que os usuários alterem sua própria senha) e clique em **Save changes** (Salvar alterações). Isso permite que todos os usuários na conta acessem a ação `iam:ChangePassword` somente para seu usuário e para a ação `iam:GetAccountPasswordPolicy`.

1. Forneça aos usuários as seguintes instruções para alterar as senhas: [Como um usuário do IAM altera a própria senha](id_credentials_passwords_user-change-own.md). 

------
#### [ AWS CLI ]

Execute o seguinte comando:
+ `[aws iam update-account-password-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html)`

------
#### [ API ]

Para criar um alias para o URL da página de login do Console de gerenciamento da AWS, chame a seguinte operação:
+ `[UpdateAccountPasswordPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html)` 

------

## Para permitir que usuários selecionados do IAM alterem as próprias senhas
<a name="proc_letselectuserschangepassword"></a>

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, clique em **Account settings (Configurações da conta)**. 

1. Na seção **Password policy (Políticas da conta)**, verifique se a opção **Allow users to change their own password (Permitir que os usuários alterem a própria senha)** não está selecionada. Se essa caixa de seleção estiver marcada, todos os usuários poderão alterar as próprias senhas. (Consulte o procedimento anterior). 

1. Crie usuários capazes de alterar as próprias senhas, se eles ainda não existirem. Para obter detalhes, consulte [Criar um usuário do IAM na Conta da AWS](id_users_create.md). 

1. (Opcional) Crie um grupo do IAM para usuários que devem ter permissão para alterar as senhas e adicione os usuários da etapa anterior ao grupo. Para obter detalhes, consulte [Grupos de usuários do IAM](id_groups.md). 

1. Atribua a política a seguir ao grupo. Para obter mais informações, consulte [Gerenciar políticas do IAM](access_policies_manage.md).

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "iam:GetAccountPasswordPolicy",
         "Resource": "*"
       },
       {
         "Effect": "Allow",
         "Action": "iam:ChangePassword",
         "Resource": "arn:aws:iam::*:user/${aws:username}"
       }
     ]
   }
   ```

------

   Essa política concede acesso à ação [ChangePassword](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html), que permite aos usuários alterar somente as próprias senhas do console, da AWS CLI, do Tools for Windows PowerShell ou ou da API. Isso também concede acesso à ação [GetAccountPasswordPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html), que permite ao usuário ver a política de senha atual; essa permissão é necessária para que o usuário possa exibir a política de senhas da conta na página **Change Password (Alterar senha)**. O usuário deve poder ler a política de senha atual para garantir que a senha alterada esteja de acordo com os requisitos da política.

1. Forneça aos usuários as seguintes instruções para alterar as senhas: [Como um usuário do IAM altera a própria senha](id_credentials_passwords_user-change-own.md). 

------

### Para obter mais informações
<a name="HowToPwdIAMUser-moreinfo"></a>

Para obter mais informações sobre o gerenciamento de credenciais, consulte os seguintes tópicos:
+ [Permitir que os usuários do IAM alterem as próprias senhas](#id_credentials_passwords_enable-user-change) 
+ [Senhas de usuários na AWS](id_credentials_passwords.md)
+ [Definir uma política de senhas de contas para usuários do IAM](id_credentials_passwords_account-policy.md)
+ [Gerenciar políticas do IAM](access_policies_manage.md)
+ [Como um usuário do IAM altera a própria senha](id_credentials_passwords_user-change-own.md)

# Como um usuário do IAM altera a própria senha
<a name="id_credentials_passwords_user-change-own"></a>

Se você tiver recebido permissão para alterar a própria senha de usuário do IAM, poderá usar uma página especial no Console de gerenciamento da AWS para fazer isso. Você também pode usar a AWS CLI ou a API da AWS.

**Topics**
+ [

## Permissões obrigatórias
](#change-own-passwords-permissions-required)
+ [

## Como os usuários do IAM alteram a própria senha (console)
](#ManagingUserPwdSelf-Console)
+ [

## Como os usuários do IAM alteram suas próprias senhas (AWS CLI ou API da AWS)
](#ManagingUserPwdSelf-CLIAPI)

## Permissões obrigatórias
<a name="change-own-passwords-permissions-required"></a>

Para mudar a senha do seu próprio usuário do IAM, você deve ter as permissões da seguinte política: [AWS: permite que os usuários do IAM alterem suas próprias senhas do console na página Credenciais de segurança](reference_policies_examples_aws_my-sec-creds-self-manage-password-only.md).

## Como os usuários do IAM alteram a própria senha (console)
<a name="ManagingUserPwdSelf-Console"></a>

O procedimento a seguir descreve como os usuários do IAM podem usar o Console de gerenciamento da AWS para alterar sua própria senha.

**Para alterar sua própria senha de usuário do IAM (console)**

1. Use o ID ou o alias da conta da AWS, o nome de usuário do IAM e a senha para fazer login no [console do IAM](https://console.aws.amazon.com/iam).
**nota**  
Para sua conveniência, a página de login da AWS usa um cookie do navegador para lembrar seu nome de usuário e as informações da conta do IAM. Se você já tiver feito login como outro usuário, escolha **Sign in to a different account** (Fazer login com uma conta diferente) próximo à parte inferior da página para retornar à página de login principal. Daí, você pode inserir o ID ou o alias da conta da AWS para ser redirecionado para a página de login de usuário do IAM da sua conta.

   Para obter o ID da Conta da AWS, fale com o administrador.

1. No canto superior direito da barra de navegação, escolha seu nome de usuário e selecione **Security credentials** (Credenciais de segurança).   
![\[Link para credenciais de segurança do Console de Gerenciamento da AWS\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Na guia **Credenciais do AWS IAM**, escolha **Atualizar senha**.

1. Em **Current password (Senha atual)**, insira a sua senha atual. Insira uma nova senha em **New password (Nova senha)** e **Confirm new password (Confirmar nova senha)**. Em seguida, selecione **Atualizar senha**.
**nota**  
Se a conta tiver uma política de senha, a nova senha deverá atender aos requisitos dessa política. Para obter mais informações, consulte [Definir uma política de senhas de contas para usuários do IAM](id_credentials_passwords_account-policy.md). 

## Como os usuários do IAM alteram suas próprias senhas (AWS CLI ou API da AWS)
<a name="ManagingUserPwdSelf-CLIAPI"></a>

O procedimento a seguir descreve como os usuários do IAM podem usar a AWS CLI ou a API da AWS para alterar sua própria senha.

**Para alterar sua própria senha do IAM, use o seguinte:**
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/change-password.html](https://docs.aws.amazon.com/cli/latest/reference/iam/change-password.html)
+ AWS API da: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ChangePassword.html)

# Gerenciar chaves de acesso para usuários do IAM
<a name="id_credentials_access-keys"></a>

**Importante**  
Como [prática recomendada](best-practices.md), use credenciais de segurança temporárias (como perfis do IAM), em vez de criar credenciais de longo prazo, como as chaves de acesso. Antes de criar chaves de acesso, avalie as [alternativas às chaves de acesso de longo prazo](security-creds-programmatic-access.md#security-creds-alternatives-to-long-term-access-keys).

As chaves de acesso são credenciais de longo prazo para um usuário do IAM ou o Usuário raiz da conta da AWS. Você pode usar chaves de acesso para assinar solicitações programáticas na AWS CLI ou na API da AWS (diretamente ou usando o SDK da AWS). Para obter mais informações, consulte [Acesso programático com credenciais de segurança da AWS](security-creds-programmatic-access.md).

As chaves de acesso consistem em duas partes: um ID de chave de acesso (por exemplo, `AKIAIOSFODNN7EXAMPLE`) e uma chave de acesso secreta (por exemplo, `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`). Você deve usar o ID da chave de acesso e a chave de acesso secreta em conjunto para autenticar suas solicitações.



Ao criar um par de chaves de acesso, salve o ID de chave de acesso e a chave de acesso secreta em um local seguro. A chave de acesso secreta pode ser recuperada somente no momento em que você a cria. Se tiver perdido a chave de acesso secreta, você deverá excluir a chave de acesso e criar uma nova. Para obter mais instruções, consulte [Atualizar chaves de acesso](id-credentials-access-keys-update.md).

É possível ter um máximo de duas chaves de acesso por usuário.

**Importante**  
Usuários do IAM com chaves de acesso são um risco à segurança da conta. Gerencie suas chaves de acesso com segurança. Não as forneça a terceiros não autorizados, mesmo que seja para ajudar a [localizar os identificadores da sua conta](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html). Ao fazer isso, você pode dar a alguém acesso permanente à sua conta.  
Ao trabalhar com chaves de acesso, tenha em mente o seguinte:  
**NÃO** use as credenciais de usuário-raiz da sua conta para criar chaves de acesso.
**NÃO** coloque chaves de acesso literais ou informações de credenciais em seus arquivos de aplicações. 
**NÃO** inclua arquivos que contenham informações de chaves de acesso ou de credenciais em sua área de projeto.
As informações de chaves de acesso ou de credenciais armazenadas no arquivo de credenciais da AWS compartilhado são armazenadas em texto simples.

## Recomendações de monitoramento
<a name="monitor-access-keys"></a>

Após criar chaves de acesso:
+ Use o AWS CloudTrail para monitorar o uso da chave de acesso e detectar quaisquer tentativas de acesso não autorizadas. Para obter mais informações, consulte [Registro em log de chamadas de API do IAM e do AWS STS com o AWS CloudTrail](cloudtrail-integration.md).
+ Configure alarmes do CloudWatch para notificar os administradores sobre tentativas de acesso negado para ajudar a detectar atividades maliciosas. Para obter mais informações, consulte o [Guia do usuário do Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/).
+ Revise, atualize e exclua regularmente as chaves de acesso conforme necessário.

Os tópicos a seguir detalham as tarefas de gerenciamento associadas a chaves de acesso.

**Topics**
+ [

## Recomendações de monitoramento
](#monitor-access-keys)
+ [

# Controle o uso de chaves de acesso anexando uma política em linha a um usuário do IAM
](access-keys_inline-policy.md)
+ [

# Permissões necessárias para gerenciar chaves de acesso
](access-keys_required-permissions.md)
+ [

# Como os usuários do IAM podem gerenciar suas próprias chaves de acesso
](access-key-self-managed.md)
+ [

# Como um administrador do IAM pode gerenciar as chaves de acesso do usuário do IAM
](access-keys-admin-managed.md)
+ [

# Atualizar chaves de acesso
](id-credentials-access-keys-update.md)
+ [

# Proteger chaves de acesso
](securing_access-keys.md)

# Controle o uso de chaves de acesso anexando uma política em linha a um usuário do IAM
<a name="access-keys_inline-policy"></a>

Outra prática recomendada é exigir que as [workloads usem credenciais temporárias com perfis do IAM](best-practices.md#bp-workloads-use-roles) para acessar a AWS. Os usuários do IAM com chaves de acesso devem ter acesso com privilégios mínimos e ter a [autenticação multifator (MFA](id_credentials_mfa.md)) ativada. Para obter mais informações sobre como presumir um perfil do IAM, consulte [Métodos para assumir um perfil](id_roles_manage-assume.md).

No entanto, se você estiver criando um teste de prova de conceito de uma automação de serviço ou outro caso de uso de curto prazo e optar por executar workloads usando um usuário do IAM com chaves de acesso, recomendamos [usar condições de políticas para restringir ainda mais o acesso](best-practices.md#use-policy-conditions) das credenciais de usuário do IAM.

Nessa situação, você pode criar uma política com limite de tempo que expira as credenciais após o tempo especificado ou, se estiver executando uma workload em uma rede segura, você pode usar uma política de restrição de IP.

Para ambos os casos de uso, você pode usar uma política em linha anexada ao usuário do IAM que tem chaves de acesso.

**Para configurar uma política com limite de tempo para um usuário do IAM**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **Usuários** e escolha o usuário para o caso de uso de curto prazo. Se você ainda não criou o usuário, pode [criar o usuário](getting-started-workloads.md) agora.

1. Na página **Detalhes** do usuário, selecione a guia **Permissões**.

1. Escolha **Adicionar permissões** e, em seguida, selecione **Criar política em linha**.

1. Na seção **Editor de políticas**, selecione **JSON** para exibir o editor JSON.

1. No editor JSON, insira a política a seguir, substituindo o valor do `aws:CurrentTime`carimbo de data/hora pela data e hora de expiração desejadas:

------
#### [ JSON ]

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Deny",
         "Action": "*",
         "Resource": "*",
         "Condition": {
         "DateGreaterThan": {
         "aws:CurrentTime": "2025-03-01T00:12:00Z"
           }
         }
       }
     ]
   }
   ```

------

   Essa política usa o efeito `Deny` para restringir todas as ações em todos os recursos após a data especificada. A condição `DateGreaterThan` compara a hora atual com o carimbo de data/hora que você definiu.

1. Selecione **Avançar** para ir para a página **Revisar e criar**. Em detalhes da **Política**, em **Nome da política**, insira um nome para a política e escolha **Criar política**.

Depois que a política é criada, ela é exibida na guia **Permissões** do usuário. Quando a hora atual for maior ou igual à hora especificada na política, o usuário não terá mais acesso aos recursos da AWS. Certifique-se de informar os desenvolvedores da workload sobre a data de expiração que você especificou para essas chaves de acesso. 

**Para configurar uma política de restrição de IP para um usuário do IAM**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Usuários** e selecione o usuário que executará a workload na rede segura. Se você ainda não criou o usuário, pode [criar o usuário](getting-started-workloads.md) agora.

1. Na página **Detalhes** do usuário, selecione a guia **Permissões**.

1. Escolha **Adicionar permissões** e, em seguida, selecione **Criar política em linha**.

1. Na seção **Editor de políticas**, selecione **JSON** para exibir o editor JSON.

1. Copie a seguinte política do IAM para o editor JSON e altere os endereços IPv4 ou IPv6 públicos ou os intervalos de acordo com suas necessidades. Você pode usar [https://checkip.amazonaws.com](https://checkip.amazonaws.com/) para determinar seu endereço IP público. Você pode especificar endereços IP individuais ou intervalos de endereços IP usando a notação de barra. Para obter mais informações, consulte [aws:SourceIp](reference_policies_condition-keys.md#condition-keys-sourceip). 
**nota**  
Os endereços IP não devem ser ofuscados por uma VPN ou um servidor proxy.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid":"IpRestrictionIAMPolicyForIAMUser",
         "Effect": "Deny",
         "Action": "*",
         "Resource": "*",
         "Condition": {
           "NotIpAddress": {
             "aws:SourceIp": [
               "203.0.113.0/24",
               "2001:DB8:1234:5678::/64",
               "203.0.114.1"
             ]
           },
           "BoolIfExists": {
             "aws:ViaAWSService": "false"
           }
         }
       }
     ]
   }
   ```

------

   Este exemplo de política nega o uso das chaves de acesso de um usuário do IAM com essa política aplicada, a menos que a solicitação tenha sido originada das redes (especificadas na notação CIDR) "203.0.113.0/24", "2001:DB8:1234:5678::/64" ou do endereço IP específico "203.0.114.1" 

1. Selecione **Avançar** para ir para a página **Revisar e criar**. Em detalhes da **Política**, em **Nome da política**, insira um nome para a política e escolha **Criar política**.

Depois que a política é criada, ela é exibida na guia **Permissões** do usuário. 

Você também pode aplicar essa política como uma política de controle de serviço (SCP) em várias contas da AWS bo AWS Organizations. Recomendamos usar uma condição adicional, `aws:PrincipalArn`, para que essa declaração de política se aplique apenas aos usuários do IAM nas contas da AWS sujeitas a esse SCP. A política a seguir inclui essa atualização:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IpRestrictionServiceControlPolicyForIAMUsers",
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": [
            "203.0.113.0/24",
            "2001:DB8:1234:5678::/64",
            "203.0.114.1"
          ]
        },
        "BoolIfExists": {
          "aws:ViaAWSService": "false"
        },
        "ArnLike": {
          "aws:PrincipalArn": "arn:aws:iam::*:user/*"
        }
      }
    }
  ]
}
```

------

# Permissões necessárias para gerenciar chaves de acesso
<a name="access-keys_required-permissions"></a>

**nota**  
`iam:TagUser` é uma permissão opcional para adicionar e editar descrições da chave de acesso. Para obter mais informações, consulte . [Marcar usuários do IAM](id_tags_users.md)

Para criar chaves de acesso para seu próprio usuário do IAM, você deve ter as permissões na seguinte política:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateOwnAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:CreateAccessKey",
                "iam:GetUser",
                "iam:ListAccessKeys",
                "iam:TagUser"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}
```

------

Para atualizar chaves de acesso para seu próprio usuário do IAM, é necessário ter as permissões da política a seguir:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ManageOwnAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:CreateAccessKey",
                "iam:DeleteAccessKey",
                "iam:GetAccessKeyLastUsed",
                "iam:GetUser",
                "iam:ListAccessKeys",
                "iam:UpdateAccessKey",
                "iam:TagUser"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}
```

------

# Como os usuários do IAM podem gerenciar suas próprias chaves de acesso
<a name="access-key-self-managed"></a>

Os administradores do IAM podem conceder aos usuários do IAM a permissão para autogerenciar as chaves de acesso anexando a política descrita em [Permissões necessárias para gerenciar chaves de acesso](access-keys_required-permissions.md).

Com essas permissões, o usuário do IAM pode usar os procedimentos a seguir para criar, ativar, desativar e excluir as chaves de acesso associadas ao nome de usuário.

**Topics**
+ [

## Criar uma chave de acesso para você mesmo (console)
](#Using_CreateAccessKey)
+ [

## Desativar a chave de acesso (console)
](#deactivate-access-key-seccreds)
+ [

## Ativar a chave de acesso (console)
](#activate-access-key-seccreds)
+ [

## Excluir a chave de acesso (console)
](#delete-access-key-seccreds)

## Criar uma chave de acesso para você mesmo (console)
<a name="Using_CreateAccessKey"></a>

Caso tenha recebido as permissões apropriadas, você poderá usar o Console de gerenciamento da AWS para criar chaves de acesso para você mesmo.

**Para criar, modificar ou excluir suas próprias chaves de acesso (console)**

1. Use o ID ou o alias da conta da AWS, o nome de usuário do IAM e a senha para fazer login no [console do IAM](https://console.aws.amazon.com/iam).
**nota**  
Para sua conveniência, a página de login da AWS usa um cookie do navegador para lembrar seu nome de usuário e as informações da conta do IAM. Se você já tiver feito login como outro usuário, escolha **Sign in to a different account** (Fazer login com uma conta diferente) próximo à parte inferior da página para retornar à página de login principal. Daí, você pode inserir o ID ou o alias da conta da AWS para ser redirecionado para a página de login de usuário do IAM da sua conta.

   Para obter o ID da Conta da AWS, fale com o administrador.

1. No canto superior direito da barra de navegação, escolha seu nome de usuário e selecione **Security credentials** (Credenciais de segurança).   
![\[Link para credenciais de segurança do Console de Gerenciamento da AWS\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Na seção **Chaves de acesso**, escolha **Criar chave de acesso**. Caso você já tenha duas chaves de acesso, este botão ficará desativado, e você deverá excluir uma chave de acesso antes de criar uma nova.

1. Na página **Access key best practices and alternatives** (Práticas recomendadas e alternativas da chave de acesso), escolha seu caso de uso para saber mais sobre outras opções que ajudam a evitar a criação de uma chave de acesso de longo prazo. Se você determinar que seu caso de uso ainda requer uma chave de acesso, escolha **Other** (Outro) e escolha **Next** (Avançar).

1. (Opcional) Defina um valor de etiqueta de descrição para a chave de acesso. Essa ação adiciona um par de chave-valor de etiqueta ao usuário do IAM. Isso pode ajudar a identificar e a atualizar as chaves de acesso posteriormente. A chave da etiqueta é definida como o ID da chave de acesso. O valor da etiqueta é definido com a descrição da chave de acesso que você especifica. Quando terminar, escolha **Create access key** (Criar chave de acesso).

1. Na página **Retrieve access keys** (Recuperar chaves de acesso), escolha **Show** (Exibir) para revelar o valor da chave de acesso secreta do usuário ou **Download .csv file** (Baixar o arquivo.csv). Essa é a única oportunidade de salvar a chave de acesso secreta. Depois de salvar a chave de acesso secreta em um local seguro, escolha **Done** (Concluído).

## Desativar a chave de acesso (console)
<a name="deactivate-access-key-seccreds"></a>

Caso tenha recebido as permissões apropriadas, você poderá usar o Console de gerenciamento da AWS para desativar a chave de acesso.

**Para desativar uma chave de acesso**

1. Use o ID ou o alias da conta da AWS, o nome de usuário do IAM e a senha para fazer login no [console do IAM](https://console.aws.amazon.com/iam).
**nota**  
Para sua conveniência, a página de login da AWS usa um cookie do navegador para lembrar seu nome de usuário e as informações da conta do IAM. Se você já tiver feito login como outro usuário, escolha **Sign in to a different account** (Fazer login com uma conta diferente) próximo à parte inferior da página para retornar à página de login principal. Daí, você pode inserir o ID ou o alias da conta da AWS para ser redirecionado para a página de login de usuário do IAM da sua conta.

   Para obter o ID da Conta da AWS, fale com o administrador.

1. No canto superior direito da barra de navegação, escolha seu nome de usuário e selecione **Security credentials** (Credenciais de segurança).   
![\[Link para credenciais de segurança do Console de Gerenciamento da AWS\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Na seção **Access keys** (Chaves de acesso), localize a chave que você deseja desativar, escolha **Actions** (Ações) e escolha **Deactivate** (Desativar). Quando a confirmação for solicitada, escolha **Deactivate** (Desativar). A chave de acesso desativada ainda conta para o limite de duas chaves de acesso.

## Ativar a chave de acesso (console)
<a name="activate-access-key-seccreds"></a>

Caso tenha recebido as permissões apropriadas, você poderá usar o Console de gerenciamento da AWS para ativar a chave de acesso.

**Para ativar uma chave de acesso**

1. Use o ID ou o alias da conta da AWS, o nome de usuário do IAM e a senha para fazer login no [console do IAM](https://console.aws.amazon.com/iam).
**nota**  
Para sua conveniência, a página de login da AWS usa um cookie do navegador para lembrar seu nome de usuário e as informações da conta do IAM. Se você já tiver feito login como outro usuário, escolha **Sign in to a different account** (Fazer login com uma conta diferente) próximo à parte inferior da página para retornar à página de login principal. Daí, você pode inserir o ID ou o alias da conta da AWS para ser redirecionado para a página de login de usuário do IAM da sua conta.

   Para obter o ID da Conta da AWS, fale com o administrador.

1. No canto superior direito da barra de navegação, escolha seu nome de usuário e selecione **Security credentials** (Credenciais de segurança).   
![\[Link para credenciais de segurança do Console de Gerenciamento da AWS\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Na seção **Access keys** (Chaves de acesso), localize a chave que deseja ativar, escolha **Actions** (Ações) e escolha **Activate** (Ativar).

## Excluir a chave de acesso (console)
<a name="delete-access-key-seccreds"></a>

Caso tenha recebido as permissões apropriadas, você poderá usar o Console de gerenciamento da AWS para excluir a chave de acesso.

**Para excluir uma chave de acesso quando não precisar mais dela**

1. Use o ID ou o alias da conta da AWS, o nome de usuário do IAM e a senha para fazer login no [console do IAM](https://console.aws.amazon.com/iam).
**nota**  
Para sua conveniência, a página de login da AWS usa um cookie do navegador para lembrar seu nome de usuário e as informações da conta do IAM. Se você já tiver feito login como outro usuário, escolha **Sign in to a different account** (Fazer login com uma conta diferente) próximo à parte inferior da página para retornar à página de login principal. Daí, você pode inserir o ID ou o alias da conta da AWS para ser redirecionado para a página de login de usuário do IAM da sua conta.

   Para obter o ID da Conta da AWS, fale com o administrador.

1. No canto superior direito da barra de navegação, escolha seu nome de usuário e selecione **Security credentials** (Credenciais de segurança).   
![\[Link para credenciais de segurança do Console de Gerenciamento da AWS\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Na seção **Access keys** (Chaves de acesso), localize a chave que deseja excluir, escolha **Actions** (Ações) e escolha **Delete** (Excluir). Siga as instruções na caixa de diálogo para primeiro **Deactivate** (Desativar) e depois confirme a exclusão. Recomendamos verificar se a chave de acesso não está mais em uso antes de excluí-la permanentemente.

# Como um administrador do IAM pode gerenciar as chaves de acesso do usuário do IAM
<a name="access-keys-admin-managed"></a>

Os administradores do IAM podem criar, ativar, desativar e excluir as chaves de acesso associadas a usuários do IAM individuais. Eles também podem listar os usuários do IAM na conta que têm chaves de acesso e localizar qual usuário do IAM tem uma chave de acesso específica.

**Topics**
+ [

## Como criar uma chave de acesso para um usuário do IAM
](#admin-create-access-key)
+ [

## Para desativar uma chave de acesso para um usuário do IAM
](#admin-deactivate-access-key)
+ [

## Para ativar uma chave de acesso para um usuário do IAM
](#admin-activate-access-key)
+ [

## Como excluir uma chave de acesso para um usuário do IAM
](#admin-delete-access-key)
+ [

## Para listar as chaves de acesso de um usuário do IAM
](#admin-list-access-key)
+ [

## Para listar as chaves de acesso de um usuário do IAM
](#admin-list-access-key)
+ [

## Para exibir todos os IDs de chave de acesso dos usuários na conta
](#admin-list-all-access-keys)
+ [

## Para usar um ID de chave de acesso para localizar um usuário
](#admin-find-user-access-keys)
+ [

## Para localizar o uso mais recente de um ID de chave de acesso
](#admin-find-most-recent-use-access-keys)

## Como criar uma chave de acesso para um usuário do IAM
<a name="admin-create-access-key"></a>

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Usuários**.

1. Escolha o nome do usuário para ir para a página de detalhes do usuário.

1. Na guia **Credenciais de segurança**, na seção **Chaves de acesso**, escolha **Criar chave de acesso**.

   Se esse botão estiver desativado, você deverá excluir uma das chaves de acesso existentes antes de criar outra.

1. Na página **Access key best practices and alternatives** (Práticas recomendadas e alternativas de chaves de acesso), analise as práticas recomendadas e alternativas. Escolha seu caso de uso para saber mais sobre outras opções que ajudam a evitar a criação de uma chave de acesso de longo prazo.

1. Se você determinar que seu caso de uso ainda requer uma chave de acesso, escolha **Other** (Outro) e escolha **Next** (Avançar).

1. **(Opcional)** Na página **Definir tag de descrição**, você pode adicionar uma tag de descrição à chave de acesso para ajudar a rastreá-la. Selecione **Criar chave de acesso**.

1. Na página **Retrieve access keys** (Recuperar chaves de acesso), escolha **Show** (Exibir) para revelar o valor da chave de acesso secreta do usuário.

1. Para salvar o ID da chave de acesso e a chave de acesso secreta em um arquivo `.csv` em um local seguro no computador, escolha o botão **Download .csv file** (Baixar arquivo .csv).
**Importante**  
Esta é a única oportunidade de visualizar ou fazer download da chave de acesso recém-criada, e você não poderá recuperá-la posteriormente. Certifique-se de manter a chave de acesso protegida.

Quando você cria uma chave de acesso para seu usuário, o par de chaves é ativo por padrão, e você pode usar o par imediatamente.

------
#### [ AWS CLI ]

Execute este comando:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)

------
#### [ API ]

Chame a seguinte operação:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html) 

------

## Para desativar uma chave de acesso para um usuário do IAM
<a name="admin-deactivate-access-key"></a>

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Usuários**.

1. Escolha o nome do usuário para ir para a página de detalhes do usuário.

1. Na guia **Credenciais de segurança**, na seção **Chaves de acesso**, escolha o menu suspenso **Ações** e, em seguida, **Desativar**.

1. Na caixa de diálogo **Desativar**, confirme que você deseja desativar a chave de acesso selecionando **Desativar**

Depois que uma chave de acesso é desativada, ela não pode mais ser usada por chamadas de API. Você poderá ativá-la novamente, se necessário.

------
#### [ AWS CLI ]

Execute este comando:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)

------
#### [ API ]

Chame a seguinte operação:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html) 

------

## Para ativar uma chave de acesso para um usuário do IAM
<a name="admin-activate-access-key"></a>

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Usuários**.

1. Escolha o nome do usuário para ir para a página de detalhes do usuário.

1. Na guia **Credenciais de segurança**, na seção **Chaves de acesso**, escolha o menu suspenso **Ações** e, em seguida, **Ativar**.

Depois que uma chave de acesso é ativada, ela pode ser usada por chamadas de API. Você poderá desativá-la novamente, se necessário.

------
#### [ AWS CLI ]

Execute este comando:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)

------
#### [ API ]

Chame a seguinte operação:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html) 

------

## Como excluir uma chave de acesso para um usuário do IAM
<a name="admin-delete-access-key"></a>

Depois que uma chave de acesso tiver sido desativada, se ela não for mais necessária, exclua-a.

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Usuários**.

1. Escolha o nome do usuário para ir para a página de detalhes do usuário.

1. Na guia **Credenciais de segurança**, na seção **Chaves de acesso**, escolha o menu suspenso **Ações** para a chave de acesso inativa e, em seguida, **Excluir**.

1. Na caixa de diálogo **Excluir**, confirme que você deseja excluir a chave de acesso inserindo o ID da chave de acesso no campo de entrada de texto e, em seguida, selecionando **Excluir**.

Depois que uma chave de acesso é excluída, ela não pode ser recuperada.

------
#### [ AWS CLI ]

Execute este comando:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)

------
#### [ API ]

Chame a seguinte operação:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html) 

------

## Para listar as chaves de acesso de um usuário do IAM
<a name="admin-list-access-key"></a>

Você pode visualizar uma lista dos IDs de chave de acesso associados a um usuário do IAM. 

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Usuários**.

1. Escolha o nome do usuário para ir para a página de detalhes do usuário.

1. Na guia **Credenciais de segurança**, a seção **Chaves de acesso** lista as chaves de acesso do usuário.

Cada usuário do IAM pode ter duas chaves de acesso.

------
#### [ AWS CLI ]

Execute este comando:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)

------
#### [ API ]

Chame a seguinte operação:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html) 

------

## Para listar as chaves de acesso de um usuário do IAM
<a name="admin-list-access-key"></a>

Você pode visualizar uma lista dos IDs de chave de acesso associados a um usuário do IAM. 

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Usuários**.

1. Escolha o nome do usuário para ir para a página de detalhes do usuário.

1. Na guia **Credenciais de segurança**, a seção **Chaves de acesso** lista os IDs de chave de acesso do usuário, incluindo o status de cada chave exibida.
**nota**  
Somente o ID de chave de acesso do usuário é visível. A chave de acesso secreta só pode ser recuperada quando a chave é criada.

Cada usuário do IAM pode ter duas chaves de acesso.

------
#### [ AWS CLI ]

Execute este comando:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)

------
#### [ API ]

Chame a seguinte operação:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html) 

------

## Para exibir todos os IDs de chave de acesso dos usuários na conta
<a name="admin-list-all-access-keys"></a>

É possível visualizar uma lista dos IDs de chave de acesso dos usuários na Conta da AWS. 

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Usuários**.

1. Escolha o nome do usuário para ir para a página de detalhes do usuário.

1. Se necessário, adicione a coluna **Access key ID** à tabela de usuários concluindo as etapas a seguir:

   1. Acima da tabela, na extrema direita, selecione o ícone de **Preferências** (![\[Preferences icon\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/console-settings-icon.console.png)).

   1. Na caixa de diálogo **Preferências**, em **Selecionar colunas visíveis**, ative o **ID da chave de acesso**.

   1. Escolha **Confirmar** para retornar à lista de usuários. A lista é atualizada para incluir o ID da chave de acesso.

1. A coluna **ID da chave de acesso** mostra o estado de cada chave de acesso, seguido de seu ID; por exemplo, **`Active - AKIAIOSFODNN7EXAMPLE`** ou **`Inactive - AKIAI44QH8DHBEXAMPLE`**. 

   Você pode usar essas informações para visualizar e copiar os IDs das chaves de acesso para usuários com uma ou duas chaves de acesso. A coluna exibe **`-`** para usuários sem chave de acesso.
**nota**  
A chave de acesso secreta só pode ser recuperada quando a chave é criada.

Cada usuário do IAM pode ter duas chaves de acesso.

------

## Para usar um ID de chave de acesso para localizar um usuário
<a name="admin-find-user-access-keys"></a>

Você pode usar um ID de chave de acesso para localizar um usuário na Conta da AWS. 

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, na caixa de pesquisa, insira o **ID da chave de acesso**. Por exemplo, AKIAI44QH8DHBEXAMPLE. 

1. O usuário do IAM ao qual o ID da chave de acesso está associado aparece no painel de navegação. Escolha o nome do usuário para ir para a página de detalhes do usuário.

------

## Para localizar o uso mais recente de um ID de chave de acesso
<a name="admin-find-most-recent-use-access-keys"></a>

O uso mais recente de uma chave de acesso é exibido na lista do usuário na página de usuários do IAM, na página de detalhes do usuário, e faz parte do relatório de credenciais. 

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Na lista de usuários, consulte a coluna **Chave de acesso usada pela última vez**.

   Se a coluna não for exibida, escolha o ícone de **Preferências** (![\[Preferences icon\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/console-settings-icon.console.png)) e, em **Selecionar colunas visíveis**, ative **Última chave de acesso usada** para exibir a coluna.

1. (opcional) No painel de navegação, em **Relatórios de acesso**, selecione **Relatório de credenciais** para fazer download de um relatório que inclua as informações da última chave de acesso usada para todos os usuários do IAM na conta.

1. (opcional) Selecione o usuário do IAM para visualizar os detalhes de usuário. A seção **Resumo** inclui os IDs das chaves de acesso, o status e quando foram usadas pela última vez.

------
#### [ AWS CLI ]

Execute este comando:
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)

------
#### [ API ]

Chame a seguinte operação:
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html) 

------

# Atualizar chaves de acesso
<a name="id-credentials-access-keys-update"></a>

Como [melhor prática](best-practices.md#update-access-keys) de segurança, sugerimos atualizar as chaves de acesso do usuário do IAM quando necessário, por exemplo, quando um funcionário sair da sua empresa. Os usuários do IAM poderão atualizar suas próprias chaves de acesso se tiverem recebido as permissões necessárias.

Para obter detalhes sobre a concessão de permissões aos usuários do IAM para atualizar suas próprias chaves de acesso, consulte [AWS: permite que os usuários do IAM gerenciem suas próprias senhas, chaves de acesso e chaves públicas SSH na página Credenciais de segurança](reference_policies_examples_aws_my-sec-creds-self-manage-pass-accesskeys-ssh.md). Você também pode aplicar uma política de senha à sua conta para exigir que todos os seus usuários do IAM atualizem suas senhas periodicamente e definir a frequência com a qual eles devem fazer isso. Para obter mais informações, consulte [Definir uma política de senhas de contas para usuários do IAM](id_credentials_passwords_account-policy.md). 

**nota**  
Se tiver perdido a chave de acesso secreta, você deverá excluir a chave de acesso e criar uma nova. A chave de acesso secreta pode ser recuperada somente no momento em que você a cria. Use esse procedimento para desativar e substituir chaves de acesso perdidas por novas credenciais.

**Topics**
+ [

## Atualização das chaves de acesso do usuário do IAM (console)
](#rotating_access_keys_console)
+ [

## Atualização das chaves de acesso (AWS CLI)
](#rotating_access_keys_cli)
+ [

## Atualização de chaves de acesso (API da AWS)
](#rotating_access_keys_api)

## Atualização das chaves de acesso do usuário do IAM (console)
<a name="rotating_access_keys_console"></a>

É possível atualizar as chaves de acesso via Console de gerenciamento da AWS.

**Para atualizar as chaves de acesso de um usuário do IAM sem interromper suas aplicações (console)**

1. Embora a primeira chave de acesso ainda esteja ativa, crie uma segunda chave de acesso.

   1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   1. No painel de navegação, escolha **Usuários**.

   1. Selecione o nome do usuário desejado e, em seguida, selecione a guia **Credenciais de segurança**.

   1. Na seção **Chaves de acesso**, escolha **Criar chave de acesso**. Na página **Access key best practices & alternatives** (Práticas recomendadas e alternativas da chave de acesso), escolha **Other** (Outro) e escolha **Next** (Avançar).

   1. (Opcional) Defina um valor de etiqueta de descrição para a chave de acesso para adicionar um par chave-valor de etiqueta a esse usuário do IAM. Isso pode ajudar a identificar e a atualizar as chaves de acesso posteriormente. A chave da etiqueta é definida como o ID da chave de acesso. O valor da etiqueta é definido com a descrição da chave de acesso que você especifica. Quando terminar, escolha **Create access key** (Criar chave de acesso).

   1. Na página **Retrieve access keys** (Recuperar chaves de acesso), escolha **Show** (Exibir) para revelar o valor da chave de acesso secreta do usuário ou **Download .csv file** (Baixar o arquivo.csv). Essa é a única oportunidade de salvar a chave de acesso secreta. Depois de salvar a chave de acesso secreta em um local seguro, escolha **Done** (Concluído).

      Quando você cria uma chave de acesso para seu usuário, o par de chaves é ativo por padrão, e você pode usar o par imediatamente. Neste momento, o usuário terá duas chaves de acesso ativas.

1. Atualize todos os aplicativos e ferramentas para usarem a nova chave de acesso.

1. <a name="id_credentials_access-keys-key-still-in-use"></a>Determine se a primeira chave de acesso ainda está em uso, analisando a informação **Last used** (Usado pela última vez) da chave de acesso mais antiga. Uma maneira é esperar vários dias e depois verificar se a chave de acesso antiga foi usada antes de prosseguir.

1. Mesmo se a informação **Last used** (Usada pela última vez) indicar que a chave antiga nunca foi usada, recomendamos que você não exclua imediatamente a primeira chave de acesso. Em vez disso, escolha **Actions** (Ações) e escolha **Deactivate** (Desativar) para desativar a primeira chave de acesso.

1. Use somente a nova chave de acesso para confirmar que seus aplicativos estão funcionando. Todos os aplicativos e ferramentas que ainda usarem a chave de acesso original deixarão de funcionar nesse momento, pois eles não terão mais acesso aos recursos da AWS. Se encontrar uma aplicação ou ferramenta nessa situação, você poderá reativar a primeira chave de acesso. Em seguida, retorne a [Step 3](#id_credentials_access-keys-key-still-in-use) e atualize esse aplicativo para usar a nova chave.

1. Depois de aguardar um período para garantir que todos os aplicativos e as ferramentas sejam atualizadas, você poderá excluir a primeira chave de acesso:

   1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   1. No painel de navegação, escolha **Usuários**.

   1. Selecione o nome do usuário desejado e, em seguida, selecione a guia **Credenciais de segurança**.

   1. Na seção **Access keys** (Chaves de acesso) da chave de acesso que deseja excluir, escolha **Actions** (Ações) e escolha **Delete** (Excluir). Siga as instruções na caixa de diálogo para primeiro **Deactivate** (Desativar) e depois confirme a exclusão.

**Para determinar quais chaves de acesso precisam ser atualizadas ou excluídas (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Usuários**.

1. Se necessário, adicione a coluna **Idade da chave de acesso** à tabela de usuários concluindo as etapas a seguir:

   1. Acima da tabela, no canto direito, selecione o ícone de configurações (![\[Settings icon\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/console-settings-icon.console.png)).

   1. Em **Gerenciar colunas**, selecione **Idade da chave de acesso**.

   1. Escolha **Fechar** para retornar à lista de usuários.

1. A coluna **Idade da chave de acesso** mostra o número de dias desde que a chave de acesso ativa mais antiga foi criada. É possível usar essas informações para encontrar usuários com chaves de acesso que precisem ser atualizadas ou excluídas. A coluna exibe **Nenhum** para usuários sem chaves de acesso.

## Atualização das chaves de acesso (AWS CLI)
<a name="rotating_access_keys_cli"></a>

É possível atualizar as chaves de acesso via AWS Command Line Interface.

**Para atualizar chaves de acesso sem interromper suas aplicações (AWS CLI)**

1. Embora a primeira chave de acesso ainda esteja ativa, crie uma segunda chave de acesso, que é ativada por padrão. Execute o seguinte comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)

     Neste momento, o usuário terá duas chaves de acesso ativas.

1. <a name="step-update-apps"></a>Atualize todos os aplicativos e ferramentas para usarem a nova chave de acesso.

1. <a name="step-determine-use"></a>Determinar se a primeira chave de acesso ainda está em uso por meio deste comando:
   +  [https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)

   Uma maneira é esperar vários dias e depois verificar se a chave de acesso antiga foi usada antes de prosseguir.

1. Mesmo se etapa [Step 3](#step-determine-use) indicar que não há uso da chave antiga, recomendamos que você não exclua imediatamente a primeira chave de acesso. Em vez disso, altere o estado da primeira chave de acesso para `Inactive` usando este comando:
   +  [https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-access-key.html)

1. Use somente a nova chave de acesso para confirmar que seus aplicativos estão funcionando. Todos os aplicativos e ferramentas que ainda usarem a chave de acesso original deixarão de funcionar nesse momento, pois eles não terão mais acesso aos recursos da AWS. Se encontrar uma aplicação ou ferramenta nessa situação, alterne o estado para `Active` para reativar a primeira chave de acesso. Em seguida, retorne à etapa [Step 2](#step-update-apps) e atualize esse aplicativo para usar a nova chave.

1. Depois de aguardar um período para garantir que todos os aplicativos e as ferramentas sejam atualizadas, você poderá excluir a primeira chave de acesso com este comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)

## Atualização de chaves de acesso (API da AWS)
<a name="rotating_access_keys_api"></a>

É possível atualizar chaves de acesso usando a API da AWS.

**Para atualizar chaves de acesso sem interromper suas aplicações (API da AWS)**

1. Embora a primeira chave de acesso ainda esteja ativa, crie uma segunda chave de acesso, que é ativada por padrão. Chame a seguinte operação:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html)

     Neste momento, o usuário terá duas chaves de acesso ativas.

1. <a name="step-update-apps-2"></a>Atualize todos os aplicativos e ferramentas para usarem a nova chave de acesso.

1. <a name="step-determine-use-2"></a>Determinar se a primeira chave de acesso ainda está em uso chamando esta operação:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html)

   Uma maneira é esperar vários dias e depois verificar se a chave de acesso antiga foi usada antes de prosseguir.

1. Mesmo se etapa [Step 3](#step-determine-use-2) indicar que não há uso da chave antiga, recomendamos que você não exclua imediatamente a primeira chave de acesso. Em vez disso, altere o estado da primeira chave de acesso para `Inactive` chamando esta operação:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html)

1. Use somente a nova chave de acesso para confirmar que seus aplicativos estão funcionando. Todos os aplicativos e ferramentas que ainda usarem a chave de acesso original deixarão de funcionar nesse momento, pois eles não terão mais acesso aos recursos da AWS. Se encontrar uma aplicação ou ferramenta nessa situação, alterne o estado para `Active` para reativar a primeira chave de acesso. Em seguida, retorne à etapa [Step 2](#step-update-apps-2) e atualize esse aplicativo para usar a nova chave.

1. Depois de aguardar um período para garantir que todos os aplicativos e as ferramentas sejam atualizadas, você poderá excluir a primeira chave de acesso chamando esta operação:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html)

# Proteger chaves de acesso
<a name="securing_access-keys"></a>

Qualquer pessoa que tem suas chaves de acesso possui o mesmo nível de acesso a seus recursos da AWS que você tiver. Consequentemente, a AWS executa vários procedimentos para proteger suas chaves de acesso e, de acordo com o nosso [modelo de responsabilidade compartilhada](https://aws.amazon.com/compliance/shared-responsibility-model/), você deve fazer o mesmo. 

Expanda as seções a seguir para obter orientação sobre como proteger suas chaves de acesso. 

**nota**  
Sua organização pode ter requisitos e políticas de segurança diferentes dos descritos neste tópico. As sugestões fornecidas aqui devem ser usadas como diretrizes gerais. 

## Remova (ou não gere) as chaves de acesso de Usuário raiz da conta da AWS
<a name="root-password"></a>

**Uma das melhores maneiras de proteger a sua conta é não ter chaves de acesso para seu Usuário raiz da conta da AWS.** A não ser que você tenha que ter chaves de acesso do usuário raiz (algo que é raro), é melhor não criá-las. Em vez disso, crie um usuário administrativo Centro de Identidade do AWS IAM para as tarefas administrativas diárias. Para obter informações sobre como criar um usuário administrativo no Centro de Identidade do IAM, consulte [Introdução](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html) no *Guia do usuário do Centro de Identidade do IAM*.

Se você já tiver uma chave de acesso para o usuário raiz, recomendamos o seguinte: encontre lugares em suas aplicações onde você usa chaves de acesso (se houver) e substitua a chave de acesso do usuário raiz por chaves de acesso de usuário do IAM. Em seguida, desabilite e remova as chaves de acesso do usuário raiz. Para obter mais informações sobre como atualizar as chaves de acesso, consulte [Atualizar chaves de acesso](id-credentials-access-keys-update.md)



## Usar credenciais de segurança temporárias (perfis do IAM) em vez de chaves de acesso de longo prazo
<a name="use-roles"></a>

Em muitos casos, você não precisa de chaves de acesso de longo prazo que nunca expiram (como há no caso de um usuário do IAM). Em vez disso, você pode criar perfis do IAM e gerar credenciais de segurança temporárias. As credenciais de segurança temporárias consistem em um ID da chave de acesso e uma chave de acesso secreta, mas elas também incluem um token de segurança que indica quando as credenciais expiram. 

As chaves de acesso de longo prazo, como aquelas associadas a contas de usuários do IAM e ao usuário raiz, permanecem válidas até serem revogadas manualmente. No entanto, as credenciais de segurança temporárias obtidas por meio de perfis do IAM e outros recursos do AWS Security Token Service expiram após um curto período. Use credenciais de segurança temporárias para ajudar a reduzir os riscos em caso de credenciais que sejam expostas acidentalmente.

Use um perfil do IAM e credenciais de segurança temporárias nestes cenários:
+ **Você tem uma aplicação ou scripts da AWS CLI em execução em uma instância do Amazon EC2**. Não use chaves de acesso diretamente em sua aplicação. Não passe uma chave de acesso para a aplicação, não incorpore-a na aplicação nem deixe que a aplicação leia chaves de acesso de nenhuma fonte. Em vez disso, defina um perfil do IAM que tenha as permissões apropriadas para sua aplicação e execute a instância do Amazon Elastic Compute Cloud (Amazon EC2) com [perfis para o EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html). Fazer isso associará um perfil do IAM à instância do Amazon EC2. Essa prática também permite que a aplicação obtenha credenciais de segurança temporárias que ela pode, por sua vez, usar para fazer chamadas programáticas para a AWS. Os SDKs da AWS e a AWS Command Line Interface (AWS CLI) podem obter credenciais temporárias do perfil automaticamente. 
+ **Você precisa conceder acesso entre contas.** Use um perfil do IAM para estabelecer confiança entre contas e, em seguida, conceda aos usuários em uma conta permissões limitadas para acessar a conta confiável. Para obter mais informações, consulte [Tutorial do IAM: Delegar acesso entre contas da AWS usando funções do IAM](tutorial_cross-account-with-roles.md).
+ **Você tem um aplicativo móvel.** Não integre chaves de acesso à aplicação, mesmo em armazenamento criptografado. Em vez disso, use o [Amazon Cognito](https://aws.amazon.com/cognito/) para gerenciar a identidade do usuário na sua aplicação. Esse serviço permite autenticar os usuários usando login com o Amazon, Facebook, Google ou qualquer provedor de identidade compatível com o OpenID Connect (OIDC). Em seguida, é possível usar o provedor de credenciais do Amazon Cognito para gerenciar credenciais que sua aplicação use para fazer solicitações à AWS.
+ **Você deseja centralizar-se na AWS e sua organização tem suporte para SAML 2.0.** Se você trabalha para uma organização que tenha um provedor de identidade compatível com o SAML 2.0, configure o provedor para usar o SAML. É possível usar o SAML para trocar informações de autenticação com a AWS e obter novamente um conjunto de credenciais de segurança temporárias. Para obter mais informações, consulte [Federação SAML 2.0](id_roles_providers_saml.md).
+ **Você deseja se federar na AWS e sua organização tem um armazenamento de identidades on-premises**. Se os usuários podem autenticar dentro da sua organização, você poderá escrever um aplicativo que emite a eles credenciais de segurança temporárias para acesso a recursos da AWS. Para obter mais informações, consulte [Habilitar o acesso do intermediador de identidades personalizado ao console da AWS](id_roles_providers_enable-console-custom-url.md).
+ **Use condições nas políticas do IAM para permitir somente o acesso das redes esperadas.** Você pode limitar onde e como suas chaves de acesso são usadas ao implementar [políticas do IAM com condições](reference_policies_elements_condition_operators.md) que especificam e permitem somente redes esperadas, como seus endereços IP públicos ou nuvens privadas virtuais (VPCs). Dessa forma, você sabe que as chaves de acesso só poderão ser usadas em redes esperadas e aceitáveis. 

**nota**  
Você está usando uma instância do Amazon EC2 com uma aplicação que precisa de acesso programático a recursos da AWS? Se sim, use [perfis do IAM para EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html).

## Gerenciar chaves de acesso de usuário do IAM corretamente
<a name="iam-user-access-keys"></a>

Se for necessário criar chaves de acesso para acesso programático à AWS, crie-as para usuários do IAM, concedendo aos usuários somente as permissões necessárias.

Observe estas precauções para ajudar a proteger as chaves de acesso de usuários do IAM:
+ **Não incorpore chaves de acesso diretamente no código.** Os [SDKs da AWS](https://aws.amazon.com/tools/#sdk) e as [Ferramentas da linha de comando da AWS](https://aws.amazon.com/tools/#cli) permitem colocar chaves de acesso em pontos conhecidos para que você não precise mantê-las no código. 

  Coloque chaves de acesso em um dos seguintes locais:
  + **O arquivo de credenciais da AWS.** Os SDKs da AWS e a AWS CLI usam automaticamente as credenciais que você armazena no arquivo de credenciais da AWS. 

    Para obter informações sobre como usar o arquivo de credenciais da AWS, consulte a documentação do SDK. Os exemplos incluem [Configurar credenciais e região da AWS](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup-credentials.html) no *Guia do desenvolvedor do AWS SDK para Java* e [Arquivos de configuração e credenciais](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) no *Guia do usuário da AWS Command Line Interface*.

    Para armazenar credenciais para o AWS SDK para .NET e o AWS Tools for Windows PowerShell, recomendamos que você use a SDK Store. Para obter mais informações, consulte [Utilização da SDK Store](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/sdk-store.html) no *Guia do desenvolvedor do AWS SDK para .NET*.
  + **Variáveis de ambiente.** Em um sistema multicliente, escolha as variáveis de ambiente do usuário, não as variáveis de ambiente do sistema. 

    Para obter mais informações sobre o uso de variáveis de ambiente para armazenar credenciais, consulte [Variáveis de ambiente](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html) no *Guia do usuário da AWS Command Line Interface*. 
+ **Use chaves de acesso diferentes para aplicativos diferentes.** Faça isso para que seja possível isolar as permissões e revogar as chaves de acesso para aplicações específicas caso elas sejam expostas. Ter chaves de acesso separadas para diferentes aplicativos também gera entradas distintas em arquivos de log do [AWS CloudTrail](https://aws.amazon.com/cloudtrail/). Essa configuração facilita a determinação de qual aplicativo executou ações específicas. 
+ **Atualize as chaves de acesso quando necessário.** Se houver risco de comprometimento da chave de acesso, atualize a chave de acesso e exclua a chave de acesso anterior. Para obter detalhes, consulte [Atualizar chaves de acesso](id-credentials-access-keys-update.md) 
+ **Remover chaves de acesso não utilizadas.** Se um usuário sair da sua organização, remova o usuário do IAM correspondente para que ele não possa mais acessar seus recursos. Para saber quando uma chave de acesso foi usada pela última vez, use a API [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html) (comando da AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)).
+ **Use credenciais temporárias e configure a autenticação multifator para suas operações de API mais confidenciais.** Com as políticas do IAM, você pode especificar quais operações de API um usuário tem permissão para chamar. Em alguns casos, talvez você deseje obter segurança adicional para exigir que os usuários sejam autenticados com a MFA da AWS antes que eles tenham permissão para executar ações particularmente confidenciais. Por exemplo, você pode ter uma política que permita que um usuário execute as ações `RunInstances`, `DescribeInstances` e `StopInstances` do Amazon EC2. Mas você pode restringir uma ação destrutiva, tal como `TerminateInstances` e garantir que os usuários possam executar essa ação apenas se eles autenticarem com um dispositivo MFA da AWS. Para obter mais informações, consulte [Acesso seguro à API com a MFA](id_credentials_mfa_configure-api-require.md).

## Acessar o aplicativo móvel usando chaves de acesso da AWS
<a name="access-keys-mobile-app"></a>

Você pode acessar um conjunto limitado de serviços e recursos da AWS usando o aplicativo móvel AWS. O aplicativo móvel ajuda a oferecer suporte à resposta a incidentes em trânsito. Para obter mais informações e fazer download do aplicativo, consulte [Aplicativo móvel do console da AWS](https://aws.amazon.com/console/mobile/).

Você pode fazer login no aplicativo móvel usando sua senha do console ou suas chaves de acesso. Como prática recomendada, não use chaves de acesso de usuário raiz. Em vez disso, recomendamos enfaticamente que, além de utilizar uma senha ou um acesso biométrico no seu dispositivo móvel, criar um usuário do IAM especificamente para gerenciar os recursos da AWS usando a aplicação móvel. Caso você perca dispositivo móvel, poderá remover o acesso do usuário do IAM.

**Para fazer login usando chaves de acesso (aplicativo móvel)**

1. Abra o aplicativo no dispositivo móvel.

1. Se esta for a primeira vez que você adiciona uma identidade ao dispositivo, escolha **Add an identity (Adicionar uma identidade)** e selecione **Access keys (Chaves de acesso)**.

   Se você já fez login usando outra identidade, escolha o ícone de menu e selecione **Switch identity (Alternar identidade)**. Depois escolha **Sign in as a different identity (Fazer login como uma identidade diferente)** e **Access keys (Chaves de acesso)**.

1. Na página **Access keys (Chaves de acesso)**, insira suas informações:
   + **ID da chave de acesso**: insira o ID da sua chave de acesso.
   + **Chave de acesso secreta**: insira sua chave de acesso secreta.
   + **Nome da identidade**: insira o nome da identidade que aparecerá na aplicação móvel. Ele não precisa ser igual ao seu nome de usuário do IAM.
   + **PIN de identidade**: crie um número de identificação pessoal (PIN) que você usará para futuros logins.
**nota**  
Se habilitar a biometria para o aplicativo móvel da AWS, você será solicitado a usar sua impressão digital ou o reconhecimento facial para verificação em vez do PIN. Se a biometria falhar, você poderá ser solicitado a fornecer o PIN.

1. Escolha **Verify and add keys (Verificar e adicionar chaves)**.

   Agora você pode acessar um conjunto selecionado dos seus recursos usando o aplicativo móvel.

## Informações relacionadas
<a name="more-resources"></a>

Os tópicos a seguir fornecem diretrizes para a configuração dos SDKs da AWS e da AWS CLI para o uso das chaves de acesso.
+ [Defina as credenciais e a região da AWS](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup-credentials.html) no *Guia do desenvolvedor do AWS SDK para Java*
+ [Utilização da SDK Store](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/sdk-store.html) no *Guia do desenvolvedor do AWS SDK para .NET*
+ [Fornecimento de credenciais para o SDK](https://docs.aws.amazon.com/aws-sdk-php/v2/guide/credentials.html) no *Guia do desenvolvedor do AWS SDK para PHP*
+ [Configuração](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#configuration) na documentação do Boto 3 (SDK da AWS para Python)
+ [Uso de credenciais da AWS](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html) no *Guia do usuário do AWS Tools for Windows PowerShell* 
+ [Arquivos de configuração e credenciais](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) no *Guia do usuário da AWS Command Line Interface* 
+ [Concessão de acesso usando um perfil do IAM](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-hosm.html) no *Guia do desenvolvedor do AWS SDK para .NET*
+ [Configuração de perfis do IAM para o Amazon EC2](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-roles.html) no *AWS SDK for Java 2.x*

## Usar credenciais da chave secreta e chave de acesso para acesso ao console
<a name="console-access-security-keys"></a>

É possível usar credenciais da chave secreta e chave de acesso para acesso direto ao Console de gerenciamento da AWS, não apenas à AWS CLI. Isso pode ser feito usando a chamada de API [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) do AWS STS. Ao criar um URL de console usando as credenciais temporárias e o token fornecidos pelo `GetFederationToken`, as entidades principais do IAM podem acessar o console. Para obter mais informações, consulte [Habilitar o acesso do intermediador de identidades personalizado ao console da AWS](id_roles_providers_enable-console-custom-url.md).

Vale esclarecer que, ao fazer login no console diretamente usando credenciais do IAM ou de usuário-raiz com o MFA ativado, o MFA será necessário. No entanto, se o método descrito acima (usar credenciais temporárias com `GetFederationToken`) for usado, o MFA NÃO será necessário.



## Fazer auditoria de chaves de acesso
<a name="Using_access-keys-audit"></a>

É possível revisar as chaves de acesso da AWS em seu código para determinar se as chaves são de uma conta que você possui. É possível transmitir um ID de chave de acesso usando o comando [https://docs.aws.amazon.com/cli/latest/reference/sts/get-access-key-info.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-access-key-info.html) da AWS CLI ou a operação da API [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetAccessKeyInfo.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetAccessKeyInfo.html) da AWS.

As operações de API da AWS e da AWS CLI retornam o ID da Conta da AWS à qual a chave de acesso pertence. Os IDs de chave de acesso que começam com `AKIA` são credenciais de longo prazo para um usuário do IAM ou um Usuário raiz da conta da AWS. Os IDs de chave de acesso que começam com `ASIA` são credenciais temporárias que são criadas usando operações do AWS STS. Se a conta na resposta pertencer a você, você poderá fazer login como usuário raiz e revisar suas chaves de acesso de usuário raiz. Em seguida, você pode obter um [relatório de credenciais](id_credentials_getting-report.md) para saber qual usuário do IAM é o proprietário das chaves. Para saber quem solicitou as credenciais temporárias para uma chave de acesso `ASIA`, visualize os eventos do AWS STS nos logs do CloudTrail.

Por motivos de segurança, você pode [revisar logs do AWS CloudTrail](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) para saber quem executou uma ação na AWS. Você pode usar a chave de condição `sts:SourceIdentity` na política de confiança da função para exigir que os usuários especifiquem uma identidade quando assumirem uma função. Por exemplo, você pode exigir que os usuários do IAM especifiquem seu próprio nome de usuário como a identidade-fonte. Isso pode ajudar você a determinar qual usuário executou uma ação específica na AWS. Para obter mais informações, consulte [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity).

Essa operação não indica o estado da chave de acesso. A chave pode estar ativa, inativa ou excluída. As chaves ativas podem não ter permissões para executar uma operação. Fornecer uma chave de acesso excluída pode retornar um erro informando que a chave não existe.

# Código da autenticação multifator no IAM da AWS
<a name="id_credentials_mfa"></a>

Para obter mais segurança, recomendamos que você configure a autenticação multifator (MFA) para ajudar a proteger seus recursos da AWS. Você pode habilitar a MFA para os Usuário raiz da conta da AWS de todas as Contas da AWS, incluindo contas autônomas, contas de gerenciamento e contas de membros, bem como para os usuários do IAM. Sempre que possível, recomendamos usar MFA resistente a phishing, como chaves de acesso e chaves de segurança. Esses autenticadores baseados em FIDO usam criptografia de chave pública e são resistentes a ataques de phishing, man-in-the-middle e replay, fornecendo um nível de segurança mais forte do que as opções baseadas em TOTP.

A MFA é aplicada a todos os tipos de conta do usuário-raiz. Para obter mais informações, consulte [Proteja as credenciais de usuário-raiz da sua conta do AWS Organizations](root-user-best-practices.md#ru-bp-organizations). 

Quando você habilitar a MFA para o usuário raiz, ela afetará somente as credenciais do usuário raiz. Os usuários do IAM na conta são identidades distintas com suas próprias credenciais, e cada identidade tem sua própria configuração de MFA. Para obter mais informações sobre como usar a MFA para proteger o usuário-raiz, consulte [Autenticação multifator para Usuário raiz da conta da AWS](enable-mfa-for-root.md).

Seu Usuário raiz da conta da AWS e usuários do IAM podem registrar até oito dispositivos MFA de qualquer tipo. O registro de vários dispositivos de MFA pode oferecer flexibilidade e ajudar a reduzir o risco de interrupção do acesso se um dispositivo for perdido ou quebrado. Basta um dispositivo MFA para acessar o Console de gerenciamento da AWS ou criar uma sessão pela AWS CLI.

**nota**  
Recomendamos exigir que seus usuários humanos usem credenciais temporárias ao acessar a AWS. Você já pensou em usar o Centro de Identidade do AWS IAM? O IAM Identity Center pode ser usado para gerenciar centralmente o acesso a várias Contas da AWS e fornecer aos usuários acesso de logon único protegido por MFA a todas as contas atribuídas em um só lugar. Com o IAM Identity Center, é possível criar e gerenciar identidades de usuários no IAM Identity Center ou conectar facilmente ao provedor de identidades compatível com SAML 2.0 existente. Para obter mais informações, consulte [O que é o IAM Identity Center?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) no *Guia do usuário do Centro de Identidade do AWS IAM*.

A MFA adiciona segurança extra que exige que os usuários forneçam autenticação exclusiva de um mecanismo de MFA compatível com a AWS, além de credenciais de login, quando acessam sites ou serviços da AWS.

## Tipos de MFA
<a name="id_credentials_mfa-types"></a>

A AWS é compatível com os seguintes tipos de MFA:

**Contents**
+ [

### Chaves de acesso e chaves de segurança
](#passkeys-security-keys-for-iam-users)
+ [

### Aplicações de autenticador virtual
](#virtual-auth-apps-for-iam-users)
+ [

### Tokens físicos de TOTP
](#hardware-totp-token-for-iam-users)

### Chaves de acesso e chaves de segurança
<a name="passkeys-security-keys-for-iam-users"></a>

A AWS Identity and Access Management é compatível com chaves de acesso e chaves de segurança para MFA. Com base nos padrões FIDO, chaves de acesso usam criptografia de chave pública para proporcionar uma autenticação forte e resistente a phishing que é mais segura do que as senhas. A AWS é compatível com dois tipos de chaves de acesso: chaves de acesso vinculadas a dispositivo (chaves de segurança) e chaves de acesso sincronizadas.
+ **Chaves de segurança**: dispositivos físicos, como a YubiKey, usados como segundo fator de autenticação. Uma única chave de segurança é compatível com várias contas de usuário-raiz e usuários do IAM.
+ **Chaves de acesso sincronizadas**: usam gerenciadores de credenciais de provedores como Google, Apple, contas da Microsoft e serviços de terceiros, como 1Password, Dashlane e Bitwarden, como segundo fator.

É possível usar autenticadores biométricos integrados, como Touch ID em Apple MacBooks, para desbloquear seu gerenciador de credenciais e fazer login na AWS. As chaves de acesso são criadas com o provedor escolhido usando sua impressão digital, rosto ou PIN do dispositivo. É possível usar uma chave de acesso de autenticação entre dispositivos (CDA) de um dispositivo, como um dispositivo móvel ou uma chave de segurança de hardware, para entrar em outro dispositivo, como um laptop. Para obter mais informações, consulte [autenticação entre dispositivos](https://passkeys.dev/docs/reference/terms/#cross-device-authentication-cda) (CDA).

É possível sincronizar chaves de acesso em seus dispositivos para facilitar o login na AWS e aprimorar a usabilidade e a capacidade de recuperação. Para obter mais informações sobre como habilitar chaves de acesso e chaves de segurança, consulte [Habilitar uma chave de acesso ou uma chave de segurança para o usuário-raiz (console)](enable-fido-mfa-for-root.md).

A FIDO Alliance conta com uma lista de todos os [produtos certificados pela FIDO](https://fidoalliance.org/certification/fido-certified-products/) compatíveis com as especificações da FIDO.

### Aplicações de autenticador virtual
<a name="virtual-auth-apps-for-iam-users"></a>

Uma aplicação de autenticador virtual funciona em um telefone ou outro dispositivo e emula um dispositivo físico. As aplicações de autenticação virtual implementam o algoritmo de [senha de uso único com marcação temporal](https://datatracker.ietf.org/doc/html/rfc6238) (TOTP) e oferecem suporte a vários tokens em um único dispositivo. O usuário deve digitar um código válido no dispositivo quando solicitado durante o processo de acesso. Cada token atribuído a um usuário deve ser exclusivo. O usuário não pode digitar um código do token de outro usuário para se autenticar.

Recomendamos usar MFA resistente a phishing, [como chaves de acesso ou chaves de segurança](#passkeys-security-keys-for-iam-users), para obter a proteção mais forte. Se ainda não for possível usar chaves de acesso ou chaves de segurança, recomendamos usar um dispositivo MFA virtual como medida provisória enquanto aguarda a aprovação da compra do hardware ou aguarda a chegada do hardware. Para obter uma lista de algumas aplicações compatíveis que podem ser usadas como dispositivos de MFA virtuais, consulte [Autenticação multifator (MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1).

Para obter instruções sobre como configurar um dispositivo virtual de MFA para um usuário do IAM, consulte [Atribuir um dispositivo MFA virtual ao Console de gerenciamento da AWS](id_credentials_mfa_enable_virtual.md).

**nota**  
Os dispositivos virtuais de MFA não atribuídos na Conta da AWS são excluídos quando você adiciona novos dispositivos virtuais de MFA por meio do Console de gerenciamento da AWS ou durante o processo de login. Dispositivos virtuais de MFA não atribuídos são dispositivos na conta, mas que não são usados pelo usuário-raiz da conta ou pelos usuários do IAM no processo de login. Eles são excluídos para que novos dispositivos virtuais de MFA possam ser adicionados à conta. Também é possível reutilizar nomes de dispositivos.  
Para visualizar dispositivos virtuais de MFA não atribuídos na conta, você pode usar o comando [list-virtual-mfa-devices](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-virtual-mfa-devices.html) da AWS CLI ou a chamada de [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html).
Para desativar um dispositivo virtual de MFA, você pode usar o comando [deactivate-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/deactivate-mfa-device.html) da AWS CLI ou a chamada de [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html). O dispositivo ficará sem atribuição.
Para anexar um dispositivo virtual de MFA não atribuído ao usuário-raiz da Conta da AWS ou aos usuários do IAM, você precisará do código de autenticação gerado pelo dispositivo junto com o comando [enable-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-mfa-device.html) da AWS CLI ou a chamada de [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html).

### Tokens físicos de TOTP
<a name="hardware-totp-token-for-iam-users"></a>

Um dispositivo físico gera um código numérico de seis dígitos baseado no [algoritmo de senha de uso único com marcação temporal (TOTP)](https://datatracker.ietf.org/doc/html/rfc6238). O usuário deve digitar um código válido no dispositivo em uma segunda página da web durante o login.

Esses tokens são usados exclusivamente com Contas da AWS. Você só pode usar tokens que compartilhem as sementes de token com a de modo seguro AWS. Sementes de token são chaves secretas geradas no momento da produção dos tokens. Tokens comprados de outras fontes não funcionam com o IAM. Para garantir compatibilidade, você deve comprar seu dispositivo físico de MFA em um dos seguintes links: [token de OTP](https://www.amazon.com/SafeNet-IDProve-Time-based-6-Digit-Services/dp/B002CRN5X8) ou [cartão com visor de OTP](https://www.amazon.com/SafeNet-IDProve-Card-Amazon-Services/dp/B00J4NGUO4).
+ Cada dispositivo MFA atribuído a um usuário deve ser exclusivo. Um usuário não pode digitar um código do dispositivo de outro usuário para ser autenticado. Para obter informações sobre os dispositivos físicos de MFA compatíveis, consulte [autenticação multifator (MFA)](https://aws.amazon.com/iam/features/mfa/?audit=2019q1).
+ Se você quiser usar um dispositivo físico de MFA, recomendamos que use chaves de segurança como alternativa aos dispositivos físicos de TOTP. As chaves de segurança não precisam de bateria, são resistentes a phishing e oferecem suporte a vários usuários em um único dispositivo.

Você só pode habilitar uma chave de acesso ou uma chave de segurança no Console de gerenciamento da AWS, não na AWS CLI ou na API da AWS. Antes que possa habilitar uma chave de segurança, você deve ter acesso físico ao dispositivo.

Para obter instruções sobre como configurar um token físico de TOTP para um usuário do IAM, consulte [Atribuir um token de hardware TOTP ao Console de gerenciamento da AWS](id_credentials_mfa_enable_physical.md).

**nota**  
**MFA baseada em mensagem de texto de SMS**: a AWS não é mais compatível com a habilitação de autenticação multifator (MFA) por SMS. Recomendamos que os clientes com usuários do IAM que usem MFA baseada em mensagem de texto por SMS mudem para um dos seguintes métodos alternativos: [chave de acesso ou chave de segurança](id_credentials_mfa_enable_fido.md), [dispositivo virtual de MFA (baseado em software)](id_credentials_mfa_enable_virtual.md) ou [dispositivo físico de MFA](id_credentials_mfa_enable_physical.md). Você pode identificar os usuários da sua conta com um dispositivo de MFA por SMS atribuído. No console do IAM, selecione **Users** (Usuários) no painel de navegação e procure os usuários com **SMS** na coluna **MFA** da tabela.

## Recomendações para MFA
<a name="id_credentials_mfa-recommendations"></a>

Para ajudar a proteger suas identidades da AWS, siga as recomendações a seguir para autenticação MFA. 
+ Recomendamos usar MFA resistente a phishing, como [chaves de acesso e chaves de segurança](#passkeys-security-keys-for-iam-users), como dispositivo MFA. Esses autenticadores baseados em FIDO oferecem a proteção mais forte contra ataques como phishing.
+ Recomendamos habilitar vários dispositivos com MFA para o Usuário raiz da conta da AWS e usuários do IAM em suas Contas da AWS. Isso permite aumentar o nível de segurança das Contas da AWS e simplificar o gerenciamento do acesso a usuários altamente privilegiados, como o Usuário raiz da conta da AWS.
+ Você pode registrar até **oito** dispositivos com MFA de qualquer combinação dos [ tipos de MFA atualmente compatíveis](https://aws.amazon.com/iam/features/mfa/) com seu Usuário raiz da conta da AWS e usuários do IAM. Com vários dispositivos de MFA, basta um dispositivo de MFA para acessar o Console de gerenciamento da AWS ou criar uma sessão pela AWS CLI como esse usuário. Um usuário do IAM deve se autenticar com um dispositivo de MFA existente para habilitar ou desabilitar um dispositivo de MFA adicional.
+ Caso o dispositivo de MFA seja perdido, roubado ou esteja inacessível, você pode usar um dos dispositivos de MFA restantes para acessar a Conta da AWS sem realizar o procedimento de recuperação de Conta da AWS. Se um dispositivo de MFA for perdido ou roubado, ele deverá ser desassociado da entidade principal do IAM ao qual está associado.
+ O uso de vários MFA permite que seus funcionários em locais geograficamente distribuídos ou trabalhando remotamente usem MFA baseada em hardware para acessar a AWS sem precisar coordenar a troca física de um único dispositivo de hardware entre funcionários.
+ O uso de dispositivos MFA adicionais para entidades principais do IAM permite que você use um ou mais MFAs para uso diário, além de manter os dispositivos físicos de MFA em um local físico seguro, como um cofre, para fins de backup e redundância.

**Observações**  
Você não pode transmitir as informações de MFA de uma chave de segurança ou chave de acesso para operações de API do AWS STS para solicitar credenciais temporárias. É possível obter credenciais para uso com a AWS CLI e os AWS SDKs ao usar uma chave de segurança ou chave de acesso executando o comando `aws login`.
Você não pode usar comandos da AWS CLI ou operações de API da AWS para habilitar [chaves de segurança FIDO](id_credentials_mfa_enable_fido.md).
Não é possível usar o mesmo nome para mais de um usuário-raiz ou MFA do IAM.

## Recursos adicionais
<a name="id_credentials_mfa-resources"></a>

Os recursos a seguir podem ajudar você a saber mais sobre a MFA.
+ Para obter mais informações sobre como usar a MFA para acessar a AWS, consulte [Login habilitado para MFA](console_sign-in-mfa.md).
+  Você pode aproveitar o Centro de Identidade do IAM para habilitar o acesso seguro com MFA ao portal de acesso da AWS, às aplicações integradas do Centro de Identidade do IAM e à AWS CLI. Para obter mais informações, consulte [Enable MFA in IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/mfa-getting-started.html).

# Atribuir uma chave de acesso ou uma chave de segurança ao Console de gerenciamento da AWS
<a name="id_credentials_mfa_enable_fido"></a>

As chaves de acesso são um tipo de [dispositivo de autenticação multifator (MFA)](id_credentials_mfa.md) que você pode usar para proteger seus recursos da AWS. A AWS é compatível com chaves de acesso sincronizadas e chaves de acesso vinculadas a dispositivo, também conhecidas como chaves de segurança. 

As chaves de acesso sincronizadas permitem que os usuários do IAM acessem suas credenciais de login FIDO em muitos de seus dispositivos, até mesmo novos, sem precisar refazer o registro de todos os dispositivos em todas as contas. As chaves de acesso sincronizadas incluem gerenciadores de credenciais primários, como Google, Apple e Microsoft, e gerenciadores de credenciais de terceiros, como 1Password, Dashlane e Bitwarden, como um segundo fator. Você também pode usar a biometria no dispositivo (p. ex., TouchID ou FaceID) para desbloquear o gerenciador de credenciais escolhido para usar chaves de acesso. 

Como alternativa, as chaves de acesso vinculadas a dispositivo são vinculadas a uma chave de segurança FIDO que você conecta a uma porta USB do seu computador e, quando solicitado, toca para concluir com segurança o processo de login. Se você já usar uma chave de segurança FIDO com outros serviços e se ela tiver uma [configuração compatível com a AWS](id_credentials_mfa_fido_supported_configurations.md) (por exemplo, a YubiKey 5 Series da Yubico), também poderá usá-la com a AWS. Caso contrário, será necessário comprar uma chave de segurança FIDO se você quiser usar o WebAuthn for MFA na AWS. Além disso, as chaves de segurança FIDO podem comportar vários usuários do IAM ou raízes no mesmo dispositivo, o que aumenta sua utilidade para proteção da conta. Para especificações e informações sobre aquisição para ambos os tipos de dispositivo, consulte [Autenticação multifator](https://aws.amazon.com/iam/details/mfa/).

Você pode registrar até **oito** dispositivos com MFA de qualquer combinação dos [tipos de MFA atualmente compatíveis](https://aws.amazon.com/iam/features/mfa/) com seu Usuário raiz da conta da AWS e usuários do IAM. Com vários dispositivos de MFA, basta um dispositivo de MFA para acessar o Console de gerenciamento da AWS ou criar uma sessão pela AWS CLI como esse usuário. Recomendamos que você registre vários dispositivos de MFA. Por exemplo, você pode registrar um autenticador incorporado e também uma chave de segurança que você mantém em um local fisicamente seguro. Se você não conseguir usar o autenticador integrado, poderá usar sua chave de segurança registrada. Para aplicações autenticadoras, também recomendamos habilitar o atributo de backup ou de sincronização na nuvem para ajudar a evitar a perda de acesso à sua conta caso você perca ou quebre o dispositivo que contém as aplicações autenticadoras.

**nota**  
Recomendamos exigir que seus usuários humanos usem credenciais temporárias ao acessar a AWS. Seus usuários podem federar-se à AWS com um provedor de identidade, onde se autenticam usando suas credenciais corporativas e configurações de MFA. Para gerenciar o acesso à AWS e a aplicações empresariais, recomendamos usar o Centro de Identidade do IAM. Para obter mais informações, consulte o [Guia do usuário do Centro de Identidade do IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html). 

**Topics**
+ [

## Permissões obrigatórias
](#enable-fido-mfa-for-iam-user-permissions-required)
+ [

## Habilitar uma chave de acesso ou uma chave de segurança para seu próprio usuário do IAM (console)
](#enable-fido-mfa-for-own-iam-user)
+ [

## Habilitar uma chave de acesso ou uma chave de segurança para outro usuário do IAM (console)
](#enable-fido-mfa-for-iam-user)
+ [

## Substituir uma chave de acesso ou chave de segurança
](#replace-fido-mfa)
+ [

# Configurações compatíveis com o uso de chaves de acesso e chaves de segurança
](id_credentials_mfa_fido_supported_configurations.md)

## Permissões obrigatórias
<a name="enable-fido-mfa-for-iam-user-permissions-required"></a>

Para gerenciar uma chave de acesso FIDO para seu próprio usuário do IAM enquanto protege as ações confidenciais relacionadas à MFA, você deve ter as permissões da seguinte política:

**nota**  
Os valores de ARN são valores estáticos e não são um indicador do protocolo usado para registrar o autenticador. Descontinuamos o U2F, então todas as novas implementações usam o WebAuthn.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowManageOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

## Habilitar uma chave de acesso ou uma chave de segurança para seu próprio usuário do IAM (console)
<a name="enable-fido-mfa-for-own-iam-user"></a>

Você só pode habilitar uma chave de acesso ou uma chave de segurança para seu próprio usuário do IAM no Console de gerenciamento da AWS, não na AWS CLI ou na API da AWS. Antes que possa habilitar uma chave de segurança, você deve ter acesso físico ao dispositivo.

**Para habilitar uma chave de acesso ou uma chave de segurança para seu próprio usuário do IAM (console)**

1. Use o ID ou o alias da conta da AWS, o nome de usuário do IAM e a senha para fazer login no [console do IAM](https://console.aws.amazon.com/iam).
**nota**  
Para sua conveniência, a página de login da AWS usa um cookie do navegador para lembrar seu nome de usuário e as informações da conta do IAM. Se você já tiver feito login como outro usuário, escolha **Sign in to a different account** (Fazer login com uma conta diferente) próximo à parte inferior da página para retornar à página de login principal. Daí, você pode inserir o ID ou o alias da conta da AWS para ser redirecionado para a página de login de usuário do IAM da sua conta.

   Para obter o ID da Conta da AWS, fale com o administrador.

1. No canto superior direito da barra de navegação, escolha seu nome de usuário e selecione **Security credentials** (Credenciais de segurança).   
![\[Link das credenciais de segurança do Console de gerenciamento da AWS\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Na página do usuário do IAM selecionado, escolha a guia **Credenciais de segurança**.

1. Em **Multi-Factor Authentication (MFA)** (autenticação multifator [MFA]), escolha **Assign MFA device** (Atribuir dispositivo de MFA).

1. **Na página de **nome do dispositivo de MFA**, insira o **nome do dispositivo**, escolha **Chave de acesso ou Chave de segurança** e, em seguida, escolha Avançar**.

1. Em **Configurar dispositivo**, configure sua chave de acesso. Crie uma chave de acesso com dados biométricos, como seu rosto ou impressão digital, com um pin do dispositivo ou inserindo a chave de segurança FIDO na porta USB do seu computador e tocando nela.

1. Siga as instruções no seu navegador e escolha **Continuar**.

Agora, você registrou sua chave de acesso ou chave de segurança para uso com a AWS. Para obter informações sobre como usar a MFA com o Console de gerenciamento da AWS, consulte [Login habilitado para MFA](console_sign-in-mfa.md). 

## Habilitar uma chave de acesso ou uma chave de segurança para outro usuário do IAM (console)
<a name="enable-fido-mfa-for-iam-user"></a>

Você só pode habilitar uma chave de acesso ou uma chave de segurança para outro usuário do IAM no Console de gerenciamento da AWS, não na AWS CLI ou na API da AWS.

**Para habilitar uma chave de acesso ou de segurança para outro usuário do IAM (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Usuários**.

1. Em **Usuários**, escolha o nome do usuário para o qual deseja habilitar a MFA.

1. Na página do usuário do IAM selecionado, escolha a guia **Credenciais de segurança**. 

1. Em **Multi-Factor Authentication (MFA)** (autenticação multifator [MFA]), escolha **Assign MFA device** (Atribuir dispositivo de MFA).

1. **Na página de **nome do dispositivo de MFA**, insira o **nome do dispositivo**, escolha **Chave de acesso ou Chave de segurança** e, em seguida, escolha Avançar**.

1. Em **Configurar dispositivo**, configure sua chave de acesso. Crie uma chave de acesso com dados biométricos, como seu rosto ou impressão digital, com um pin do dispositivo ou inserindo a chave de segurança FIDO na porta USB do seu computador e tocando nela.

1. Siga as instruções no seu navegador e escolha **Continuar**.

Agora, você registrou uma chave de acesso ou de segurança para outro usuário do IAM usar na AWS. Para obter informações sobre como usar a MFA com o Console de gerenciamento da AWS, consulte [Login habilitado para MFA](console_sign-in-mfa.md).

## Substituir uma chave de acesso ou chave de segurança
<a name="replace-fido-mfa"></a>

Você pode ter até oito dispositivos de MFA com qualquer combinação dos [tipos de MFA atualmente compatíveis](https://aws.amazon.com/iam/features/mfa/) atribuídos a um usuário ao mesmo tempo com seu Usuário raiz da conta da AWS e usuários do IAM. Se o usuário perder um autenticador compatível com FIDO ou precisar substituí-lo por algum motivo, primeiro você deverá desativar o autenticador FIDO antigo. Em seguida, você poderá adicionar um novo dispositivo MFA para o usuário.
+ Para desativar o dispositivo associado no momento a um usuário do IAM, consulte [Desativar um dispositivo com MFA](id_credentials_mfa_disable.md).
+ Para adicionar uma nova chave de segurança FIDO para um usuário do IAM, consulte [Habilitar uma chave de acesso ou uma chave de segurança para seu próprio usuário do IAM (console)](#enable-fido-mfa-for-own-iam-user).

Se você não tiver acesso a uma nova chave de acesso ou uma chave de segurança, poderá habilitar um novo dispositivo virtual de MFA ou um token físico de TOTP. Consulte um dos tópicos a seguir para obter instruções:
+ [Atribuir um dispositivo MFA virtual ao Console de gerenciamento da AWS](id_credentials_mfa_enable_virtual.md) 
+ [Atribuir um token de hardware TOTP ao Console de gerenciamento da AWS](id_credentials_mfa_enable_physical.md) 

# Configurações compatíveis com o uso de chaves de acesso e chaves de segurança
<a name="id_credentials_mfa_fido_supported_configurations"></a>

Você pode usar as chaves de acesso FIDO2 vinculadas a dispositivo, também conhecidas como chaves de autenticação multifator (MFA), no IAM usando as configurações compatíveis atuais. Dispositivos FIDO2 compatíveis com o IAM e navegadores compatíveis com FIDO2 estão incluídos. Antes de registrar o dispositivo FIDO2, verifique se você está usando a versão mais recente do navegador e do sistema operacional. O comportamento dos recursos pode ser diferente em diferentes navegadores, autenticadores e clientes de sistema operacional. Se o registro do dispositivo falhar em um navegador, você poderá tentar registrá-lo em outro navegador. 

FIDO2 é um padrão aberto de autenticação e uma extensão do FIDO U2F, oferecendo o mesmo alto nível de segurança com base em criptografia de chave pública. FIDO2 consiste na especificação W3C Web Authentication (API do WebAuthn) e no Client-to-Authentication Protocol (CTAP), um protocolo da camada de aplicação. O CTAP permite a comunicação entre cliente ou plataforma, como um navegador ou sistema operacional, e um autenticador externo. Quando você habilita um autenticador certificado por FIDO na AWS, a chave de segurança FIDO cria um novo par de chaves para uso somente na AWS. Primeiro, você insere suas credenciais. Quando solicitado, você tocará na chave de segurança, que responderá ao desafio de autenticação emitido pela AWS. Para saber mais sobre o padrão FIDO2, consulte [Projeto FIDO2](https://en.wikipedia.org/wiki/FIDO2_Project).

## Dispositivos FIDO2 compatíveis com a AWS
<a name="id_credentials_mfa_fido_supported_devices"></a>

O IAM é compatível com dispositivos de segurança FIDO2 que se conectam aos dispositivos por USB, Bluetooth ou NFC. O IAM também é compatível com os autenticadores de plataforma, como TouchID ou FaceID. O IAM não oferece suporte ao registro de chave de acesso local para o Windows Hello. Para criar e usar chaves de acesso, os usuários do Windows devem usar a [autenticação entre dispositivos](https://passkeys.dev/docs/reference/terms/#cross-device-authentication-cda), na qual você usa uma chave de acesso de um dispositivo, como um dispositivo móvel, ou uma chave de segurança de hardware, para entrar em outro dispositivo, como um laptop.

**nota**  
A AWS precisa ter acesso à porta USB física no computador para verificar o dispositivo U2F. As chaves de segurança não funcionarão com uma máquina virtual, uma conexão remota ou o modo anônimo de um navegador.

A FIDO Alliance mantém uma lista de todos os [produtos FIDO2](https://fidoalliance.org/certification/fido-certified-products/) que são compatíveis com as especificações da FIDO.

## Navegadores compatíveis com FIDO2
<a name="id_credentials_mfa_fido_browsers"></a>

A disponibilidade dos dispositivos de segurança FIDO2 que são executados em um navegador da Web depende da combinação de navegador e sistema operacional. Os seguintes navegadores são compatíveis com o uso de chaves de segurança:


****  

| Navegador da web | macOS 10.15\$1 | Windows 10 | Linux | iOS 14.5\$1 | Android 7\$1 | 
| --- | --- | --- | --- | --- | --- | 
| Chrome | Sim | Sim | Sim | Sim | Não | 
| Safari | Sim | Não | Não | Sim | Não | 
| Edge | Sim | Sim | Não | Sim | Não | 
| Firefox | Sim | Sim | Não | Sim | Não | 

**nota**  
A maioria das versões do Firefox que são compatíveis com FIDO2 atualmente não habilita a compatibilidade por padrão. Para obter instruções sobre a habilitação da compatibilidade com FIDO2 no Firefox, consulte [Solucionar problemas de chaves de acesso e chaves de segurança FIDO](troubleshoot_mfa-fido.md).  
O Firefox no macOS pode não ser totalmente compatível com fluxos de trabalho de autenticação entre dispositivos para chaves de acesso. Você pode receber um prompt para tocar em uma chave de segurança em vez de prosseguir com a autenticação entre dispositivos. Recomendamos usar outro navegador, como o Chrome ou o Safari, para fazer login com chaves de acesso no macOS.

Para obter mais informações sobre a compatibilidade do navegador com um dispositivo com certificação FIDO2, como o YubiKey, consulte [Operating system and web browser support for FIDO2 and U2F](https://support.yubico.com/hc/en-us/articles/360016615020-Operating-system-and-web-browser-support-for-FIDO2-and-U2F).

### Plug-ins de navegador
<a name="id_credentials_mfa_fido_plugins"></a>

A AWS só é compatível com navegadores que têm compatibilidade nativa com o padrão FIDO2. A AWS não é compatível com o uso de plug-ins para adicionar compatibilidade com o navegador FIDO2. Alguns plug-ins de navegador são incompatíveis com o padrão FIDO2 e podem causar resultados inesperados com chaves de segurança FIDO2. 

Para obter informações sobre como desabilitar plugins do navegador e outras dicas de solução de problemas, consulte [Não consigo habilitar minha chave de segurança FIDO](troubleshoot_mfa-fido.md#troubleshoot_mfa-fido-cant-enable). 

## Certificações de dispositivos
<a name="id_credentials_mfa_fido_certifications"></a>

Capturamos e atribuímos certificações relacionadas ao dispositivo, como validação FIPS e nível de certificação FIDO, somente durante o registro de uma chave de segurança. A certificação do seu dispositivo é obtida do [Serviço de metadados (MDS) da FIDO Alliance](https://fidoalliance.org/metadata/). Se o status ou o nível de certificação de sua chave de segurança mudar, isso não será refletido automaticamente nas tags do dispositivo. Para atualizar as informações de certificação de um dispositivo, registre-o novamente para buscar as informações de certificação atualizadas. 

A AWS fornece os seguintes tipos de certificação como chaves de condição durante o registro do dispositivo, obtidos no FIDO MDS: níveis de certificação FIPS-140-2, FIPS-140-3 e FIDO. Você pode especificar o registro de autenticadores específicos em suas políticas do IAM, com base no tipo e nível de certificação de sua preferência. Para obter mais informações, consulte as políticas abaixo.

### Políticas de exemplo para certificações de dispositivos
<a name="id_credentials_mfa_fido_certifications_policies"></a>

Os seguintes casos de uso mostram exemplos de políticas que permitem registrar dispositivos MFA com certificações FIPS.

**Topics**
+ [

#### Caso de uso 1: permitir o registro somente de dispositivos que tenham certificações FIPS-140-2 L2
](#id_credentials_mfa_fido_certifications_policies_use_case_1)
+ [

#### Caso de uso 2: permitir o registro de dispositivos que tenham certificações FIPS-140-2 L2 e FIDO L1
](#id_credentials_mfa_fido_certifications_policies_use_case_2)
+ [

#### Caso de uso 3: permitir o registro de dispositivos que tenham certificações FIPS-140-2 L2 ou FIPS-140-3 L2
](#id_credentials_mfa_fido_certifications_policies_use_case_3)
+ [

#### Caso de uso 4: Permitir o registro de dispositivos que tenham certificação FIPS-140-2 L2 e aceitem outros tipos de MFA, como autenticadores virtuais e TOTP de hardware
](#id_credentials_mfa_fido_certifications_policies_use_case_4)

#### Caso de uso 1: permitir o registro somente de dispositivos que tenham certificações FIPS-140-2 L2
<a name="id_credentials_mfa_fido_certifications_policies_use_case_1"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2"
                }
            }
        }
    ]
}
```

------

#### Caso de uso 2: permitir o registro de dispositivos que tenham certificações FIPS-140-2 L2 e FIDO L1
<a name="id_credentials_mfa_fido_certifications_policies_use_case_2"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2",
                    "iam:FIDO-certification": "L1"
                }
            }
        }
    ]
}
```

------

#### Caso de uso 3: permitir o registro de dispositivos que tenham certificações FIPS-140-2 L2 ou FIPS-140-3 L2
<a name="id_credentials_mfa_fido_certifications_policies_use_case_3"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Create"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-2-certification": "L2"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:EnableMFADevice",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:RegisterSecurityKey" : "Activate",
                    "iam:FIDO-FIPS-140-3-certification": "L2"
                }
            }
        }
    ]
}
```

------

#### Caso de uso 4: Permitir o registro de dispositivos que tenham certificação FIPS-140-2 L2 e aceitem outros tipos de MFA, como autenticadores virtuais e TOTP de hardware
<a name="id_credentials_mfa_fido_certifications_policies_use_case_4"></a>

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iam:EnableMFADevice",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:RegisterSecurityKey": "Create"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "iam:EnableMFADevice",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "iam:RegisterSecurityKey": "Activate",
          "iam:FIDO-FIPS-140-2-certification": "L2"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "iam:EnableMFADevice",
      "Resource": "*",
      "Condition": {
        "Null": {
          "iam:RegisterSecurityKey": "true"
        }
      }
    }
  ]
}
```

------

## AWS CLI e API da AWS
<a name="id_credentials_mfa_fido_cliapi"></a>

A AWS só é compatível com o uso de chaves de segurança no Console de gerenciamento da AWS. Não é possível usar de chaves de acesso e chaves de segurança para MFA na [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/) e na [API da AWS](https://aws.amazon.com/tools/), nem para acessar [operações de API protegidas por MFA](id_credentials_mfa_configure-api-require.md).

## Recursos adicionais
<a name="id_credentials_mfa_fido_additional_resources"></a>
+ Para obter mais informações sobre como usar chaves de acesso e chaves de segurança na AWS, consulte [Atribuir uma chave de acesso ou uma chave de segurança ao Console de gerenciamento da AWS](id_credentials_mfa_enable_fido.md).
+ Para obter ajuda com a solução de problemas de chaves de acesso e chaves de segurança na AWS, consulte [Solucionar problemas de chaves de acesso e chaves de segurança FIDO](troubleshoot_mfa-fido.md).
+ Para obter informações gerais do setor sobre compatibilidade com FIDO2, consulte [FIDO2 Project](https://en.wikipedia.org/wiki/FIDO2_Project). 

# Atribuir um dispositivo MFA virtual ao Console de gerenciamento da AWS
<a name="id_credentials_mfa_enable_virtual"></a>

**Importante**  
A AWS recomenda usar uma chave de acesso ou chave de segurança para MFA na AWS sempre que possível. Para obter mais informações, consulte [Atribuir uma chave de acesso ou uma chave de segurança ao Console de gerenciamento da AWS](id_credentials_mfa_enable_fido.md).

É possível usar um telefone ou outro dispositivo como um dispositivo de autenticação multifator (MFA) virtual. Para fazer isso, instale um aplicativo móvel compatível com [RFC 6238, um algoritmo TOTP (senha única baseada em tempo) baseado em padrões](https://datatracker.ietf.org/doc/html/rfc6238). Essas aplicações geram um código de autenticação de seis dígitos. Como os autenticadores podem ser executados em dispositivos móveis não protegidos e os códigos podem ser compartilhados com partes não autorizadas, a MFA baseada em TOTP não fornece o mesmo nível de segurança que o das opções de proteção contra phishing, como chaves de segurança e chaves de acesso [FIDO2](https://en.wikipedia.org/wiki/FIDO_Alliance#FIDO2). Recomendamos usar chaves de acesso ou chaves de segurança para MFA para obter a proteção mais forte contra ataques como phishing.

Se ainda não for possível usar chaves de acesso ou chaves de segurança, recomendamos usar um dispositivo MFA virtual como medida provisória enquanto aguarda quaisquer aprovações de compra de hardware ou aguarda a chegada do hardware.

A maioria das aplicações de MFA virtual oferece suporte à criação de vários dispositivos virtuais, permitindo usar a mesma aplicação para várias Contas da AWS ou usuários. Você pode registrar até **oito** dispositivos com MFA de qualquer combinação dos [tipos de MFA](https://aws.amazon.com/iam/features/mfa/) com seu Usuário raiz da conta da AWS e usuários do IAM. Basta um dispositivo MFA para acessar o Console de gerenciamento da AWS ou criar uma sessão pela AWS CLI. Recomendamos que você registre vários dispositivos de MFA. Para aplicações autenticadoras, também recomendamos habilitar o recurso de backup ou de sincronização na nuvem para ajudar a evitar a perda de acesso à sua conta caso você perca ou quebre o dispositivo.

A AWS exige uma aplicação de MFA virtual que produz uma OTP de seis dígitos. Para obter uma lista de aplicativos de MFA virtual que você pode usar, consulte [Autenticação multifator](https://aws.amazon.com/iam/features/mfa/?audit=2019q1). 

**Topics**
+ [

## Permissões obrigatórias
](#mfa_enable_virtual_permissions-required)
+ [

## Habilitar um dispositivo com MFA virtual para um usuário do IAM (console)
](#enable-virt-mfa-for-iam-user)
+ [

## Substituir um dispositivo de MFA virtual
](#replace-virt-mfa)

## Permissões obrigatórias
<a name="mfa_enable_virtual_permissions-required"></a>

Para gerenciar dispositivos com MFA virtuais para o usuário do IAM, você deve ter as permissões na seguinte política: [AWS: permite que os usuários do IAM autenticados por MFA gerenciem seus próprios dispositivos de MFA na página Credenciais de segurança](reference_policies_examples_aws_my-sec-creds-self-manage-mfa-only.md).

## Habilitar um dispositivo com MFA virtual para um usuário do IAM (console)
<a name="enable-virt-mfa-for-iam-user"></a>

Você pode usar o IAM no Console de gerenciamento da AWS para habilitar e gerenciar um dispositivo com MFA virtual para um usuário do IAM em sua conta. Você pode associar tags aos seus recursos do IAM, incluindo dispositivos MFA virtuais, para identificar, organizar e controlar o acesso a eles. Os dispositivos MFA virtuais só podem ser marcados quando você usa a AWS CLI ou a API da AWS. Para habilitar e gerenciar um dispositivo MFA usando a AWS CLI ou a API da AWS, consulte [Atribua dispositivos MFA na AWS CLI ou API da AWS](id_credentials_mfa_enable_cliapi.md). Para obter mais informações sobre recursos de marcação do IAM, consulte [Tags para recursos do AWS Identity and Access Management](id_tags.md). 

**nota**  
Você deve ter acesso físico ao hardware que hospedará o dispositivo MFA virtual do usuário para configurar a MFA. Por exemplo, você pode configurar a MFA para um usuário que usa um dispositivo MFA virtual executando em um smartphone. Neste caso, você precisa que o smartphone esteja disponível para concluir o assistente. Por isso, você pode optar por permitir que os usuários configurem e gerenciem seus próprios dispositivos MFA virtual. Neste caso, você deve conceder aos usuários as permissões para executar as ações necessárias do IAM. Para obter mais informações e ver um exemplo de política do IAM que concede essas permissões, consulte [Tutorial do IAM: Permitir que os usuários gerenciem suas credenciais e configurações de MFA](tutorial_users-self-manage-mfa-and-creds.md) e a política de exemplo [AWS: permite que os usuários do IAM autenticados por MFA gerenciem seus próprios dispositivos de MFA na página Credenciais de segurança](reference_policies_examples_aws_my-sec-creds-self-manage-mfa-only.md). 

**Para habilitar um dispositivo com MFA virtual para um usuário do IAM (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Usuários**.

1. Na lista **Usuários**, escolha o nome de usuário do IAM.

1. Selecione a guia **Security Credentials (Credenciais de segurança)**. Em **Multi-Factor Authentication (MFA)** (autenticação multifator [MFA]), escolha **Assign MFA device** (Atribuir dispositivo de MFA).

1. No assistente, digite um **Nome de dispositivo**, escolha **Aplicação de autenticador** e escolha **Próximo**.

   O IAM gera e exibe informações de configuração para o dispositivo com MFA virtual, incluindo um código QR gráfico. O gráfico é uma representação da "chave de configuração secreta" que está disponível para entrada manual em dispositivos que não suportam códigos QR.

1. Abra o seu aplicativo de MFA virtual. Para obter uma lista de aplicativos que você pode usar para hospedar dispositivos MFA virtuais, consulte [Autenticação multifator](https://aws.amazon.com/iam/details/mfa/). 

   Se o aplicativo de MFA virtual oferecer suporte a vários dispositivos ou contas de MFA virtual, selecione a opção para criar uma conta ou um dispositivo MFA virtual.

1. Determine se o aplicativo de MFA é compatível com códigos QR e, em seguida, execute uma das seguintes ações:
   + No assistente, escolha **Mostrar código de QR** e, em seguida, use o app para digitalizar o código de QR. Pode ser um ícone de câmera ou a opção **Digitalizar código** que usa a câmera do dispositivo para digitalizar o código.
   + No assistente , escolha **Show secret key** (Exibir chave secreta) e digite a chave secreta em sua aplicação de MFA.

   Quando você tiver concluído, o dispositivo MFA virtual inicia a geração de senhas de uso único. 

1. Na página **Configurar dispositivo**, na caixa **Código MFA 1**, digite a senha de uso único que atualmente é exibida no dispositivo MFA virtual. Espere até 30 segundos para que o dispositivo gere uma nova senha de uso único. Em seguida, digite a segunda senha de uso único na caixa **Código MFA 2**. Escolha **Add MFA** (Adicionar MFA). 
**Importante**  
Envie sua solicitação imediatamente após gerar os códigos. Se você gerar os códigos e esperar muito tempo para enviar a solicitação, o dispositivo MFA associa com êxito ao usuário, mas o dispositivo MFA está fora de sincronia. Isso ocorre porque as senhas únicas baseadas em tempo (time-based one-time passwords, TOTP) expiram após um curto período. Caso isso ocorra, você pode [ressincronizar o dispositivo](id_credentials_mfa_sync.md).

O dispositivo MFA virtual está pronto para uso com a AWS. Para obter informações sobre como usar a MFA com o Console de gerenciamento da AWS, consulte [Login habilitado para MFA](console_sign-in-mfa.md).

**nota**  
Os dispositivos virtuais de MFA não atribuídos na Conta da AWS são excluídos quando você adiciona novos dispositivos virtuais de MFA por meio do Console de gerenciamento da AWS ou durante o processo de login. Dispositivos virtuais de MFA não atribuídos são dispositivos na conta, mas que não são usados pelo usuário-raiz da conta ou pelos usuários do IAM no processo de login. Eles são excluídos para que novos dispositivos virtuais de MFA possam ser adicionados à conta. Também é possível reutilizar nomes de dispositivos.  
Para visualizar dispositivos virtuais de MFA não atribuídos na conta, você pode usar o comando [list-virtual-mfa-devices](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-virtual-mfa-devices.html) da AWS CLI ou a chamada de [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html).
Para desativar um dispositivo virtual de MFA, você pode usar o comando [deactivate-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/deactivate-mfa-device.html) da AWS CLI ou a chamada de [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html). O dispositivo ficará sem atribuição.
Para anexar um dispositivo virtual de MFA não atribuído ao usuário-raiz da Conta da AWS ou aos usuários do IAM, você precisará do código de autenticação gerado pelo dispositivo junto com o comando [enable-mfa-device](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/enable-mfa-device.html) da AWS CLI ou a chamada de [API](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html).

## Substituir um dispositivo de MFA virtual
<a name="replace-virt-mfa"></a>

Seu Usuário raiz da conta da AWS e usuários do IAM podem registrar até **oito** dispositivos MFA de qualquer combinação de tipos de MFA. Se o usuário perder um dispositivo ou precisar substituí-lo por algum motivo, desative o dispositivo antigo. Em seguida, você pode adicionar o novo dispositivo para o usuário.
+ Para desativar o dispositivo associado no momento a outro usuário do IAM, consulte [Desativar um dispositivo com MFA](id_credentials_mfa_disable.md).
+ Para adicionar um dispositivo com MFA virtual de substituição para outro usuário do IAM, siga as etapas no procedimento [Habilitar um dispositivo com MFA virtual para um usuário do IAM (console)](#enable-virt-mfa-for-iam-user) acima.
+ Para adicionar um dispositivo de MFA virtual de substituição para o Usuário raiz da conta da AWS, siga as etapas no procedimento [Habilitar um dispositivo MFA virtual para o usuário-raiz (console)](enable-virt-mfa-for-root.md).

# Atribuir um token de hardware TOTP ao Console de gerenciamento da AWS
<a name="id_credentials_mfa_enable_physical"></a>

**Importante**  
A AWS recomenda usar uma chave de acesso ou chave de segurança para MFA na AWS sempre que possível. Para obter mais informações, consulte [Atribuir uma chave de acesso ou uma chave de segurança ao Console de gerenciamento da AWS](id_credentials_mfa_enable_fido.md).

Um token de hardware TOTP gera um código numérico de seis dígitos com base no algoritmo de senha de uso único com marcação temporal (TOTP). O usuário deve digitar um código válido no dispositivo quando solicitado durante o processo de login. Cada dispositivo MFA atribuído a um usuário deve ser exclusivo; um usuário não pode digitar um código no dispositivo de outro usuário para ser autenticado. Os dispositivos de MFA não podem ser compartilhados entre contas ou usuários.

Os tokens de hardware TOTP e [chaves de segurança FIDO](id_credentials_mfa_enable_fido.md) são dispositivos físicos que você compra. Os dispositivos físicos de MFA geram códigos de TOTP para autenticação quando você faz login na AWS. Eles dependem de baterias, que podem precisar ser substituídas e ressincronizadas com a AWS com o passar do tempo. As chaves de segurança FIDO, que utilizam criptografia de chave pública, não requerem baterias e oferecem um processo direto de autenticação. Recomendamos o uso de chaves de segurança FIDO por sua resistência a phishing, o que as torna uma alternativa mais segura aos dispositivos de TOTP. Além disso, as chaves de segurança FIDO podem comportar vários usuários do IAM ou raízes no mesmo dispositivo, o que aumenta sua utilidade para proteção da conta. Para especificações e informações sobre aquisição para ambos os tipos de dispositivo, consulte [Autenticação multifator](https://aws.amazon.com/iam/details/mfa/).



Você pode habilitar um token de hardware TOTP para um usuário do IAM pelo Console de gerenciamento da AWS, pela linha de comando ou pela API do IAM. Para habilitar um dispositivo MFA para o Usuário raiz da conta da AWS, consulte [Habilitar um token de hardware TOTP para o usuário-raiz (console)](enable-hw-mfa-for-root.md).

Você pode registrar até **oito** dispositivos com MFA de qualquer combinação dos [ tipos de MFA atualmente compatíveis](https://aws.amazon.com/iam/features/mfa/) com seu Usuário raiz da conta da AWS e usuários do IAM. Com vários dispositivos de MFA, basta um dispositivo de MFA para acessar o Console de gerenciamento da AWS ou criar uma sessão pela AWS CLI como esse usuário.

**Importante**  
Recomendamos habilitar vários dispositivos de MFA para que seus usuários tenham acesso contínuo à conta, caso um dispositivo de MFA seja perdido ou fique inacessível.

**nota**  
Se quiser habilitar o dispositivo de MFA na linha de comando, use [https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html). Para habilitar o dispositivo com MFA com a API do IAM, use a operação [https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html). 

**Topics**
+ [

## Permissões obrigatórias
](#enable-hw-mfa-for-iam-user-permissions-required)
+ [

## Habilitar um token de hardware TOTP para seu próprio usuário do IAM (console)
](#enable-hw-mfa-for-own-iam-user)
+ [

## Habilitar um token de hardware TOTP para outro usuário do IAM (console)
](#enable-hw-mfa-for-iam-user)
+ [

## Substituir um dispositivo de MFA físico
](#replace-phys-mfa)

## Permissões obrigatórias
<a name="enable-hw-mfa-for-iam-user-permissions-required"></a>

Para gerenciar um token de hardware TOTP para seu próprio usuário do IAM ao proteger ações confidenciais relacionadas a MFA, você deve ter as permissões na seguinte política:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowManageOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "DenyAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

## Habilitar um token de hardware TOTP para seu próprio usuário do IAM (console)
<a name="enable-hw-mfa-for-own-iam-user"></a>

 Você pode habilitar seu próprio token de hardware TOTP no Console de gerenciamento da AWS.

**nota**  
Para poder habilitar um token de hardware TOTP, é necessário ter acesso físico ao dispositivo.

**Para habilitar um token de hardware TOTP para seu próprio usuário do IAM (console)**

1. Use o ID ou o alias da conta da AWS, o nome de usuário do IAM e a senha para fazer login no [console do IAM](https://console.aws.amazon.com/iam).
**nota**  
Para sua conveniência, a página de login da AWS usa um cookie do navegador para lembrar seu nome de usuário e as informações da conta do IAM. Se você já tiver feito login como outro usuário, escolha **Sign in to a different account** (Fazer login com uma conta diferente) próximo à parte inferior da página para retornar à página de login principal. Daí, você pode inserir o ID ou o alias da conta da AWS para ser redirecionado para a página de login de usuário do IAM da sua conta.

   Para obter o ID da Conta da AWS, fale com o administrador.

1. No canto superior direito da barra de navegação, escolha seu nome de usuário e selecione **Security credentials** (Credenciais de segurança).   
![\[Link das credenciais de segurança do Console de gerenciamento da AWS\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Na guia **Credenciais do AWS IAM**, na seção **Autenticação multifator (MFA)**, escolha **Atribuir dispositivo com MFA**.

1. No assistente, digite um **Device name** (Nome de dispositivo), escolha **Hardware TOTP token** (Token de hardware TOTP) e escolha **Next** (Avançar).

1. Digite o número de série do dispositivo. O número de série é geralmente encontrado na parte de trás do dispositivo.

1. Na caixa **MFA code 1 (Código MFA 1)**, digite o número de seis dígitos exibido pelo dispositivo MFA. Talvez seja necessário pressionar o botão na parte frontal do dispositivo para exibir o número.  
![\[Painel do IAM, dispositivo MFA\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/MFADevice.png)

1. Aguarde 30 segundos enquanto o dispositivo atualiza o código e digite o próximo número de seis dígitos na caixa **MFA code 2 (Código MFA 2)**. Talvez seja necessário pressionar o botão na parte frontal do dispositivo novamente para exibir o segundo número.

1. Escolha **Add MFA** (Adicionar MFA).
**Importante**  
Envie sua solicitação imediatamente após gerar os códigos de autenticação. Se você gerar os códigos e esperar muito tempo para enviar a solicitação, o dispositivo MFA será associado com êxito ao usuário, mas o dispositivo MFA ficará fora de sincronia. Isso ocorre porque as senhas únicas baseadas em tempo (time-based one-time passwords, TOTP) expiram após um curto período. Caso isso ocorra, você pode [ressincronizar o dispositivo](id_credentials_mfa_sync.md).

O dispositivo está pronto para uso com a AWS. Para obter informações sobre como usar a MFA com o Console de gerenciamento da AWS, consulte [Login habilitado para MFA](console_sign-in-mfa.md).

## Habilitar um token de hardware TOTP para outro usuário do IAM (console)
<a name="enable-hw-mfa-for-iam-user"></a>

 Você pode habilitar um token de hardware TOTP para outro usuário do IAM no Console de gerenciamento da AWS.

**Para habilitar um token de hardware TOTP para outro usuário do IAM (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Usuários**.

1. Selecione o nome do usuário para o qual deseja habilitar a MFA.

1. Selecione a guia **Security Credentials (Credenciais de segurança)**. Em **Multi-Factor Authentication (MFA)** (autenticação multifator [MFA]), escolha **Assign MFA device** (Atribuir dispositivo de MFA).

1. No assistente, digite um **Device name** (Nome de dispositivo), escolha **Hardware TOTP token** (Token de hardware TOTP) e escolha **Next** (Avançar).

1. Digite o número de série do dispositivo. O número de série é geralmente encontrado na parte de trás do dispositivo.

1. Na caixa **MFA code 1 (Código MFA 1)**, digite o número de seis dígitos exibido pelo dispositivo MFA. Talvez seja necessário pressionar o botão na parte frontal do dispositivo para exibir o número.  
![\[Painel do IAM, dispositivo MFA\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/MFADevice.png)

1. Aguarde 30 segundos enquanto o dispositivo atualiza o código e digite o próximo número de seis dígitos na caixa **MFA code 2 (Código MFA 2)**. Talvez seja necessário pressionar o botão na parte frontal do dispositivo novamente para exibir o segundo número.

1. Escolha **Add MFA** (Adicionar MFA).
**Importante**  
Envie sua solicitação imediatamente após gerar os códigos de autenticação. Se você gerar os códigos e esperar muito tempo para enviar a solicitação, o dispositivo MFA será associado com êxito ao usuário, mas o dispositivo MFA ficará fora de sincronia. Isso ocorre porque as senhas únicas baseadas em tempo (time-based one-time passwords, TOTP) expiram após um curto período. Caso isso ocorra, você pode [ressincronizar o dispositivo](id_credentials_mfa_sync.md).

O dispositivo está pronto para uso com a AWS. Para obter informações sobre como usar a MFA com o Console de gerenciamento da AWS, consulte [Login habilitado para MFA](console_sign-in-mfa.md).

## Substituir um dispositivo de MFA físico
<a name="replace-phys-mfa"></a>

Você pode ter até oito dispositivos com MFA de qualquer combinação dos [tipos de MFA atualmente compatíveis](https://aws.amazon.com/iam/features/mfa/) atribuídos a um usuário ao mesmo tempo com seu Usuário raiz da conta da AWS e usuários do IAM. Se o usuário perde um dispositivo ou precisa substituí-lo por algum motivo, você deve primeiro desativar o dispositivo antigo. Em seguida, você pode adicionar o novo dispositivo para o usuário.
+ Para desativar o dispositivo atualmente associado a um usuário, consulte [Desativar um dispositivo com MFA](id_credentials_mfa_disable.md).
+ Para adicionar um token de hardware TOTP de substituição para um usuário do IAM, siga as etapas do procedimento [Habilitar um token de hardware TOTP para outro usuário do IAM (console)](#enable-hw-mfa-for-iam-user) anterior deste tópico.
+ Para adicionar um token de hardware TOTP de substituição para o Usuário raiz da conta da AWS, siga as etapas do procedimento [Habilitar um token de hardware TOTP para o usuário-raiz (console)](enable-hw-mfa-for-root.md) anterior neste tópico.

# Atribua dispositivos MFA na AWS CLI ou API da AWS
<a name="id_credentials_mfa_enable_cliapi"></a>

Você pode usar os comandos da AWS CLI ou operações de API da AWS para habilitar um dispositivo com MFA virtual para um usuário do IAM. Não é possível habilitar um dispositivo com MFA para o Usuário raiz da conta da AWS com a AWS CLI, a API da AWS, ferramentas para Windows PowerShell ou qualquer outra ferramenta de linha de comando. No entanto, você pode usar o Console de gerenciamento da AWS para habilitar um dispositivo com MFA para o usuário raiz. 

Quando você habilita um dispositivo MFA do Console de gerenciamento da AWS, o console executa múltiplas etapas para você. Se, em vez disso, você criar um dispositivo virtual usando a AWS CLI, o Tools for Windows PowerShell ou a API da AWS, execute as etapas manualmente e na ordem correta. Por exemplo, para criar um dispositivo com MFA virtual, você deve criar o objeto do IAM e extrair o código como uma string ou um gráfico de código QR. Em seguida, você deve sincronizar o dispositivo e associá-lo a um usuário do IAM. Consulte a seção **Exemplos** do [New-IAMVirtualMFADevice](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=New-IAMVirtualMFADevice.html&tocid=New-IAMVirtualMFADevice) para obter mais detalhes. Para um dispositivo físico, ignore a etapa de criação, sincronize e associe o dispositivo ao usuário diretamente. 

Você pode associar tags aos seus recursos do IAM, incluindo dispositivos MFA virtuais, para identificar, organizar e controlar o acesso a eles. Os dispositivos MFA virtuais só podem ser marcados quando você usa a AWS CLI ou a API da AWS.

Um usuário do IAM usando o SDK ou a CLI pode ativar um dispositivo de MFA adicional chamando [https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html) ou desativar um dispositivo de MFA existente por meio de uma chamada [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html). Para fazer isso com êxito, eles devem primeiro chamar [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) e enviar códigos de MFA com um dispositivo de MFA existente. Essa chamada retorna credenciais de segurança temporárias que podem ser usadas para assinar operações de API que exigem autenticação de MFA. Para ver um exemplo de solicitação e resposta, consulte [`GetSessionToken`: credenciais temporárias para usuários em ambientes não confiáveis](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken). 

**Para criar a entidade do dispositivo virtual no IAM para representar um dispositivo virtual de MFA**  
Esses comandos fornecem um ARN para o dispositivo que é usado no lugar de um número de série em muitos dos comandos a seguir.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/create-virtual-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-virtual-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateVirtualMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateVirtualMFADevice.html) 

**Para habilitar um dispositivo com MFA para usar com a AWS**  
Esses comandos sincronizam o dispositivo com a AWS e associam-no a um usuário. Se o dispositivo for virtual, use o ARN do dispositivo virtual como número de série.

**Importante**  
Envie sua solicitação imediatamente após gerar os códigos de autenticação. Se você gerar os códigos e esperar muito tempo para enviar a solicitação, o dispositivo MFA será associado com êxito ao usuário, mas o dispositivo MFA ficará fora de sincronia. Isso ocorre porque as senhas únicas baseadas em tempo (time-based one-time passwords, TOTP) expiram após um curto período. Se isso acontecer, sincronize novamente o dispositivo usando os comandos descritos abaixo.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html) 

**Para desativar um dispositivo**  
Use estes comandos para desassociar o dispositivo do usuário e desativá-lo. Se o dispositivo for virtual, use o ARN do dispositivo virtual como número de série. Também é necessário excluir, separadamente, a entidade do dispositivo virtual. 
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html)

**Para listar entidades do dispositivo virtual de MFA**  
Use estes comandos para listar entidades de dispositivo MFA virtual.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-virtual-mfa-devices.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-virtual-mfa-devices.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListVirtualMFADevices.html) 

**Marcar um dispositivo MFA virtual**  
Use estes comandos para marcar um dispositivo MFA virtual.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/tag-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagMFADevice.html) 

**Listar tags para um dispositivo MFA virtual**  
Use estes comandos para listar as tags associadas a um dispositivo MFA virtual.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-device-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-device-tags.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADeviceTags.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADeviceTags.html) 

**Desmarcar um dispositivo MFA virtual**  
Use estes comandos para remover as tags associadas a um dispositivo MFA virtual.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/untag-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagMFADevice.html) 

**Para sincronizar novamente um dispositivo MFA**  
Use estes comandos se o dispositivo estiver gerando códigos que não são aceitos pela AWS. Se o dispositivo for virtual, use o ARN do dispositivo virtual como número de série.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/resync-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/resync-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html) 

**Para excluir uma entidade do dispositivo com MFA virtual no IAM**  
Após o dispositivo ser desassociado do usuário, você poderá excluir a entidade do dispositivo.
+ AWS CLI: [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-virtual-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-virtual-mfa-device.html) 
+ AWS API: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteVirtualMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteVirtualMFADevice.html) 

**Para recuperar um dispositivo MFA virtual que foi perdido ou não está funcionando**  
Às vezes, o dispositivo de um usuário que hospeda a aplicação de MFA virtual é perdido, substituído ou não está funcionando. Quando isso acontece, o usuário não pode recuperá-lo sozinho. Os usuários devem entrar em contato com o administrador para desativar o dispositivo. Para obter mais informações, consulte [Recuperar uma identidade protegida por MFA no IAM](id_credentials_mfa_lost-or-broken.md).

# Verificar status da MFA
<a name="id_credentials_mfa_checking-status"></a>

Use o console do IAM para verificar se um Usuário raiz da conta da AWS ou usuário do IAM tem um dispositivo com MFA válido habilitado.

**Para verificar o status de MFA de um usuário raiz**

1. Faça login no Console de gerenciamento da AWS com suas credenciais de usuário raiz e, em seguida, abra o console do IAM no [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). 

1. No canto superior direito da barra de navegação, escolha seu nome de usuário e selecione **Security credentials** (Credenciais de segurança).

1. Consulte **Multi-factor Authentication (MFA) (Autenticação multifator, MFA)** para ver se o MFA está habilitado ou desabilitado. Se a MFA não tiver sido ativada, um símbolo de alerta (![\[Alert icon\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/console-alert-icon.console.png)) será exibido. 

Se você quiser habilitar a MFA para a conta, consulte um dos seguintes:
+ [Habilitar um dispositivo MFA virtual para o usuário-raiz (console)](enable-virt-mfa-for-root.md)
+ [Habilitar uma chave de acesso ou uma chave de segurança para o usuário-raiz (console)](enable-fido-mfa-for-root.md)
+ [Habilitar um token de hardware TOTP para o usuário-raiz (console)](enable-hw-mfa-for-root.md)

**Para verificar o status de MFA de usuários do IAM**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). 

1. No painel de navegação, escolha **Users**.

1. Se necessário, adicione a coluna **MFA** à tabela de usuários concluindo as etapas a seguir:

   1. Acima da tabela, no canto direito, selecione o ícone de configurações (![\[Settings icon\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/console-settings-icon.console.png)).

   1. Em **Gerenciar colunas**, selecione **MFA**.

   1. (Opcional) Desmarque a caixa de seleção para qualquer cabeçalho de coluna que você não deseje exibir na tabela de usuários.

   1. Escolha **Fechar** para retornar à lista de usuários.

1. A coluna **MFA** fornece informações sobre o dispositivo MFA que está habilitado. Se não houver um dispositivo MFA ativo para o usuário, o console exibirá **None** (Nenhum). Se o usuário tiver um dispositivo de MFA habilitado, a coluna **MFA** exibirá o tipo de dispositivo que está habilitado com um valor **Virtual**, **Security Key** (Chave de segurança), **Hardware** ou **SMS**.
**nota**  
A AWS não é mais compatível com a habilitação de autenticação multifator (MFA) por SMS. Recomendamos que os clientes que têm usuários de IAM que usam MFA baseada em texto de SMS mudem para um dos seguintes métodos alternativos: [dispositivo de MFA virtual (baseado em software)](id_credentials_mfa_enable_virtual.md), [chave de segurança FIDO](id_credentials_mfa_enable_fido.md) ou [dispositivo de MFA de hardware](id_credentials_mfa_enable_physical.md). Você pode identificar os usuários da sua conta com um dispositivo de MFA por SMS atribuído. Para fazer isso, vá para o console do IAM, escolha **Users (Usuários)** no painel de navegação e procure os usuários com **SMS** na coluna **MFA** da tabela.

1. Para visualizar informações adicionais sobre o dispositivo MFA para um usuário, escolha o nome do usuário cujo status de MFA você deseja verificar. Em seguida, selecione a guia **Credenciais de segurança**. 

1. Se não houver um dispositivo com MFA ativo para o usuário, o console exibirá **Nenhum dispositivo com MFA. Atribua um dispositivo com MFA para melhorar a segurança de seu ambiente da AWS** na seção **Autenticação multifator (MFA)**. Se o usuário tiver dispositivos de MFA habilitados, a seção **Multi-factor authentication (MFA)** (Autenticação multifator [MFA]) exibirá detalhes sobre os dispositivos:
   + O nome do dispositivo
   + O tipo do dispositivo
   + O identificador do dispositivo, como o número de série de um dispositivo físico ou o ARN de um dispositivo virtual na AWS
   + Quando o dispositivo foi criado

Para remover ou ressincronizar um dispositivo, escolha o botão de opção ao lado do dispositivo e escolha **Remove** (Remover) ou **Resync** (Ressincronizar).

Para obter mais informações sobre como habilitar a MFA, consulte o seguinte: 
+ [Atribuir um dispositivo MFA virtual ao Console de gerenciamento da AWS](id_credentials_mfa_enable_virtual.md)
+ [Atribuir uma chave de acesso ou uma chave de segurança ao Console de gerenciamento da AWS](id_credentials_mfa_enable_fido.md)
+ [Atribuir um token de hardware TOTP ao Console de gerenciamento da AWS](id_credentials_mfa_enable_physical.md)

# Sincronizar novamente os dispositivos MFA virtuais e de hardware
<a name="id_credentials_mfa_sync"></a>

Você pode usar a AWS para sincronizar novamente seus dispositivos de autenticação multifator (MFA) virtuais e de hardware. Se o seu dispositivo não estiver sincronizado quando você tentar usá-lo, ocorrerá uma falha na tentativa de login, e o IAM solicitará que você sincronize o dispositivo novamente.

**nota**  
As chaves de segurança FIDO não perdem a sincronia. Se uma chave de segurança FIDO for perdida ou rompida, você poderá desativá-la. Para obter instruções sobre a desativação de qualquer tipo de dispositivo MFA, consulte [Para desativar um dispositivo com MFA para outro usuário do IAM (console)](id_credentials_mfa_disable.md#deactivate-mfa-for-user).

Como administrador da AWS, você pode sincronizar novamente os dispositivos com MFA virtuais e de hardware dos usuários do IAM se eles perderem a sincronização.

Se o seu dispositivo com MFA de Usuário raiz da conta da AWS não estiver funcionando, você poderá sincronizar novamente o dispositivo usando o console do IAM, concluindo ou não o processo de login. Se você não conseguir ressincronizar seu dispositivo, talvez seja necessário desassociá-lo e reassociá-lo. Para obter mais informações sobre como fazer isso, consulte [Desativar um dispositivo com MFA](id_credentials_mfa_disable.md) e [Código da autenticação multifator no IAM da AWS](id_credentials_mfa.md).

**Topics**
+ [

## Permissões obrigatórias
](#id_credentials_mfa_sync_console-permissions-required)
+ [

## Sincronizar novamente dispositivos com MFA virtuais e de hardware (console do IAM)
](#id_credentials_mfa_sync_console)
+ [

## Sincronizar novamente dispositivos com MFA virtuais e de hardware (AWS CLI)
](#id_credentials_mfa_sync_cli)
+ [

## Sincronizar novamente dispositivos com MFA virtuais e de hardware (API da AWS)
](#id_credentials_mfa_sync_api)

## Permissões obrigatórias
<a name="id_credentials_mfa_sync_console-permissions-required"></a>

Para dessincronizar dispositivos com MFA virtuais ou de hardware para o usuário do IAM, você deve ter as permissões desta política. Esta política não permite que você crie ou desative um dispositivo.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowListActions",
            "Effect": "Allow",
            "Action": [
                "iam:ListVirtualMFADevices"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowUserToViewAndManageTheirOwnUserMFA",
            "Effect": "Allow",
            "Action": [
                "iam:ListMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        },
        {
            "Sid": "BlockAllExceptListedIfNoMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:ListMFADevices",
                "iam:ListVirtualMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
```

------

## Sincronizar novamente dispositivos com MFA virtuais e de hardware (console do IAM)
<a name="id_credentials_mfa_sync_console"></a>

Você pode usar o console do IAM para sincronizar novamente dispositivos com MFA virtuais e de hardware.

**Para sincronizar novamente um dispositivo com MFA virtual ou de hardware para seu próprio usuário do IAM (console)**

1. Use o ID ou o alias da conta da AWS, o nome de usuário do IAM e a senha para fazer login no [console do IAM](https://console.aws.amazon.com/iam).
**nota**  
Para sua conveniência, a página de login da AWS usa um cookie do navegador para lembrar seu nome de usuário e as informações da conta do IAM. Se você já tiver feito login como outro usuário, escolha **Sign in to a different account** (Fazer login com uma conta diferente) próximo à parte inferior da página para retornar à página de login principal. Daí, você pode inserir o ID ou o alias da conta da AWS para ser redirecionado para a página de login de usuário do IAM da sua conta.

   Para obter o ID da Conta da AWS, fale com o administrador.

1. No canto superior direito da barra de navegação, escolha seu nome de usuário e selecione **Security credentials** (Credenciais de segurança).   
![\[Link para credenciais de segurança do Console de Gerenciamento da AWS\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. Na guia **Credenciais do AWS IAM**, na seção **Autenticação multifator (MFA)**, escolha o botão de opção ao lado do dispositivo com MFA e escolha **Sincronizar novamente**.

1. Digite os próximos dois códigos gerados sequencialmente no dispositivo em **MFA code 1 (Código MFA 1)** e **MFA code 2 (Código MFA 2)**. Em seguida, escolha **Resync** (Ressincronizar).
**Importante**  
Envie sua solicitação imediatamente após gerar os códigos. Se você gerar os códigos e esperar muito tempo para enviar a solicitação, a solicitação parecerá funcionar, mas o dispositivo permanecerá fora de sincronia. Isso ocorre porque as senhas únicas baseadas em tempo (time-based one-time passwords, TOTP) expiram após um curto período.

**Para sincronizar novamente um dispositivo com MFA virtual ou de hardware para outro usuário do IAM (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **Usuários** e, em seguida, escolha o nome do usuário cujo dispositivo MFA precisa ser sincronizado novamente.

1. Selecione a guia **Credenciais de segurança**. Na seção **Autenticação multifator (MFA)**, escolha o botão de opção ao lado do dispositivo com MFA e escolha **Sincronizar novamente**.

1. Digite os próximos dois códigos gerados sequencialmente no dispositivo em **MFA code 1 (Código MFA 1)** e **MFA code 2 (Código MFA 2)**. Em seguida, escolha **Resync** (Ressincronizar).
**Importante**  
Envie sua solicitação imediatamente após gerar os códigos. Se você gerar os códigos e esperar muito tempo para enviar a solicitação, a solicitação parecerá funcionar, mas o dispositivo permanecerá fora de sincronia. Isso ocorre porque as senhas únicas baseadas em tempo (time-based one-time passwords, TOTP) expiram após um curto período.

**Para sincronizar novamente sua MFA de usuário raiz antes de fazer login (console)**

1. Na página **Amazon Web Services Sign In With Authentication Device** (Login da Amazon Web Services com dispositivo de autenticação), escolha **Having problems with your authentication device? (Está com problemas com seu dispositivo de autenticação?) Clique aqui**.
**nota**  
É possível ver um texto diferente, como **Fazer login usando MFA** e **Solucionar problemas do dispositivo de autenticação**. No entanto, os mesmos recursos são fornecidos.

1. Na seção **Re-Sync With Our Servers (Sincronizar novamente com nossos servidores)**, digite os próximos dois códigos gerados sequencialmente no dispositivo em **MFA code 1 (Código MFA 1)** e **MFA code 2 (Código MFA 2)**. Em seguida, escolha **Sincronizar novamente dispositivo de autenticação**.

1. Se necessário, digite sua senha novamente e escolha **Faça login**. Em seguida, conclua o login usando seu dispositivo MFA.

**Para sincronizar novamente seu dispositivo com MFA de usuário raiz depois de fazer login (console)**

1. Faça login no [console do IAM](https://console.aws.amazon.com/iam/) como proprietário da conta escolhendo **Root user** (Usuário root) e inserindo o endereço de e-mail da sua Conta da AWS. Na próxima página, insira sua senha.
**nota**  
Como usuário raiz, você não pode acessar a página **Fazer login como usuário do IAM**. Ao visualizar a página de **login de usuário do IAM**, escolha a opção **Fazer login usando o e-mail de usuário raiz**, próximo à parte inferior da página. Para obter ajuda para fazer login como usuário raiz, consulte [Fazer login no Console de gerenciamento da AWS como usuário raiz](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-          root-user-sign-in-tutorial.html) no *Guia do usuário do Início de Sessão da AWS*.

1. No lado direito da barra de navegação, selecione seu nome de conta e selecione **Credenciais de segurança**. Se necessário, selecione **Continue to Security credentials** (Prosseguir para as credenciais de segurança).  
![\[Credenciais de segurança no menu de navegação\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. Expanda a seção **Multi-factor authentication (MFA) (Autenticação multifator (MFA))** na página.

1. Selecione o botão de opção ao lado do dispositivo e escolha **Resync** (Ressincronizar).

1. Na caixa de diálogo **Resync MFA device (Ressincronizar dispositivo de MFA)**, digite os próximos dois códigos gerados sequencialmente no dispositivo em **MFA code 1** (Código MFA 1) e **MFA code 2** (Código MFA 2). Em seguida, escolha **Resync** (Ressincronizar).
**Importante**  
Envie sua solicitação imediatamente após gerar os códigos. Se você gerar os códigos e esperar muito tempo para enviar a solicitação, o dispositivo MFA se associa com êxito ao usuário, mas o dispositivo MFA está fora de sincronia. Isso ocorre porque as senhas únicas baseadas em tempo (time-based one-time passwords, TOTP) expiram após um curto período.

## Sincronizar novamente dispositivos com MFA virtuais e de hardware (AWS CLI)
<a name="id_credentials_mfa_sync_cli"></a>

Você pode sincronizar novamente os dispositivos MFA virtuais e de hardware da AWS CLI.

**Para sincronizar novamente um dispositivo com MFA virtual ou de hardware para um usuário do IAM (AWS CLI)**  
Em um prompt de comando, emita o comando [aws iam resync-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/resync-mfa-device.html):
+ Dispositivo MFA virtual: especifique o nome de recurso da Amazon (ARN) do dispositivo como o número de série.

  ```
  aws iam resync-mfa-device --user-name Richard --serial-number arn:aws:iam::123456789012:mfa/RichardsMFA --authentication-code1 123456 --authentication-code2 987654
  ```
+ Dispositivo MFA de hardware: especifique o número de série do dispositivo de hardware como o número de série. O formato é específico do fornecedor. Por exemplo, você pode comprar um token gemalto da Amazon. Seu número de série geralmente tem quatro letras seguidas por quatro números.

  ```
  aws iam resync-mfa-device --user-name Richard --serial-number ABCD12345678 --authentication-code1 123456 --authentication-code2 987654
  ```

**Importante**  
Envie sua solicitação imediatamente após gerar os códigos. Se você gerar os códigos e esperar muito tempo para enviar a solicitação, ocorrerá falha na solicitação porque os códigos expiram após um curto período.

## Sincronizar novamente dispositivos com MFA virtuais e de hardware (API da AWS)
<a name="id_credentials_mfa_sync_api"></a>

O IAM tem uma chamada de API que executa a sincronização. Nesse caso, recomendamos que você atribua aos seus usuários de dispositivos MFA virtuais e de hardware permissão para acessar essa chamada de API. Em seguida, crie uma ferramenta com base na chamada de API que permite que seus usuários sincronizem novamente seus dispositivos sempre que precisarem.

**Para sincronizar novamente um dispositivo com MFA virtual ou de hardware para um usuário do IAM (API da AWS)**
+ Envie a solicitação [ResyncMFADevice](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResyncMFADevice.html).

# Desativar um dispositivo com MFA
<a name="id_credentials_mfa_disable"></a>

Caso enfrente problemas para fazer login com um dispositivo de com autenticação multifator (MFA) como um usuário do IAM, entre em contato com o administrador para obter ajuda.

Como administrador, você pode desativar o dispositivo para outro usuário do IAM. Isso permite que o usuário conecte-se sem usar o MFA. Você pode fazer isso como uma solução temporária enquanto o dispositivo MFA é substituído, ou se o dispositivo está temporariamente indisponível. No entanto, recomendamos que você ative um novo dispositivo para o usuário assim que possível. Para saber como ativar um novo dispositivo MFA, consulte [Código da autenticação multifator no IAM da AWS](id_credentials_mfa.md).

**nota**  
Se você usar a API ou a AWS CLI para excluir um usuário da sua Conta da AWS, desative ou exclua o dispositivo de MFA do usuário. Você faz essa alteração como parte do processo de remoção do usuário. Para obter mais informações sobre a remoção de usuários, consulte [Remover ou desativar um usuário do IAM](id_users_remove.md).

**Topics**
+ [

## Desativar dispositivos MFA (console)
](#deactive-mfa-console)
+ [

## Desativar dispositivos MFA (AWS CLI)
](#deactivate-mfa-cli)
+ [

## Desativar dispositivos MFA (API da AWS)
](#deactivate-mfa-api)

## Desativar dispositivos MFA (console)
<a name="deactive-mfa-console"></a><a name="deactivate-mfa-for-user"></a>

**Para desativar um dispositivo com MFA para outro usuário do IAM (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Usuários**.

1. Para desativar o dispositivo MFA para um usuário, escolha o nome do usuário cuja MFA que você deseja remover.

1. Selecione a guia **Credenciais de segurança**.

1. Em **Autenticação multifator (MFA)**, escolha o botão de opção ao lado do dispositivo com MFA, escolha **Remover** e depois **Remover**.

   O dispositivo é removido da AWS. Ele não poderá ser usado para fazer login nem autenticar as solicitações até ser reativado e associado a um usuário da AWS ou ao Usuário raiz da conta da AWS.<a name="deactivate-mfa-for-root"></a>

**Para desativar o dispositivo MFA para seu Usuário raiz da conta da AWS (console)**

1. Faça login no [console do IAM](https://console.aws.amazon.com/iam/) como proprietário da conta escolhendo **Root user** (Usuário root) e inserindo o endereço de e-mail da sua Conta da AWS. Na próxima página, insira sua senha.
**nota**  
Como usuário raiz, você não pode acessar a página **Fazer login como usuário do IAM**. Ao visualizar a página de **login de usuário do IAM**, escolha a opção **Fazer login usando o e-mail de usuário raiz**, próximo à parte inferior da página. Para obter ajuda para fazer login como usuário raiz, consulte [Fazer login no Console de gerenciamento da AWS como usuário raiz](https://docs.aws.amazon.com/signin/latest/userguide/introduction-to-          root-user-sign-in-tutorial.html) no *Guia do usuário do Início de Sessão da AWS*.

1. No lado direito da barra de navegação, selecione seu nome de conta e selecione **Credenciais de segurança**. Se necessário, selecione **Continue to Security credentials** (Prosseguir para as credenciais de segurança).  
![\[Credenciais de segurança no menu de navegação\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/security-credentials-root.shared.console.png)

1. Na seção **Multi-factor authentication (MFA)** (Autenticação multifator [MFA]), escolha o botão de opção ao lado do dispositivo de MFA que você deseja desativar e escolha **Remove** (Remover).

1. Escolha **Remover**.

   O dispositivo de MFA é desativado para a Conta da AWS. Verifique o e-mail associado à sua Conta da AWS para ver se há uma mensagem de confirmação da Amazon Web Services. O e-mail informa que sua autenticação multifator (MFA) da Amazon Web Services foi desativada. A mensagem virá de `@amazon.com` ou `@aws.amazon.com`.

**nota**  
Os dispositivos virtuais de MFA não atribuídos na Conta da AWS são excluídos quando você adiciona novos dispositivos virtuais de MFA por meio do Console de gerenciamento da AWS ou durante o processo de login. Dispositivos virtuais de MFA não atribuídos são dispositivos na conta, mas que não são usados pelo usuário-raiz da conta ou pelos usuários do IAM no processo de login. Eles são excluídos para que novos dispositivos virtuais de MFA possam ser adicionados à conta. Também é possível reutilizar nomes de dispositivos.

## Desativar dispositivos MFA (AWS CLI)
<a name="deactivate-mfa-cli"></a>

**Para desativar um dispositivo com MFA para um usuário do IAM (AWS CLI)**
+ Execute este comando: [https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html](https://docs.aws.amazon.com/cli/latest/reference/iam/deactivate-mfa-device.html)

## Desativar dispositivos MFA (API da AWS)
<a name="deactivate-mfa-api"></a>

**Para desativar um dispositivo com MFA para um usuário do IAM (API da AWS)**
+ Chame esta operação: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeactivateMFADevice.html)

# Recuperar uma identidade protegida por MFA no IAM
<a name="id_credentials_mfa_lost-or-broken"></a>

Se o [dispositivo de MFA virtual](id_credentials_mfa_enable_virtual.md) ou se o [token de hardware TOTP](id_credentials_mfa_enable_physical.md) estiver funcionando corretamente, mas você não conseguir usá-lo para acessar seus recursos da AWS, talvez ele não esteja sincronizado com a AWS. Para obter informações sobre a sincronização de um dispositivo MFA virtual ou de um dispositivo MFA de hardware, consulte [Sincronizar novamente os dispositivos MFA virtuais e de hardware](id_credentials_mfa_sync.md). As [chaves de segurança FIDO](id_credentials_mfa_enable_fido.md) não perdem a sincronia.

Se o [dispositivo MFA](id_credentials_mfa.md) para um Usuário raiz da conta da AWS for perdido, danificado ou não funcionar, você poderá recuperar o acesso à sua conta. Os usuários do IAM devem entrar em contato com um administrador para desativar o dispositivo.

**Importante**  
Recomendamos que você ative vários dispositivos MFA. O registro de vários dispositivos MFA ajudará a garantir o acesso contínuo se um dispositivo for perdido ou quebrado. Seu Usuário raiz da conta da AWS e usuários do IAM podem registrar até oito dispositivos MFA de qualquer tipo.

## Pré-requisito: usar outro dispositivo de MFA
<a name="mfa-lost-or-broken-prerequisites"></a>

Se seu [dispositivo de autenticação multifator (MFA)](id_credentials_mfa.md) for perdido, danificado ou não estiver funcionando, você poderá fazer login usando outro dispositivo de MFA registrado no mesmo usuário raiz ou usuário do IAM.

**Para iniciar sessão usando outro dispositivo de MFA**

1. Inicie sessão no [Console de gerenciamento da AWS](url-comsole-domain;iam) com o ID da sua Conta da AWS ou alias e senha da conta.

1. Na página **Verificação adicional necessária** ou na página **Autenticação multifator**, escolha **Tentar outro método de MFA**.

1. Faça a autenticação com o tipo de dispositivo de MFA que você selecionou.

1. A próxima etapa será diferente dependendo de você ter conseguido iniciar sessão com um dispositivo de MFA alternativo.
   + Se você iniciou sessão com sucesso, poderá [Sincronizar novamente os dispositivos MFA virtuais e de hardware](id_credentials_mfa_sync.md), o que talvez resolva o problema. Se seu dispositivo de MFA for perdido ou quebrar, você poderá desativá-lo. Para obter instruções sobre a desativação de qualquer tipo de dispositivo MFA, consulte [Desativar um dispositivo com MFA](id_credentials_mfa_disable.md).
   + Se você não conseguir iniciar sessão com a MFA, use as etapas [Recuperar um dispositivo com MFA de usuário raiz](#root-mfa-lost-or-broken) ou [Recuperar um dispositivo com MFA de usuário do IAM](#iam-user-mfa-lost-or-broken) para recuperar sua identidade protegida por MFA.



## Recuperar um dispositivo com MFA de usuário raiz
<a name="root-mfa-lost-or-broken"></a>

Se você não conseguir iniciar sessão com o seu dispositivo de MFA, poderá usar métodos de autenticação alternativos comprovando sua identidade usando o e-mail e o telefone registrados na sua conta.

Confirme se você consegue acessar o e-mail e o número de telefone de contato principal associados à sua conta antes de usar fatores de autenticação alternativos para fazer login como usuário-raiz. Se você precisar atualizar o telefone de contato principal, faça login como usuário do IAM com acesso de *Administrador* em vez de usuário-raiz. Para obter instruções adicionais sobre como atualizar as informações de contato da conta, consulte [Editar informações de contato](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact-primary.html) no *Guia do usuário do AWS Billing*. Caso não tenha acesso a um e-mail e telefone de contato principal, fale com o [AWS Support](https://support.aws.amazon.com/#/contacts/aws-mfa-support).

**Importante**  
Recomendamos manter atualizados o endereço de e-mail e o telefone de contato vinculados a seu usuário raiz para ter uma recuperação da conta bem-sucedida. Para obter mais informações, consulte [Atualizar seu contato principal na sua Conta da AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact-primary.html) no *Guia de Referência do AWS Gerenciamento de contas*.

**Para fazer login usando fatores alternativos de autenticação como um Usuário raiz da conta da AWS**

1.  Faça login no [Console de gerenciamento da AWS](https://console.aws.amazon.com/) como o proprietário da conta ao escolher a opção **Usuário-raiz** e inserir o endereço de e-mail da Conta da AWS. Na próxima página, insira a senha.

1. Na página **Verificação adicional necessária**, selecione um método de MFA para autenticação e escolha **Avançar**. 
**nota**  
Você pode ver um texto alternativo, como **Sign in using MFA** (Fazer login usando MFA), **Troubleshoot your authentication device** (Solucione o problema do dispositivo de autenticação) ou **Troubleshoot MFA** (Solucione o problema de MFA), mas a funcionalidade é a mesma. Se você não puder usar fatores de autenticação alternativos para verificar o endereço de e-mail e o número de telefone primário da conta, entre em contato com o [AWS Support](https://support.aws.amazon.com/#/contacts/aws-mfa-support) para desativar seu dispositivo de MFA.

1. Dependendo do tipo de MFA que estiver usando, você verá uma página diferente, mas a opção **Solucionar problemas de MFA** funciona da mesma forma. Na página **Verificação adicional necessária** ou na página **Autenticação multifator**, escolha **Solucionar problemas de MFA**.

1. Se necessário, digite sua senha novamente e escolha **Conectar**.

1. Na página **Solucionar problemas do dispositivo de autenticação**, na seção **Acesso usando fatores alternativos de autenticação**, escolha **Acesse usando fatores alternativos**.

1. Na página **Entrar usando fatores alternativos de autenticação**, autentique sua conta verificando o endereço de e-mail e escolha **Enviar e-mail de verificação**. 

1. Verifique o e-mail associado à sua Conta da AWS para ver se há uma mensagem da Amazon Web Services (no-reply-aws@amazon.com). Siga as orientações no e-mail.

   Se você não vir o e-mail em sua conta, verifique sua pasta de spam ou retorne para seu navegador e escolha **Reenviar o e-mail**.

1. Depois de verificar seu endereço de e-mail, você pode continuar a autenticar sua conta. Para verificar seu número de telefone para contato primário, escolha **Call me now** (Ligar para mim agora).

1. Atenda a ligação da AWS e, quando receber a solicitação, digite o número de 6 dígitos do site AWS no teclado do seu telefone. 

   Se você não receber uma chamada de AWS, escolha **Fazer login **para entrar no console novamente e começar novamente. Ou consulte [Lost or unusable Multi-Factor Authentication (MFA) device](https://support.aws.amazon.com/#/contacts/aws-mfa-support) (Dispositivo de autenticação multifator (MFA) perdido ou inutilizado para entrar em contato com o suporte e obter ajuda.

1. Depois de verificar o seu número de telefone, você pode fazer login na sua conta, escolhendo **Fazer login no console**.

1. A próxima etapa varia dependendo do tipo de MFA que você está usando:
   + Para um dispositivo MFA virtual, remova a conta do seu dispositivo. Em seguida, vá para a página [Credenciais de segurança da AWS](https://console.aws.amazon.com/iam/home?#security_credential) e exclua a entidade de dispositivo virtual de MFA antiga antes de criar uma nova.
   + Para obter uma chave de segurança FIDO, acesse a página [Credenciais de segurança da AWS](https://console.aws.amazon.com/iam/home?#security_credential) e desative a chave FIDO antiga antes de habilitar uma nova.
   + Para um token de hardware TOTP, fale com o provedor de terceiros para obter ajuda para corrigir ou substituir o dispositivo. Você pode continuar a fazer login usando fatores alternativos de autenticação até que você receba o novo dispositivo. Depois que tiver o novo dispositivo MFA de hardware, acesse a página [Credenciais de segurança da AWS](https://console.aws.amazon.com/iam/home?#security_credential) e exclua o dispositivo MFA antigo.
**nota**  
Você não precisa substituir um dispositivo MFA perdido ou roubado pelo mesmo tipo de dispositivo. Por exemplo, se você quebrar a chave de segurança FIDO e solicitar uma nova, poderá usar um dispositivo MFA virtual ou um token de hardware TOTP até receber uma nova chave de segurança FIDO.

**Importante**  
Se seu dispositivo MFA estiver perdido ou tiver sido roubado, altere a senha de usuário-raiz depois de iniciar sessão e estabelecer seu dispositivo MFA substituto. Um invasor pode ter roubado o dispositivo de autenticação e também pode ter sua senha atual. Para obter mais informações, consulte [Alterar a senha para o Usuário raiz da conta da AWS](root-user-password.md).

## Recuperar um dispositivo com MFA de usuário do IAM
<a name="iam-user-mfa-lost-or-broken"></a>

Se você for um usuário do IAM que não consegue iniciar sessão com MFA, não poderá recuperar um dispositivo de MFA por conta própria. Entre em contato com o administrador para desativar o dispositivo. Depois você poderá habilitar um novo dispositivo.

**Para obter ajuda para um dispositivo MFA associado a um usuário do IAM**

1. Entre em contato com o administrador da AWS ou outra pessoa que forneceu a você o nome de usuário e a senha para o usuário do IAM. O administrador deve desativar o dispositivo MFA, como descrito em [Desativar um dispositivo com MFA](id_credentials_mfa_disable.md) para que você possa se conectar.

1. A próxima etapa varia dependendo do tipo de MFA que você está usando:
   + Para um dispositivo MFA virtual, remova a conta do seu dispositivo. Em seguida, ative o dispositivo virtual, como descrito em [Atribuir um dispositivo MFA virtual ao Console de gerenciamento da AWS](id_credentials_mfa_enable_virtual.md).
   + Para uma chave de segurança FIDO, entre em contato com o provedor terceirizado para obter ajuda para substituir o dispositivo. Quando você receber a nova chave de segurança FIDO, habilite-a, como descrito em [Atribuir uma chave de acesso ou uma chave de segurança ao Console de gerenciamento da AWS](id_credentials_mfa_enable_fido.md).
   + Para um token de hardware TOTP, fale com o provedor de terceiros para obter ajuda para corrigir ou substituir o dispositivo. Após ter o novo dispositivo MFA físico, ative o dispositivo, como descrito em [Atribuir um token de hardware TOTP ao Console de gerenciamento da AWS](id_credentials_mfa_enable_physical.md).
**nota**  
Você não precisa substituir um dispositivo MFA perdido ou roubado pelo mesmo tipo de dispositivo. É possível ter até oito dispositivos de MFA de qualquer combinação. Por exemplo, se você quebrar a chave de segurança FIDO e solicitar uma nova, poderá usar um dispositivo MFA virtual ou um token de hardware TOTP até receber uma nova chave de segurança FIDO.

1. Se seu dispositivo MFA foi perdido ou roubado, também altere sua senha no caso de um invasor ter roubado o dispositivo de autenticação e tenha também sua senha atual. Para obter mais informações, consulte [Gerenciar senhas para usuários do IAM](id_credentials_passwords_admin-change-user.md)

# Acesso seguro à API com a MFA
<a name="id_credentials_mfa_configure-api-require"></a>

Com as políticas do IAM, você pode especificar quais operações de API um usuário tem permissão para chamar. Você pode adicionar mais segurança exigindo que os usuários se autentiquem com autenticação multifator (MFA) antes de permitir que eles executem ações particularmente confidenciais.

Por exemplo, você pode ter uma política que permita que um usuário execute as ações `RunInstances`, `DescribeInstances` e `StopInstances` do Amazon EC2. Mas você pode restringir uma ação destrutiva, tal como `TerminateInstances` e garantir que os usuários possam executar essa ação apenas se eles autenticarem com um dispositivo MFA da AWS.

**Topics**
+ [

## Visão geral
](#MFAProtectedAPI-overview)
+ [

## Cenário: Proteção por MFA para delegação entre contas
](#MFAProtectedAPI-cross-account-delegation)
+ [

## Cenário: Proteção por MFA para acesso às operações da API na conta atual
](#MFAProtectedAPI-user-mfa)
+ [

## Cenário: Proteção por MFA para recursos que têm políticas baseadas em recurso
](#MFAProtectedAPI-resource-policies)

## Visão geral
<a name="MFAProtectedAPI-overview"></a>

A inclusão da proteção de MFA às operações de API envolve estas tarefas:

1. O administrador configura um dispositivo MFA da AWS para cada usuário que precisa fazer solicitações de API que exigem autenticação de MFA. Para obter mais informações, consulte [Código da autenticação multifator no IAM da AWS](id_credentials_mfa.md). 

1. O administrador cria políticas para os usuários que incluem um elemento `Condition` que verifica se o usuário autenticou com um dispositivo MFA da AWS.

1. O usuário chama uma das operações de API do AWS STS que é compatível com os parâmetros de MFA: [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) ou [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html). Como parte da chamada, o usuário inclui o identificador do dispositivo que está associado a ele. O usuário também inclui a time-based one-time password (TOTP – Senha de uso único baseada em tempo) que o dispositivo gera. Em qualquer um dos casos, o usuário recebe novamente credenciais de segurança temporárias que ele pode então usar para fazer solicitações adicionais para a AWS.
**nota**  
A proteção de MFA para as operações de API de um serviço está disponível apenas se o serviço for compatível com credenciais de segurança temporárias. Para obter uma lista destes serviços, consulte [Uso de credenciais de segurança temporárias para acessar a AWS](https://docs.aws.amazon.com/STS/latest/UsingSTS/UsingTokens.html).

Se a autorização falhar, a AWS retornará uma mensagem de erro "Acesso negado" (como para qualquer acesso não autorizado). Com políticas de API protegidas pela MFA em vigor, a AWS nega o acesso às operações de API especificadas nas políticas se o usuário tentar chamar uma operação da API sem uma autenticação MFA válida. A operação também é negada se o time stamp da solicitação para a operação de API estiver fora do intervalo permitido especificado na política. O usuário deve ser reautenticado com MFA através da solicitação de novas credenciais de segurança temporárias com um código de MFA e número de série do dispositivo.

### Políticas do IAM com condições de MFA
<a name="MFAProtectedAPI-policies"></a>

Políticas com condições de MFA podem ser anexadas a:
+ Um usuário ou grupo do IAM
+ Um recurso como um bucket do Amazon S3, uma fila do Amazon SQS ou um tópico do Amazon SNS
+ A política de confiança de uma função do IAM que pode ser assumida por um usuário

Você pode usar uma condição de MFA em uma política para verificar as seguintes propriedades:
+ Existência: para verificar se o usuário fez a autenticação com MFA, verifique se a chave `aws:MultiFactorAuthPresent` é `True` em uma condição `Bool`. A chave só está presente quando o usuário realiza a autenticação com credenciais de curto prazo. As credenciais de longo prazo, como as chaves de acesso, não incluem essa chave.
+ Duração: se você deseja conceder acesso apenas em um período especificado após a autenticação com MFA, use um tipo de condição numérica para comparar o tempo da chave `aws:MultiFactorAuthAge` com um valor (por exemplo, 3.600 segundos). Observe que a chave `aws:MultiFactorAuthAge` não estará presente se a MFA não tiver sido usada.

O exemplo a seguir mostra a política de confiança de uma função do IAM que inclui uma condição de MFA para testar a existência de autenticação MFA. Com essa política, os usuários da Conta da AWS especificada no elemento `Principal` (substituir `ACCOUNT-B-ID` por um ID de Conta da AWS válido) podem assumir a perfil à que essa política está anexada. No entanto, esses usuários só podem assumir a função se eles forem autenticados usando a MFA.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {"AWS": "ACCOUNT-B-ID"},
    "Action": "sts:AssumeRole",
    "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
  }
}
```

------

Para obter mais informações sobre os tipos de condições para MFA, consulte [AWSChaves de contexto de condições globais da](reference_policies_condition-keys.md), [Operadores de condição numéricos](reference_policies_elements_condition_operators.md#Conditions_Numeric) e [Operador de condição para verificar a existência de chaves de condição](reference_policies_elements_condition_operators.md#Conditions_Null). 

### Escolher entre GetSessionToken e AssumeRole
<a name="scenarios"></a>

O AWS STS fornece duas operações de API que permitem que os usuários passem informações de MFA: `GetSessionToken` e `AssumeRole`. A operação de API que o usuário chama para obter credenciais de segurança temporárias depende de qual dos seguintes cenários se aplica. 

**Use `GetSessionToken` nos seguintes cenários:**
+ Chame as operações de API que acessam recursos na mesma Conta da AWS que o usuário do IAM efetua a solicitação. Observe que credenciais temporárias de uma solicitação `GetSessionToken` poderão acessar operações de API do AWS STS e do IAM *apenas* se você incluir informações de MFA na solicitação de credenciais. Como credenciais temporárias retornadas por `GetSessionToken` incluem informações de MFA, você pode verificar a existência de MFA em operações de API individuais feitas pelas credenciais. 
+ Acesso aos recursos protegidos com políticas baseadas em recursos que incluem uma condição de MFA.

O objetivo da operação `GetSessionToken` é autenticar o usuário que usa a MFA. Não é possível usar políticas para controlar as operações de autenticação.

**Use `AssumeRole` nos seguintes cenários:**
+ Chame as operações de API que acessam recursos na mesma ou em outra Conta da AWS. As chamadas de API podem incluir qualquer API do AWS STS ou do IAM. Observe que para proteger o acesso, você impõe a MFA no momento em que o usuário assume a função. As credenciais temporárias retornadas por `AssumeRole` não incluem informações de MFA no contexto, portanto não é possível verificar a existência de operações de API individuais quanto à MFA. É por isso que você deve usar `GetSessionToken` para restringir o acesso a recursos protegidos por políticas baseadas em recursos.

**nota**  
Os logs do AWS CloudTrail conterão informações de MFA quando o usuário do IAM fizer login com MFA. Se o usuário do IAM assumir um perfil do IAM, o CloudTrail também registrará em log `mfaAuthenticated: true` nos atributos `sessionContext` para ações realizadas usando o perfil assumido. Porém, o registro em log do CloudTrail é separado do que o IAM exige quando as chamadas de API são feitas com as credenciais do perfil assumido. Para saber mais, consulte [Elemento userIdentity do CloudTrail](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html).

Detalhes sobre como implementar esses cenários são fornecidos posteriormente neste documento.

### Pontos importantes sobre acesso à API protegido por MFA
<a name="MFAProtectedAPI-important-points"></a>

É importante compreender os seguintes aspectos da proteção por MFA das operações de API:
+ A proteção por MFA está disponível apenas com credenciais de segurança temporárias, que devem ser obtidas com `AssumeRole` ou `GetSessionToken`. 
+ Você não pode usar o acesso à API protegido por MFA com credenciais de Usuário raiz da conta da AWS.
+ Você não pode usar o acesso à API protegido por MFA com chaves de segurança U2F.
+ Usuários federados não podem ser atribuídos a um dispositivo com MFA para uso com os serviços da AWS, portanto eles não podem acessar os recursos da AWS controlados por MFA. (Consulte o próximo ponto.) 
+ Outras operações de API do AWS STS que retornam credenciais temporárias não são compatíveis com MFA. Para `AssumeRoleWithWebIdentity` e `AssumeRoleWithSAML`, o usuário é autenticado por um provedor externo e a AWS não pode determinar se aquele provedor exigiu MFA. Para `GetFederationToken`, a MFA não é necessariamente associada a um usuário específico. 
+ Da mesma forma, credenciais de longo prazo (chaves de acesso de usuário do IAM e chaves de acesso do usuário raiz) não podem ser usadas com o acesso à API protegido por MFA, pois elas não expiram.
+ `AssumeRole` e `GetSessionToken` também podem ser chamados sem informações de MFA. Neste caso, o chamador recebe as credenciais de segurança temporárias, mas as informações da sessão para essas credenciais temporárias não indicam que o usuário realizou autenticação com MFA.
+ Para estabelecer a proteção por MFA para operações de API, inclua condições de MFA nas políticas. Uma política deve incluir a chave de condição `aws:MultiFactorAuthPresent` para impor o uso de MFA. Para delegação entre contas, a política de confiança da função deve incluir a chave de condição.
+ Ao permitir que outra Conta da AWS acesse recursos em sua conta, a segurança dos seus recursos dependerá da configuração da conta confiável (a outra conta, não a sua). Isso ocorre mesmo quando você exige a autenticação multifator. Qualquer identidade na conta confiável que tenha permissão para criar dispositivos MFA virtuais pode construir uma solicitação de MFA para atender esta parte de sua política de confiança da função. Antes de permitir que membros de outra conta acessem seus recursos da AWS que exigem autenticação multifator, você deve garantir que o proprietário da conta confiável siga as melhores práticas de segurança. Por exemplo, a conta confiável deve restringir o acesso a operações de API confidenciais, como operações de API de gerenciamento de dispositivos MFA, a identidades confiáveis e específicas.
+ Se uma política inclui uma condição de MFA, uma solicitação é negada se os usuários não tiverem realizado autenticação por MFA ou se eles fornecerem um identificador de dispositivo MFA inválido ou TOTP inválida.

## Cenário: Proteção por MFA para delegação entre contas
<a name="MFAProtectedAPI-cross-account-delegation"></a>

Nesse cenário, você deseja delegar acesso a usuários do IAM em outra conta, mas apenas se os usuários forem autenticados com um dispositivo com MFA da AWS. Para obter mais informações sobre delegação entre contas, consulte [Termos e conceitos das funções](id_roles.md#id_roles_terms-and-concepts). 

Imagine que você tenha a conta A (a conta de confiança que possui o recurso a ser acessado) com a usuária do IAM Anaya, que possui permissão de administrador. Ela quer conceder acesso ao usuário Richard na conta B (a conta confiável), mas quer ter certeza de que Richard é autenticado por MFA antes de assumir a função. 

1. Na conta de confiança A, Anaya cria uma função do IAM chamada `CrossAccountRole` e define a entidade de segurança na política de confiança da função para o ID de conta da conta B. A política de confiança concede permissão para a ação `AssumeRole` do AWS STS. Anaya também adiciona uma condição de MFA à política de confiança, como no exemplo a seguir. 

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Allow",
       "Principal": {"AWS": "ACCOUNT-B-ID"},
       "Action": "sts:AssumeRole",
       "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
     }
   }
   ```

------

1. Anaya adiciona uma política de permissões à função que especifica o que a função tem permissão para fazer. A política de permissões para uma função com proteção por MFA não é diferente de qualquer outra política de permissões para funções. O exemplo a seguir mostra a política que Anaya adiciona à função; ela permite que um usuário que a esteja assumindo execute qualquer ação do Amazon DynamoDB na tabela `Books` na conta A. Essa política também permite a ação `dynamodb:ListTables`, que é necessária para executar ações no console. 
**nota**  
A política de permissões não inclui uma condição de MFA. É importante compreender que a autenticação por MFA é usada apenas para determinar se um usuário pode assumir a função. Assim que o usuário assume a função, nenhuma outra verificação de MFA é realizada. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "TableActions",
               "Effect": "Allow",
               "Action": "dynamodb:*",
               "Resource": "arn:aws:dynamodb:*:111122223333:table/Books"
           },
           {
               "Sid": "ListTables",
               "Effect": "Allow",
               "Action": "dynamodb:ListTables",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Na conta confiável B, o administrador se certifica de que o usuário do IAM, Richard, esteja configurado com um dispositivo com MFA da AWS e de que ele saiba o ID do dispositivo. O ID do dispositivo será o número de série, se ele for um dispositivo MFA de hardware, ou o ARN do dispositivo, se ele for um dispositivo MFA virtual.

1. Na conta B, o administrador anexa a seguinte política ao usuário Richard (ou a um grupo do qual ele seja membro) que permite que ele invoque a ação `AssumeRole`. O recurso é definido como o ARN da função que Anaya criou na etapa 1. Observe que esta política não contém uma condição de MFA.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sts:AssumeRole"
               ],
               "Resource": [
                   "arn:aws:iam::111122223333:role/CrossAccountRole"
               ]
           }
       ]
   }
   ```

------

1. Na conta B, Richard (ou um aplicativo que Richard está executando) chama `AssumeRole`. A chamada de API inclui o ARN da função a assumir (`arn:aws:iam::ACCOUNT-A-ID:role/CrossAccountRole`), o ID do dispositivo MFA e a TOTP atual que Richard recebe de seu dispositivo. 

   Quando Richard chama `AssumeRole`, a AWS determina se ele tem credenciais válidas, incluindo a exigência de MFA. Dessa forma, Richard assume a função com êxito e pode executar qualquer ação do DynamoDB na tabela chamada `Books` na conta A usando as credenciais temporárias da função. 

   Para obter um exemplo de um programa que executa chamadas `AssumeRole`, consulte [Chamar AssumeRole com autenticação MFA (Python)](id_credentials_mfa_sample-code.md#MFAProtectedAPI-example-assumerole).

## Cenário: Proteção por MFA para acesso às operações da API na conta atual
<a name="MFAProtectedAPI-user-mfa"></a>

Nesse cenário, você deve se certificar que um usuário na sua Conta da AWS pode acessar operações de API confidenciais apenas se ele for autenticado usando um dispositivo de MFA da AWS.

Imagine que você tem a conta A que contém um grupo de desenvolvedores que precisa trabalhar com instâncias do EC2. Desenvolvedores comuns podem trabalhar com as instâncias, mas não recebem permissões para as ações `ec2:StopInstances` ou `ec2:TerminateInstances`. Você deseja limitar essas ações privilegiadas “destrutivas” a apenas alguns usuários confiáveis, portanto você adiciona proteção por MFA à política que permite essas ações importantes do Amazon EC2. 

Nesse cenário, um desses usuários confiáveis é o usuário Sofía. O usuário Anaya é um administrador na conta A. 

1. Anaya se certifica de que Sofía esteja configurada com um dispositivo com MFA da AWS e de que ela saiba o ID do dispositivo. O ID do dispositivo será o número de série, se ele for um dispositivo MFA de hardware, ou o ARN do dispositivo, se ele for um dispositivo MFA virtual. 

1. Anaya cria um grupo chamado `EC2-Admins` e adiciona o usuário Sofía ao grupo.

1. Anaya anexa a seguinte política ao grupo `EC2-Admins`. Essa política concede aos usuários permissão para chamar as ações `StopInstances` e `TerminateInstances` do Amazon EC2 apenas se o usuário tiver se autenticado usando a MFA. 

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Action": [
         "ec2:StopInstances",
         "ec2:TerminateInstances"
       ],
       "Resource": ["*"],
       "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
     }]
   }
   ```

------

1. 
**nota**  
Para essa política entrar em vigor, os usuários devem primeiro sair e depois fazer login novamente.

   Se a usuária Sofía precisar interromper ou encerrar uma instância do Amazon EC2, ela (ou uma aplicação que ela esteja executando) chamará `GetSessionToken`. Essa operação de API transmite o ID do dispositivo MFA e a TOTP atual que Sofía recebeu de seu dispositivo.

1. A usuária Sofía (ou uma aplicação que Sofía esteja usando) usa as credenciais temporárias fornecidas por `GetSessionToken` para chamar a ação `StopInstances` ou `TerminateInstances` do Amazon EC2. 

   Para obter um exemplo de um programa que executa chamadas `GetSessionToken`, consulte [Chamar GetSessionToken com autenticação MFA](id_credentials_mfa_sample-code.md#MFAProtectedAPI-example-getsessiontoken) adiante neste documento.

## Cenário: Proteção por MFA para recursos que têm políticas baseadas em recurso
<a name="MFAProtectedAPI-resource-policies"></a>

Nesse cenário, você é o proprietário de um bucket do S3, de uma fila do SQS ou de um tópico do SNS. Você deseja ter certeza de que qualquer usuário de qualquer Conta da AWS que acessa o recurso seja autenticado por um dispositivo de MFA da AWS. 

Este cenário ilustra uma maneira de fornecer proteção por MFA entre contas sem a exigência de que os usuários assumam uma função primeiro. Neste caso, o usuário pode acessar o recurso se atender a três condições: estar autenticado por MFA, ser capaz de obter credenciais de segurança temporárias do `GetSessionToken`, e ter uma conta de confiança da política do recurso. 

Imagine que você está na conta A e cria um bucket do S3. Você deseja conceder acesso a este bucket para os usuários em várias Contas da AWS diferentes, mas somente se esses usuários forem autenticados com MFA.

Nesse cenário, o usuário Anaya é um administrador na conta A. O usuário Nikhil é um usuário do IAM na conta C.

1. Na conta A, Anaya cria um bucket chamado `Account-A-bucket`.

1. Anaya adiciona a política de bucket ao bucket. A política permite que qualquer usuário na conta A, B ou C execute as ações `PutObject` e `DeleteObject` do Amazon S3 no bucket. A política inclui uma condição de MFA. 

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [{
       "Effect": "Allow",
       "Principal": {"AWS": [
         "ACCOUNT-A-ID",
         "ACCOUNT-B-ID",
         "ACCOUNT-C-ID"
       ]},
       "Action": [
         "s3:PutObject",
         "s3:DeleteObject"
       ],
       "Resource": ["arn:aws:s3:::ACCOUNT-A-BUCKET-NAME/*"],
       "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
     }]
   }
   ```

------
**nota**  
O Amazon S3 oferece um recurso de exclusão de MFA para acesso à conta *raiz* (apenas). Você pode habilitar a exclusão de MFA do Amazon S3 ao definir o estado de versionamento do bucket. A exclusão de MFA do Amazon S3 não pode ser aplicada a um usuário do IAM e é gerenciada independentemente do acesso à API protegido por MFA. Um usuário do IAM com permissões para excluir um bucket não pode excluir um bucket com a exclusão de MFA do Amazon S3 habilitada. Para obter mais informações sobre a exclusão de MFA do Amazon S3, consulte [Exclusão de MFA](https://docs.aws.amazon.com/AmazonS3/latest/dev/MultiFactorAuthenticationDelete.html).

1. Na conta C, um administrador se certifica de que o usuário Nikhil esteja configurado com um dispositivo com MFA da AWS e que ele saiba o ID do dispositivo. O ID do dispositivo será o número de série, se ele for um dispositivo MFA de hardware, ou o ARN do dispositivo, se ele for um dispositivo MFA virtual. 

1. Na conta C, Nikhil (ou um aplicativo que ele está executando) chama `GetSessionToken`. A chamada inclui o ID ou ARN do dispositivo de MFA e a TOTP atual que Nikhil recebe de seu dispositivo. 

1. Nikhil (ou uma aplicação que ele esteja usando) usa as credenciais temporárias retornadas por `GetSessionToken` para chamar a ação `PutObject` do Amazon S3 para carregar um arquivo para `Account-A-bucket`. 

   Para obter um exemplo de um programa que executa chamadas `GetSessionToken`, consulte [Chamar GetSessionToken com autenticação MFA](id_credentials_mfa_sample-code.md#MFAProtectedAPI-example-getsessiontoken) adiante neste documento.
**nota**  
As credenciais temporárias que `AssumeRole` retorna não funcionam neste caso. Embora o usuário possa fornecer informações de MFA para assumir uma função, as credenciais temporárias retornadas por `AssumeRole` não incluem as informações de MFA. Essas informações são necessárias para atender à condição de MFA na política. 

# Código de exemplo: Solicitação de credenciais com autenticação multifator
<a name="id_credentials_mfa_sample-code"></a>

Os exemplos a seguir, mostram como chamar as operações `GetSessionToken` e `AssumeRole` e transmitir os parâmetros de autenticação MFA. Não é necessário ter permissão para chamar `GetSessionToken`, mas você deve ter uma política que permita a chamada `AssumeRole`. As credenciais retornadas são, então, usadas para listar todos os buckets do S3 na conta.

## Chamar GetSessionToken com autenticação MFA
<a name="MFAProtectedAPI-example-getsessiontoken"></a>

O exemplo a seguir mostra como chamar `GetSessionToken` e transmitir informações da autenticação MFA. As credenciais de segurança temporárias retornadas pela operação `GetSessionToken` são usadas para listar todos os buckets do S3 na conta.

A política anexada ao usuário que executa esse código (ou a um grupo em que o usuário está) fornece as permissões para as credenciais temporárias retornadas. Para este código de exemplo, a política deve conceder ao usuário permissão para solicitar a operação `ListBuckets` do Amazon S3. 

Os exemplos de código a seguir mostram como usar o `GetSessionToken`.

------
#### [ CLI ]

**AWS CLI**  
**Como obter um conjunto de credenciais de curto prazo para uma identidade do IAM**  
O comando `get-session-token`, apresentado a seguir, recupera um conjunto de credenciais de curto prazo para a identidade do IAM que executa a chamada. As credenciais resultantes podem ser usadas para solicitações em que a autenticação multifator (MFA) é requerida pela política. As credenciais expiram 15 minutos após serem geradas.  

```
aws sts get-session-token \
    --duration-seconds 900 \
    --serial-number "YourMFADeviceSerialNumber" \
    --token-code 123456
```
Resultado:  

```
{
    "Credentials": {
        "AccessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY",
        "SessionToken": "AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE",
        "Expiration": "2020-05-19T18:06:10+00:00"
    }
}
```
Para obter mais informações, consulte [Solicitação de credenciais de segurança temporárias](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_getsessiontoken) no *Guia do usuário do AWS IAM*.  
+  Consulte detalhes da API em [GetSessionToken](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/get-session-token.html) na *Referência de comandos da AWS CLI*. 

------
#### [ PowerShell ]

**Ferramentas para PowerShell V4**  
**Exemplo 1: retorna uma instância `Amazon.RuntimeAWSCredentials` contendo credenciais temporárias válidas por um determinado período. As credenciais usadas para solicitar credenciais temporárias são inferidas dos padrões atuais do shell. Para especificar outras credenciais, use os parâmetros -ProfileName ou -AccessKey/-SecretKey.**  

```
Get-STSSessionToken
```
**Saída:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**Exemplo 2: retorna uma instância `Amazon.RuntimeAWSCredentials` contendo credenciais temporárias válidas por uma hora. As credenciais usadas para fazer a solicitação são obtidas do perfil especificado.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile
```
**Saída:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**Exemplo 3: retorna uma instância `Amazon.RuntimeAWSCredentials` contendo credenciais temporárias válidas por uma hora usando o número de identificação do dispositivo de MFA associado à conta cujas credenciais estão especificadas no perfil 'myprofilename' e o valor fornecido pelo dispositivo.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile -SerialNumber YourMFADeviceSerialNumber -TokenCode 123456
```
**Saída:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
+  Consulte detalhes da API em [GetSessionToken](https://docs.aws.amazon.com/powershell/v4/reference) na *Referência de cmdlets do Ferramentas da AWS para PowerShell (V4)*. 

**Ferramentas para o PowerShell V5**  
**Exemplo 1: retorna uma instância `Amazon.RuntimeAWSCredentials` contendo credenciais temporárias válidas por um determinado período. As credenciais usadas para solicitar credenciais temporárias são inferidas dos padrões atuais do shell. Para especificar outras credenciais, use os parâmetros -ProfileName ou -AccessKey/-SecretKey.**  

```
Get-STSSessionToken
```
**Saída:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**Exemplo 2: retorna uma instância `Amazon.RuntimeAWSCredentials` contendo credenciais temporárias válidas por uma hora. As credenciais usadas para fazer a solicitação são obtidas do perfil especificado.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile
```
**Saída:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
**Exemplo 3: retorna uma instância `Amazon.RuntimeAWSCredentials` contendo credenciais temporárias válidas por uma hora usando o número de identificação do dispositivo de MFA associado à conta cujas credenciais estão especificadas no perfil 'myprofilename' e o valor fornecido pelo dispositivo.**  

```
Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile -SerialNumber YourMFADeviceSerialNumber -TokenCode 123456
```
**Saída:**  

```
AccessKeyId                             Expiration                              SecretAccessKey                        SessionToken
-----------                             ----------                              ---------------                        ------------
EXAMPLEACCESSKEYID                      2/16/2015 9:12:28 PM                    examplesecretaccesskey...              SamPleTokeN.....
```
+  Para obter detalhes sobre a API, consulte [GetSessionToken](https://docs.aws.amazon.com/powershell/v5/reference) na *Ferramentas da AWS para PowerShell Cmdlet Reference (V5)*. 

------
#### [ Python ]

**SDK para Python (Boto3).**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/sts#code-examples). 
Obtenha um token de sessão passando um token de MFA e use-o para listar os buckets do Amazon S3 para a conta.  

```
def list_buckets_with_session_token_with_mfa(mfa_serial_number, mfa_totp, sts_client):
    """
    Gets a session token with MFA credentials and uses the temporary session
    credentials to list Amazon S3 buckets.

    Requires an MFA device serial number and token.

    :param mfa_serial_number: The serial number of the MFA device. For a virtual MFA
                              device, this is an Amazon Resource Name (ARN).
    :param mfa_totp: A time-based, one-time password issued by the MFA device.
    :param sts_client: A Boto3 STS instance that has permission to assume the role.
    """
    if mfa_serial_number is not None:
        response = sts_client.get_session_token(
            SerialNumber=mfa_serial_number, TokenCode=mfa_totp
        )
    else:
        response = sts_client.get_session_token()
    temp_credentials = response["Credentials"]

    s3_resource = boto3.resource(
        "s3",
        aws_access_key_id=temp_credentials["AccessKeyId"],
        aws_secret_access_key=temp_credentials["SecretAccessKey"],
        aws_session_token=temp_credentials["SessionToken"],
    )

    print(f"Buckets for the account:")
    for bucket in s3_resource.buckets.all():
        print(bucket.name)
```
+  Consulte detalhes da API em [GetSessionToken](https://docs.aws.amazon.com/goto/boto3/sts-2011-06-15/GetSessionToken) na *Referência da API AWS SDK for Python (Boto3)*. 

------

## Chamar AssumeRole com autenticação MFA (Python)
<a name="MFAProtectedAPI-example-assumerole"></a>

Os exemplos a seguir mostram como chamar `AssumeRole` e transmitir informações da autenticação MFA. As credenciais de segurança temporárias retornadas por `AssumeRole` são, então, usadas para listar todos os buckets do Amazon S3 na conta.

Para ter mais informações sobre esse cenário, consulte [Cenário: Proteção por MFA para delegação entre contas](id_credentials_mfa_configure-api-require.md#MFAProtectedAPI-cross-account-delegation). 

Os exemplos de código a seguir mostram como usar o `AssumeRole`.

------
#### [ .NET ]

**SDK para .NET**  
 Há mais no GitHub. Encontre o exemplo completo e veja como configurar e executar no [AWS Code Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/STS#code-examples). 

```
using System;
using System.Threading.Tasks;
using Amazon;
using Amazon.SecurityToken;
using Amazon.SecurityToken.Model;

namespace AssumeRoleExample
{
    class AssumeRole
    {
        /// <summary>
        /// This example shows how to use the AWS Security Token
        /// Service (AWS STS) to assume an IAM role.
        ///
        /// NOTE: It is important that the role that will be assumed has a
        /// trust relationship with the account that will assume the role.
        ///
        /// Before you run the example, you need to create the role you want to
        /// assume and have it trust the IAM account that will assume that role.
        ///
        /// See https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html
        /// for help in working with roles.
        /// </summary>

        // A region property may be used if the profile or credentials loaded do not specify a region,
        // or to use a specific region.
        private static readonly RegionEndpoint REGION = RegionEndpoint.USWest2;

        static async Task Main()
        {
            // Create the SecurityToken client and then display the identity of the
            // default user.
            var roleArnToAssume = "arn:aws:iam::123456789012:role/testAssumeRole";

            var client = new Amazon.SecurityToken.AmazonSecurityTokenServiceClient(REGION);

            // Get and display the information about the identity of the default user.
            var callerIdRequest = new GetCallerIdentityRequest();
            var caller = await client.GetCallerIdentityAsync(callerIdRequest);
            Console.WriteLine($"Original Caller: {caller.Arn}");

            // Create the request to use with the AssumeRoleAsync call.
            var assumeRoleReq = new AssumeRoleRequest()
            {
                DurationSeconds = 1600,
                RoleSessionName = "Session1",
                RoleArn = roleArnToAssume
            };

            var assumeRoleRes = await client.AssumeRoleAsync(assumeRoleReq);

            // Now create a new client based on the credentials of the caller assuming the role.
            var client2 = new AmazonSecurityTokenServiceClient(credentials: assumeRoleRes.Credentials, REGION);

            // Get and display information about the caller that has assumed the defined role.
            var caller2 = await client2.GetCallerIdentityAsync(callerIdRequest);
            Console.WriteLine($"AssumedRole Caller: {caller2.Arn}");
        }
    }
}
```
+  Consulte detalhes da API em [AssumeRole](https://docs.aws.amazon.com/goto/DotNetSDKV3/sts-2011-06-15/AssumeRole) na *Referência da API AWS SDK para .NET*. 

------
#### [ Bash ]

**AWS CLI com script Bash**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli/bash-linux/iam#code-examples). 

```
###############################################################################
# function iecho
#
# This function enables the script to display the specified text only if
# the global variable $VERBOSE is set to true.
###############################################################################
function iecho() {
  if [[ $VERBOSE == true ]]; then
    echo "$@"
  fi
}

###############################################################################
# function errecho
#
# This function outputs everything sent to it to STDERR (standard error output).
###############################################################################
function errecho() {
  printf "%s\n" "$*" 1>&2
}

###############################################################################
# function sts_assume_role
#
# This function assumes a role in the AWS account and returns the temporary
#  credentials.
#
# Parameters:
#       -n role_session_name -- The name of the session.
#       -r role_arn -- The ARN of the role to assume.
#
# Returns:
#       [access_key_id, secret_access_key, session_token]
#     And:
#       0 - If successful.
#       1 - If an error occurred.
###############################################################################
function sts_assume_role() {
  local role_session_name role_arn response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function sts_assume_role"
    echo "Assumes a role in the AWS account and returns the temporary credentials:"
    echo "  -n role_session_name -- The name of the session."
    echo "  -r role_arn -- The ARN of the role to assume."
    echo ""
  }

  while getopts n:r:h option; do
    case "${option}" in
      n) role_session_name=${OPTARG} ;;
      r) role_arn=${OPTARG} ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done

  response=$(aws sts assume-role \
    --role-session-name "$role_session_name" \
    --role-arn "$role_arn" \
    --output text \
    --query "Credentials.[AccessKeyId, SecretAccessKey, SessionToken]")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-role operation failed.\n$response"
    return 1
  fi

  echo "$response"

  return 0
}
```
+  Consulte detalhes da API em [AssumeRole](https://docs.aws.amazon.com/goto/aws-cli/sts-2011-06-15/AssumeRole) na *Referência de comandos da AWS CLI*. 

------
#### [ C\$1\$1 ]

**SDK para C\$1\$1**  
 Há mais no GitHub. Encontre o exemplo completo e veja como configurar e executar no [repositório de exemplos de código da AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/sts#code-examples). 

```
bool AwsDoc::STS::assumeRole(const Aws::String &roleArn,
                             const Aws::String &roleSessionName,
                             const Aws::String &externalId,
                             Aws::Auth::AWSCredentials &credentials,
                             const Aws::Client::ClientConfiguration &clientConfig) {
    Aws::STS::STSClient sts(clientConfig);
    Aws::STS::Model::AssumeRoleRequest sts_req;

    sts_req.SetRoleArn(roleArn);
    sts_req.SetRoleSessionName(roleSessionName);
    sts_req.SetExternalId(externalId);

    const Aws::STS::Model::AssumeRoleOutcome outcome = sts.AssumeRole(sts_req);

    if (!outcome.IsSuccess()) {
        std::cerr << "Error assuming IAM role. " <<
                  outcome.GetError().GetMessage() << std::endl;
    }
    else {
        std::cout << "Credentials successfully retrieved." << std::endl;
        const Aws::STS::Model::AssumeRoleResult result = outcome.GetResult();
        const Aws::STS::Model::Credentials &temp_credentials = result.GetCredentials();

        // Store temporary credentials in return argument.
        // Note: The credentials object returned by assumeRole differs
        // from the AWSCredentials object used in most situations.
        credentials.SetAWSAccessKeyId(temp_credentials.GetAccessKeyId());
        credentials.SetAWSSecretKey(temp_credentials.GetSecretAccessKey());
        credentials.SetSessionToken(temp_credentials.GetSessionToken());
    }

    return outcome.IsSuccess();
}
```
+  Consulte detalhes da API em [AssumeRole](https://docs.aws.amazon.com/goto/SdkForCpp/sts-2011-06-15/AssumeRole) na *Referência da API AWS SDK para C\$1\$1*. 

------
#### [ CLI ]

**AWS CLI**  
**Como assumir um perfil**  
O comando `assume-role`, apresentado a seguir, recupera um conjunto de credenciais de curto prazo para o perfil do IAM `s3-access-example`.  

```
aws sts assume-role \
    --role-arn arn:aws:iam::123456789012:role/xaccounts3access \
    --role-session-name s3-access-example
```
Resultado:  

```
{
    "AssumedRoleUser": {
        "AssumedRoleId": "AROA3XFRBF535PLBIFPI4:s3-access-example",
        "Arn": "arn:aws:sts::123456789012:assumed-role/xaccounts3access/s3-access-example"
    },
    "Credentials": {
        "SecretAccessKey": "9drTJvcXLB89EXAMPLELB8923FB892xMFI",
        "SessionToken": "AQoXdzELDDY//////////wEaoAK1wvxJY12r2IrDFT2IvAzTCn3zHoZ7YNtpiQLF0MqZye/qwjzP2iEXAMPLEbw/m3hsj8VBTkPORGvr9jM5sgP+w9IZWZnU+LWhmg+a5fDi2oTGUYcdg9uexQ4mtCHIHfi4citgqZTgco40Yqr4lIlo4V2b2Dyauk0eYFNebHtYlFVgAUj+7Indz3LU0aTWk1WKIjHmmMCIoTkyYp/k7kUG7moeEYKSitwQIi6Gjn+nyzM+PtoA3685ixzv0R7i5rjQi0YE0lf1oeie3bDiNHncmzosRM6SFiPzSvp6h/32xQuZsjcypmwsPSDtTPYcs0+YN/8BRi2/IcrxSpnWEXAMPLEXSDFTAQAM6Dl9zR0tXoybnlrZIwMLlMi1Kcgo5OytwU=",
        "Expiration": "2016-03-15T00:05:07Z",
        "AccessKeyId": "ASIAJEXAMPLEXEG2JICEA"
    }
}
```
A saída do comando contém uma chave de acesso, uma chave secreta e um token de sessão que você pode usar para se autenticar na AWS.  
Para o uso da AWS CLI, é possível configurar um perfil nomeado associado a um perfil. Ao usar o perfil, a AWS CLI chamará assume-role e gerenciará credenciais para você. Para obter mais informações, consulte [Uso de perfis do IAM na AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html) no *Guia do usuário da AWS CLI*.  
+  Consulte detalhes da API em [AssumeRole](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/assume-role.html) na *Referência de comandos da AWS CLI*. 

------
#### [ Java ]

**SDK para Java 2.x**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sts#code-examples). 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sts.StsClient;
import software.amazon.awssdk.services.sts.model.AssumeRoleRequest;
import software.amazon.awssdk.services.sts.model.StsException;
import software.amazon.awssdk.services.sts.model.AssumeRoleResponse;
import software.amazon.awssdk.services.sts.model.Credentials;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.Locale;

/**
 * To make this code example work, create a Role that you want to assume.
 * Then define a Trust Relationship in the AWS Console. You can use this as an
 * example:
 *
 * {
 * "Version":"2012-10-17",		 	 	 
 * "Statement": [
 * {
 * "Effect": "Allow",
 * "Principal": {
 * "AWS": "<Specify the ARN of your IAM user you are using in this code example>"
 * },
 * "Action": "sts:AssumeRole"
 * }
 * ]
 * }
 *
 * For more information, see "Editing the Trust Relationship for an Existing
 * Role" in the AWS Directory Service guide.
 *
 * Also, set up your development environment, including your credentials.
 *
 * For information, see this documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class AssumeRole {
    public static void main(String[] args) {
        final String usage = """

                Usage:
                    <roleArn> <roleSessionName>\s

                Where:
                    roleArn - The Amazon Resource Name (ARN) of the role to assume (for example, arn:aws:iam::000008047983:role/s3role).\s
                    roleSessionName - An identifier for the assumed role session (for example, mysession).\s
                """;

        if (args.length != 2) {
            System.out.println(usage);
            System.exit(1);
        }

        String roleArn = args[0];
        String roleSessionName = args[1];
        Region region = Region.US_EAST_1;
        StsClient stsClient = StsClient.builder()
                .region(region)
                .build();

        assumeGivenRole(stsClient, roleArn, roleSessionName);
        stsClient.close();
    }

    public static void assumeGivenRole(StsClient stsClient, String roleArn, String roleSessionName) {
        try {
            AssumeRoleRequest roleRequest = AssumeRoleRequest.builder()
                    .roleArn(roleArn)
                    .roleSessionName(roleSessionName)
                    .build();

            AssumeRoleResponse roleResponse = stsClient.assumeRole(roleRequest);
            Credentials myCreds = roleResponse.credentials();

            // Display the time when the temp creds expire.
            Instant exTime = myCreds.expiration();
            String tokenInfo = myCreds.sessionToken();

            // Convert the Instant to readable date.
            DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT)
                    .withLocale(Locale.US)
                    .withZone(ZoneId.systemDefault());

            formatter.format(exTime);
            System.out.println("The token " + tokenInfo + "  expires on " + exTime);

        } catch (StsException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }
    }
}
```
+  Consulte detalhes da API em [AssumeRole](https://docs.aws.amazon.com/goto/SdkForJavaV2/sts-2011-06-15/AssumeRole) na *Referência da API AWS SDK for Java 2.x*. 

------
#### [ JavaScript ]

**SDK para JavaScript (v3)**  
 Há mais no GitHub. Encontre o exemplo completo e veja como configurar e executar no [Repositório de exemplos de código da AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/sts#code-examples). 
Crie o cliente.  

```
import { STSClient } from "@aws-sdk/client-sts";
// Set the AWS Region.
const REGION = "us-east-1";
// Create an AWS STS service client object.
export const client = new STSClient({ region: REGION });
```
Assuma um perfil do IAM.  

```
import { AssumeRoleCommand } from "@aws-sdk/client-sts";

import { client } from "../libs/client.js";

export const main = async () => {
  try {
    // Returns a set of temporary security credentials that you can use to
    // access Amazon Web Services resources that you might not normally
    // have access to.
    const command = new AssumeRoleCommand({
      // The Amazon Resource Name (ARN) of the role to assume.
      RoleArn: "ROLE_ARN",
      // An identifier for the assumed role session.
      RoleSessionName: "session1",
      // The duration, in seconds, of the role session. The value specified
      // can range from 900 seconds (15 minutes) up to the maximum session
      // duration set for the role.
      DurationSeconds: 900,
    });
    const response = await client.send(command);
    console.log(response);
  } catch (err) {
    console.error(err);
  }
};
```
+  Consulte detalhes da API em [AssumeRole](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sts/command/AssumeRoleCommand) na *Referência da API AWS SDK para JavaScript*. 

**SDK para JavaScript (v2)**  
 Há mais no GitHub. Encontre o exemplo completo e veja como configurar e executar no [repositório de exemplos de código da AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascript/example_code/sts#code-examples). 

```
// Load the AWS SDK for Node.js
const AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

var roleToAssume = {
  RoleArn: "arn:aws:iam::123456789012:role/RoleName",
  RoleSessionName: "session1",
  DurationSeconds: 900,
};
var roleCreds;

// Create the STS service object
var sts = new AWS.STS({ apiVersion: "2011-06-15" });

//Assume Role
sts.assumeRole(roleToAssume, function (err, data) {
  if (err) console.log(err, err.stack);
  else {
    roleCreds = {
      accessKeyId: data.Credentials.AccessKeyId,
      secretAccessKey: data.Credentials.SecretAccessKey,
      sessionToken: data.Credentials.SessionToken,
    };
    stsGetCallerIdentity(roleCreds);
  }
});

//Get Arn of current identity
function stsGetCallerIdentity(creds) {
  var stsParams = { credentials: creds };
  // Create STS service object
  var sts = new AWS.STS(stsParams);

  sts.getCallerIdentity({}, function (err, data) {
    if (err) {
      console.log(err, err.stack);
    } else {
      console.log(data.Arn);
    }
  });
}
```
+  Consulte detalhes da API em [AssumeRole](https://docs.aws.amazon.com/goto/AWSJavaScriptSDK/sts-2011-06-15/AssumeRole) na *Referência da API AWS SDK para JavaScript*. 

------
#### [ PowerShell ]

**Ferramentas para PowerShell V4**  
**Exemplo 1: retorna um conjunto de credenciais temporárias (chave de acesso, chave secreta e token de sessão) que, durante uma hora, podem ser usadas para acessar recursos da AWS aos quais o usuário solicitante normalmente não teria acesso. As credenciais retornadas têm as permissões permitidas pela política de acesso do perfil assumido e pela política fornecida (não é possível usar a política fornecida para conceder permissões além das definidas pela política de acesso do perfil que está sendo assumido).**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -Policy "...JSON policy..." -DurationInSeconds 3600
```
**Exemplo 2: retorna um conjunto de credenciais temporárias, válidas por uma hora, que têm as mesmas permissões definidas na política de acesso do perfil que está sendo assumido.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600
```
**Exemplo 3: retorna um conjunto de credenciais temporárias que fornecem o número de série e o token gerado de uma MFA associada às credenciais do usuário usadas para executar o cmdlet.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -SerialNumber "GAHT12345678" -TokenCode "123456"
```
**Exemplo 4: retorna um conjunto de credenciais temporárias que assumiram um perfil definido em uma conta de cliente. Para cada perfil que o terceiro possa assumir, a conta do cliente deve criar um perfil usando um identificador a ser transmitido no parâmetro -ExternalId sempre que o perfil for assumido.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -ExternalId "ABC123"
```
+  Consulte detalhes da API em [AssumeRole](https://docs.aws.amazon.com/powershell/v4/reference) na *Referência de cmdlets do Ferramentas da AWS para PowerShell (V4)*. 

**Ferramentas para o PowerShell V5**  
**Exemplo 1: retorna um conjunto de credenciais temporárias (chave de acesso, chave secreta e token de sessão) que, durante uma hora, podem ser usadas para acessar recursos da AWS aos quais o usuário solicitante normalmente não teria acesso. As credenciais retornadas têm as permissões permitidas pela política de acesso do perfil assumido e pela política fornecida (não é possível usar a política fornecida para conceder permissões além das definidas pela política de acesso do perfil que está sendo assumido).**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -Policy "...JSON policy..." -DurationInSeconds 3600
```
**Exemplo 2: retorna um conjunto de credenciais temporárias, válidas por uma hora, que têm as mesmas permissões definidas na política de acesso do perfil que está sendo assumido.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600
```
**Exemplo 3: retorna um conjunto de credenciais temporárias que fornecem o número de série e o token gerado de uma MFA associada às credenciais do usuário usadas para executar o cmdlet.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -SerialNumber "GAHT12345678" -TokenCode "123456"
```
**Exemplo 4: retorna um conjunto de credenciais temporárias que assumiram um perfil definido em uma conta de cliente. Para cada perfil que o terceiro possa assumir, a conta do cliente deve criar um perfil usando um identificador a ser transmitido no parâmetro -ExternalId sempre que o perfil for assumido.**  

```
Use-STSRole -RoleSessionName "Bob" -RoleArn "arn:aws:iam::123456789012:role/demo" -DurationInSeconds 3600 -ExternalId "ABC123"
```
+  Para obter detalhes sobre a API, consulte [AssumeRole](https://docs.aws.amazon.com/powershell/v5/reference) na *Ferramentas da AWS para PowerShell Cmdlet Reference (V5)*. 

------
#### [ Python ]

**SDK para Python (Boto3).**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/sts#code-examples). 
Assuma um perfil do IAM que exija um token de MFA e use credenciais temporárias para listar os buckets do Amazon S3 para a conta.  

```
def list_buckets_from_assumed_role_with_mfa(
    assume_role_arn, session_name, mfa_serial_number, mfa_totp, sts_client
):
    """
    Assumes a role from another account and uses the temporary credentials from
    that role to list the Amazon S3 buckets that are owned by the other account.
    Requires an MFA device serial number and token.

    The assumed role must grant permission to list the buckets in the other account.

    :param assume_role_arn: The Amazon Resource Name (ARN) of the role that
                            grants access to list the other account's buckets.
    :param session_name: The name of the STS session.
    :param mfa_serial_number: The serial number of the MFA device. For a virtual MFA
                              device, this is an ARN.
    :param mfa_totp: A time-based, one-time password issued by the MFA device.
    :param sts_client: A Boto3 STS instance that has permission to assume the role.
    """
    response = sts_client.assume_role(
        RoleArn=assume_role_arn,
        RoleSessionName=session_name,
        SerialNumber=mfa_serial_number,
        TokenCode=mfa_totp,
    )
    temp_credentials = response["Credentials"]
    print(f"Assumed role {assume_role_arn} and got temporary credentials.")

    s3_resource = boto3.resource(
        "s3",
        aws_access_key_id=temp_credentials["AccessKeyId"],
        aws_secret_access_key=temp_credentials["SecretAccessKey"],
        aws_session_token=temp_credentials["SessionToken"],
    )

    print(f"Listing buckets for the assumed role's account:")
    for bucket in s3_resource.buckets.all():
        print(bucket.name)
```
+  Consulte detalhes da API em [AssumeRole](https://docs.aws.amazon.com/goto/boto3/sts-2011-06-15/AssumeRole) na *Referência da API AWS SDK for Python (Boto3)*. 

------
#### [ Ruby ]

**SDK para Ruby**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/ruby/example_code/iam#code-examples). 

```
  # Creates an AWS Security Token Service (AWS STS) client with specified credentials.
  # This is separated into a factory function so that it can be mocked for unit testing.
  #
  # @param key_id [String] The ID of the access key used by the STS client.
  # @param key_secret [String] The secret part of the access key used by the STS client.
  def create_sts_client(key_id, key_secret)
    Aws::STS::Client.new(access_key_id: key_id, secret_access_key: key_secret)
  end

  # Gets temporary credentials that can be used to assume a role.
  #
  # @param role_arn [String] The ARN of the role that is assumed when these credentials
  #                          are used.
  # @param sts_client [AWS::STS::Client] An AWS STS client.
  # @return [Aws::AssumeRoleCredentials] The credentials that can be used to assume the role.
  def assume_role(role_arn, sts_client)
    credentials = Aws::AssumeRoleCredentials.new(
      client: sts_client,
      role_arn: role_arn,
      role_session_name: 'create-use-assume-role-scenario'
    )
    @logger.info("Assumed role '#{role_arn}', got temporary credentials.")
    credentials
  end
```
+  Consulte detalhes da API em [AssumeRole](https://docs.aws.amazon.com/goto/SdkForRubyV3/sts-2011-06-15/AssumeRole) na *Referência da API AWS SDK para Ruby*. 

------
#### [ Rust ]

**SDK para Rust**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1/examples/sts/#code-examples). 

```
async fn assume_role(config: &SdkConfig, role_name: String, session_name: Option<String>) {
    let provider = aws_config::sts::AssumeRoleProvider::builder(role_name)
        .session_name(session_name.unwrap_or("rust_sdk_example_session".into()))
        .configure(config)
        .build()
        .await;

    let local_config = aws_config::from_env()
        .credentials_provider(provider)
        .load()
        .await;
    let client = Client::new(&local_config);
    let req = client.get_caller_identity();
    let resp = req.send().await;
    match resp {
        Ok(e) => {
            println!("UserID :               {}", e.user_id().unwrap_or_default());
            println!("Account:               {}", e.account().unwrap_or_default());
            println!("Arn    :               {}", e.arn().unwrap_or_default());
        }
        Err(e) => println!("{:?}", e),
    }
}
```
+  Consulte detalhes da API em [AssumeRole](https://docs.rs/aws-sdk-sts/latest/aws_sdk_sts/client/struct.Client.html#method.assume_role) na *Referência do AWS SDK para API Rust*. 

------
#### [ Swift ]

**SDK para Swift**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/swift/example_code/iam#code-examples). 

```
import AWSSTS

    public func assumeRole(role: IAMClientTypes.Role, sessionName: String)
        async throws -> STSClientTypes.Credentials
    {
        let input = AssumeRoleInput(
            roleArn: role.arn,
            roleSessionName: sessionName
        )
        do {
            let output = try await stsClient.assumeRole(input: input)

            guard let credentials = output.credentials else {
                throw ServiceHandlerError.authError
            }

            return credentials
        } catch {
            print("Error assuming role: ", dump(error))
            throw error
        }
    }
```
+  Para obter detalhes da API, consulte [AssumeRole](https://sdk.amazonaws.com/swift/api/awssts/latest/documentation/awssts/stsclient/assumerole(input:)) na *Referência do AWS SDK para API Swift*. 

------

# Credenciais específicas do serviço para usuários do IAM
<a name="id_credentials_service-specific-creds"></a>

Credenciais específicas do serviço são mecanismos de autenticação especializados criados para serviços específicos da AWS. Essas credenciais fornecem autenticação simplificada em comparação com as credenciais padrão da AWS e são ajustadas aos requisitos de autenticação de serviços individuais da AWS. Diferentemente das chaves de acesso, que podem ser usadas em vários serviços da AWS, as credenciais específicas do serviço destinam-se a ser usadas apenas com o serviço para o qual foram criadas. Essa abordagem direcionada aumenta a segurança por limitar o escopo das credenciais.

As credenciais específicas do serviço geralmente consistem em um par de nome de usuário e senha ou em chaves de API especializadas que são formatadas de acordo com os requisitos do serviço específico. Quando você cria credenciais específicas do serviço, elas estão ativas por padrão e podem ser usadas imediatamente. Você pode ter, no máximo, dois conjuntos de credenciais específicas do serviço para cada serviço compatível por usuário do IAM. Esse limite permite que você mantenha um conjunto ativo enquanto troca para um novo conjunto quando necessário. Atualmente, a AWS é compatível com credenciais específicas dos seguintes serviços:

## Quando usar credenciais específicas do serviço
<a name="id_credentials_service-specific-creds-usecase"></a>

As credenciais específicas do serviço são destinadas à compatibilidade com bibliotecas, SDKs, ferramentas ou aplicações de terceiros que não são compatíveis nativamente com credenciais da AWS, AWS SDKs ou APIs da AWS. Esses casos de uso incluem migrar para a AWS serviços existentes em infraestrutura auto-hospedada ou serviços hospedados por outros provedores.

Ao começar do zero, e sempre que possível, recomendamos usar credenciais da AWS temporárias, como as fornecidas por um perfil do IAM, para se autenticar em um serviço da AWS usando um AWS SDK ou uma biblioteca que ofereça suporte a credenciais temporárias da AWS.

## Troca de credenciais específicas do serviço
<a name="id_credentials_service-specific-creds-rotation"></a>

Como uma prática recomendada de segurança, troque as credenciais específicas do serviço regularmente. Para trocar as credenciais sem prejudicar as aplicações:

1. Crie um segundo conjunto de credenciais específicas do serviço para o mesmo serviço e usuário do IAM

1. Atualize todas a aplicações para que usem as novas credenciais e verifique se elas funcionam bem

1. Altere o status das credenciais originais para "Inativas"

1. Verifique se todas as aplicações continuam a funcionar adequadamente

1. Exclua as credenciais específicas do serviço inativas quando tiver certeza de que não são mais necessárias

## Monitorar credenciais específicas do serviço
<a name="id_credentials_service-specific-creds-monitoring"></a>

Você pode usar o AWS CloudTrail para monitorar o uso de credenciais específicas do serviço em sua conta da AWS. Para visualizar os eventos do CloudTrail relacionados ao uso das credenciais específicas do serviço, revise os logs do CloudTrail para verificar os eventos do serviço nos quais as credenciais são usadas. Para obter mais informações, consulte [Registro em log de chamadas de API do IAM e do AWS STS com o AWS CloudTrail](cloudtrail-integration.md).

Para ter mais segurança, pense em configurar alarmes do CloudWatch que notifiquem sobre padrões específicos de uso das credenciais que possam indicar acesso não autorizado ou outras preocupações de segurança. Para obter mais informações, consulte [Monitoring CloudTrail Log Files with Amazon CloudWatch Logs](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/monitor-cloudtrail-log-files-with-cloudwatch-logs.html) no *AWS CloudTrail User Guide*.

Os tópicos a seguir fornecem informações sobre credenciais específicas do serviço.

**Topics**
+ [

## Quando usar credenciais específicas do serviço
](#id_credentials_service-specific-creds-usecase)
+ [

## Troca de credenciais específicas do serviço
](#id_credentials_service-specific-creds-rotation)
+ [

## Monitorar credenciais específicas do serviço
](#id_credentials_service-specific-creds-monitoring)
+ [

# Chaves de API do Amazon Bedrock e o Amazon CloudWatch Logs
](id_credentials_bedrock_cloudwatchlogs.md)
+ [

# Usar o IAM com o Amazon Keyspaces (para Apache Cassandra)
](id_credentials_keyspaces.md)

# Chaves de API do Amazon Bedrock e o Amazon CloudWatch Logs
<a name="id_credentials_bedrock_cloudwatchlogs"></a>

**nota**  
As chaves de API do Amazon CloudWatch Logs estão disponíveis atualmente em versão prévia e estarão disponíveis para o público em geral nas próximas semanas. As chaves de API do Amazon CloudWatch Logs se assemelham muito às chaves de API de longo prazo do Amazon Bedrock, descritas nesta página. Para saber mais sobre as chaves de API de longo prazo do Amazon CloudWatch Logs, consulte [Enviar logs para o Amazon CloudWatch Logs usando o endpoint de HLC](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_HLC_Endpoint.html).

O Amazon Bedrock é um serviço totalmente gerenciado que oferece os modelos básicos de grandes empresas de IA e da Amazon. Você pode acessar o Amazon Bedrock usando o Console de gerenciamento da AWS e programaticamente usando a AWS CLI ou a API da AWS. Ao fazer solicitações programáticas ao Amazon Bedrock, você pode fazer a autenticação usando [credenciais de segurança temporárias](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) ou as chaves de API do Amazon Bedrock. O Amazon Bedrock é compatível com dois tipos de chaves de API:
+ **Chaves de API de curto prazo**: uma chave de API de curto prazo é uma URL pré-assinada que usa o AWS Signature versão 4. As chaves de API de curto prazo têm as mesmas permissões e validade que as credenciais da identidade que gera a chave de API e são válidas por até 12 horas ou pelo tempo restante da sua sessão do console, o que for menor. Você pode usar o console do Amazon Bedrock, o pacote do Python `aws-bedrock-token-generator` e pacotes de outras linguagens de programação para gerar chaves de API de curto prazo. Para obter mais informações, consulte [Generate Amazon Bedrock API keys for easy access to the Amazon Bedrock API](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys.html) no *Amazon Bedrock User Guide*.
+ **Chaves de API de longo prazo**: as chaves de API de longo prazo são associadas a um usuário do IAM e são geradas usando as [credenciais específicas do serviço](id_credentials_service-specific-creds.md) do IAM. Essas credenciais se destinam a ser usadas apenas com o Amazon Bedrock, aumentando a segurança por limitar o escopo das credenciais. Você pode definir um prazo de validade para a API de longo prazo. Você pode usar o console do IAM ou do Amazon Bedrock, a CLI da AWS ou a API da AWS para gerar chaves de API de longo prazo.

Um usuário do IAM pode ter até duas chaves de API de longo prazo para o Amazon Bedrock, o que ajuda você a implementar práticas seguras de troca das chaves. 

Quando você gera uma chave de API de longo prazo, a política gerenciada pela AWS [AmazonBedrockLimitedAccess](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonBedrockLimitedAccess) é automaticamente anexada ao usuário do IAM. Esta política concede acesso às principais operações de API do Amazon Bedrock. Se você precisar de acesso adicional ao Amazon Bedrock, poderá modificar as permissões do usuário do IAM. Para obter mais informações sobre modificação de permissões, consulte [Adicionar e remover permissões de identidade do IAM](access_policies_manage-attach-detach.md). Para obter mais informações sobre como usar uma chave do Amazon Bedrock, consulte [Use an Amazon Bedrock API key](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys-use.html) no *Amazon Bedrock User Guide*.

**nota**  
As chaves de API de longo prazo têm um risco de segurança maior em comparação com as chaves de API de curto prazo. Recomendamos o uso de chaves de API de curto prazo ou de credenciais de segurança temporárias quando possível. Se você usar chaves de API de longo prazo, recomendamos que implemente práticas regulares de troca das chaves.

## Pré-requisitos
<a name="id_credentials_bedrock_prerequisites"></a>

Antes de gerar uma chave de API de longo prazo do Amazon Bedrock usando o console do IAM, você deve atender aos seguintes pré-requisitos:
+ Um usuário do IAM a ser associado à chave de API de longo prazo. Para obter instruções para criar um usuário do IAM, consulte [Criar um usuário do IAM na Conta da AWS](id_users_create.md).
+ Certifique-se de ter as seguintes permissões da política do IAM para gerenciar as credenciais específicas do serviço de um usuário do IAM. O exemplo de política concede permissão para criar, listar, atualizar, excluir e redefinir credenciais específicas do serviço. Substitua o valor `username` no elemento Recurso pelo nome do usuário do IAM para o qual você vai gerar as chaves de API do Amazon Bedrock:

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "ManageBedrockServiceSpecificCredentials",
              "Effect": "Allow",
              "Action": [
                  "iam:CreateServiceSpecificCredential",
                  "iam:ListServiceSpecificCredentials",
                  "iam:UpdateServiceSpecificCredential",
                  "iam:DeleteServiceSpecificCredential",
                  "iam:ResetServiceSpecificCredential"
              ],
              "Resource": "arn:aws:iam::*:user/username"
          }
      ]
  }
  ```

------

## Gerar uma chave de API de longo prazo para o Amazon Bedrock (console)
<a name="id_credentials_bedrock_console_create"></a>

**Gerar uma chave de API de longo prazo para o Amazon Bedrock (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console do IAM, escolha **Usuários**.

1. Selecione o usuário do IAM para o qual você deseja gerar as chaves de API de longo prazo do Amazon Bedrock.

1. Escolha a guia **Credenciais de segurança**.

1. Na seção **Chaves de API para o Amazon Bedrock**, escolha **Gerar chave de API**.

1. Em **Validade da chave de API**, faça uma das seguintes opções:
   + Selecione a duração da validade da chave de API de **1**, **5**, **30**, **90** ou **365** dias.
   + Escolha **Duração personalizada** para especificar uma data de validade personalizada para a chave de API.
   + Selecione **Nunca expira** (não recomendado)

1. Escolha **Gerar chave de API**.

1. Copie ou baixe a chave de API. Esta é a única vez que você pode visualizar o valor da chave de API.
**Importante**  
Armazene a chave de API em segurança. Após fechar a caixa de diálogo, não será mais possível recuperar a chave de API. Se você perder ou esquecer sua chave de acesso secreta, não poderá recuperá-la. Em vez disso, crie uma nova chave de acesso e desative a chave antiga.

## Gerar uma chave de API de longo prazo para o Amazon Bedrock (AWS CLI)
<a name="id_credentials_bedrock_cli_create"></a>

Para gerar uma chave de API de longo prazo do Amazon Bedrock usando a AWS CLI, siga as seguintes etapas:

1. Crie um usuário do IAM que será usado com o Amazon Bedrock usando o comando [create-user](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-user.html):

   ```
   aws iam create-user \
       --user-name BedrockAPIKey_1
   ```

1. Anexe a política gerenciada pela AWS `AmazonBedrockLimitedAccess` ao usuário do IAM do Amazon Bedrock usando o comando [attach-user-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-user-policy.html):

   ```
   aws iam attach-user-policy --user-name BedrockAPIKey_1 \
       --policy-arn arn:aws:iam::aws:policy/AmazonBedrockLimitedAccess
   ```

1. Gere a chave de API de longo prazo do Amazon Bedrock usando o comando [create-service-specific-credential](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-service-specific-credential.html). Para o prazo de validade da credencial, você pode especificar um valor entre 1 e 36.600 dias. Se você não especificar o prazo de validade de uma credencial, a chave da API não expirará.

   Para gerar uma chave de API de longo prazo com validade em 30 dias:

   ```
   aws iam create-service-specific-credential \
       --user-name BedrockAPIKey_1 \
       --service-name bedrock.amazonaws.com \
       --credential-age-days 30
   ```

O `ServiceApiKeyValue` retornado na resposta é sua chave de API de longo prazo do Amazon Bedrock. Armazene o valor `ServiceApiKeyValue` em segurança, pois não será possível recuperá-lo mais tarde.

### Listar chaves de API de longo prazo (AWS CLI)
<a name="id_credentials_bedrock_cli_list"></a>

Para listar os metadados das chaves de API de longo prazo do Amazon Bedrock para um usuário específico, use o comando [list-service-specific-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html) com o parâmetro `--user-name`:

```
aws iam list-service-specific-credentials \
    --service-name bedrock.amazonaws.com \
    --user-name BedrockAPIKey_1
```

Para listar todos os metadados das chaves de API de longo prazo do Amazon Bedrock da conta, use o comando [list-service-specific-credentials](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/list-service-specific-credentials.html) com o parâmetro `--all-users`:

```
aws iam list-service-specific-credentials \
    --service-name bedrock.amazonaws.com \
    --all-users
```

### Atualizar o status de uma chave de API de longo prazo (AWS CLI)
<a name="id_credentials_bedrock_cli_update"></a>

Para atualizar o status de uma chave de API de longo prazo do Amazon Bedrock, use o comando [update-service-specific-credential](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/update-service-specific-credential.html):

```
aws iam update-service-specific-credential \
    --user-name "BedrockAPIKey_1" \
    --service-specific-credential-id "ACCA1234EXAMPLE1234" \
    --status Inactive|Active
```

## Gerar uma chave de API de longo prazo para o Amazon Bedrock (API da AWS)
<a name="id_credentials_bedrock_api"></a>

Você pode usar as seguintes operações de API para gerar e gerenciar as chaves de API de longo prazo do Amazon Bedrock:
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServiceSpecificCredential.html) 
+  [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ResetServiceSpecificCredential.html) 

# Usar o IAM com o Amazon Keyspaces (para Apache Cassandra)
<a name="id_credentials_keyspaces"></a>

O Amazon Keyspaces (para Apache Cassandra) é um serviço de banco de dados compatível com Apache Cassandra, escalável, de alta disponibilidade e gerenciado. Você pode acessar o Amazon Keyspaces por meio do Console de gerenciamento da AWS ou de maneira programática. Para acessar o Amazon Keyspaces de maneira programática com credenciais específicas do serviço, você pode usar `cqlsh` ou drivers de código aberto do Cassandra. *Credenciais específicas do serviço* incluem um nome de usuário e senha como os que o Cassandra usa para autenticação e gerenciamento de acesso. Você pode ter no máximo dois conjuntos de credenciais específicas do serviço para cada serviço suportado por usuário.

Para acessar o Amazon Keyspaces de maneira programática com chaves de acesso da AWS, você pode usar o AWS SDK, a AWS Command Line Interface (AWS CLI) ou drivers do Cassandra de código aberto com o plug-in SigV4. Para saber mais, consulte [Create and configure AWS credentials for Amazon Keyspaces](https://docs.aws.amazon.com//keyspaces/latest/devguide/access.credentials.html) no *Amazon Keyspaces (for Apache Cassandra) Developer Guide*.

**nota**  
Se você planeja interagir com o Amazon Keyspaces apenas por meio do console, não precisa gerar credenciais específicas do serviço. Para obter mais informações, consulte [Accessing Amazon Keyspaces using the console](https://docs.aws.amazon.com/keyspaces/latest/devguide/console_keyspaces.html) (Acessar o Amazon Keyspaces usando o console) no *Amazon Keyspaces (para Apache Cassandra) Developer Guide* (Guia do desenvolvedor do Amazon Keyspaces [for Apache Cassandra]).

Para obter mais informações sobre as permissões necessárias para acessar o Amazon Keyspaces, consulte [Exemplos de políticas baseadas em identidade do Amazon Keyspaces (para Apache Cassandra)](https://docs.aws.amazon.com/keyspaces/latest/devguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-console) no *Guia do desenvolvedor do Amazon Keyspaces (para Apache Cassandra)*.

## Gerar credenciais do Amazon Keyspaces (console)
<a name="keyspaces_credentials_console"></a>

É possível usar o Console de gerenciamento da AWS para gerar credenciais do Amazon Keyspaces (para Apache Cassandra) para os usuários do IAM.

**Como gerar credenciais específicas do serviço Amazon Keyspaces (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **Users (Usuários)** e escolha o nome do usuário que requer as credenciais.

1. Na guia **Security Credentials** (Credenciais de segurança), abaixo de **Credentials for Amazon Keyspaces (for Apache Cassandra)** (Credenciais do Amazon Keyspaces [for Apache Cassandra]), selecione **Generate credentials** (Gerar credenciais).

1. As credenciais específicas do seu serviço agora estão disponíveis. Esta é a única vez que a senha pode ser visualizada ou baixada. Não será possível recuperá-la posteriormente. No entanto, é possível redefinir a senha a qualquer momento. Salve o usuário e a senha em um local seguro, pois você precisará deles mais tarde.

## Gerar credenciais do Amazon Keyspaces (AWS CLI)
<a name="keyspaces_credentials_cli"></a>

É possível usar o AWS CLI para gerar credenciais do Amazon Keyspaces (para Apache Cassandra) para os usuários do IAM.

**Para gerar credenciais específicas do serviço Amazon Keyspaces (AWS CLI)**
+ Use o seguinte comando:
  + [aws iam create-service-specific-credential](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-specific-credential.html)

## Gerar credenciais do Amazon Keyspaces (API da AWS)
<a name="keyspaces_credentials_api"></a>

Você pode usar a API da AWS para gerar credenciais do Amazon Keyspaces (para Apache Cassandra) para seus usuários do IAM.

**Para gerar credenciais específicas do serviço Amazon Keyspaces (API da AWS)**
+ Conclua a seguinte operação:
  + [CreateServiceSpecificCredential](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceSpecificCredential.html) 

# Encontrar credenciais da AWS não utilizadas
<a name="id_credentials_finding-unused"></a>

Para aumentar a segurança da sua Conta da AWS remova as credenciais de usuários do IAM (ou seja, senhas e chaves de acesso) que não são necessárias. Por exemplo, quando os usuários deixam sua organização ou não precisam mais de acesso à AWS, localize as credenciais que eles estavam utilizando e certifique-se de que elas não estejam mais operando. O ideal é que você exclua as credenciais se não forem mais necessárias. Você pode sempre recriá-las em posteriormente, se necessário. No mínimo, você deve alterar a senha ou desativar as chaves de acesso para que os usuários antigos não possam mais ter acesso.

Naturalmente, a definição de *não usada* pode variar e geralmente significa uma credencial que não foi usada durante determinado período.

## Encontrar senhas não utilizadas
<a name="finding-unused-passwords"></a>

Você pode usar o Console de gerenciamento da AWS para visualizar informações de uso de senha para seus usuários. Se você tiver um grande número de usuários, você pode usar o console para fazer download de um relatório de credenciais com informações sobre quando cada usuário usou sua senha do console pela última vez. Você também pode acessar as informações da AWS CLI ou da API do IAM.

**Para encontrar as senhas não utilizadas (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Usuários**.

1. Se necessário, adicione a coluna **Último login no console** na tabela dos usuários:

   1. Acima da tabela, no canto direito, selecione o ícone de configurações (![\[Settings icon\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/console-settings-icon.console.png)).

   1. Em **Selecionar colunas visíveis**, selecione **Último login do console**.

   1. Escolha **Confirmar** para retornar à lista de usuários.

1. A coluna **Console last sign-in (Último login no console)** exibe o número de dias desde que o usuário efetuou login na AWS pelo console pela última vez. Você pode usar essas informações para localizar os usuários com senhas que não fizeram login há mais tempo do que o período especificado. A coluna exibe **Nunca** para usuários com senhas que nunca efetuaram login. **Nenhuma** indica usuários sem senhas. Senhas que não tenham sido usadas recentemente podem ser bons candidatos para remoção.
**Importante**  
Devido a um problema de serviço, os dados usados mais recentemente da senha não incluem o uso de senha entre 3 de maio de 2018 22:50 PDT e 23 de maio de 2018 14:08 PDT. Isso afeta as datas de [último login](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_finding-unused.html) mostradas no console do IAM e as datas de última senha usadas no [relatório de credencial do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/SupportedTypes.xmlid_credentials_getting-report.html) e retornadas pela [operação da API GetUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html). Se os usuários fizerem login durante a hora afetada, a data usada pela última vez na senha retornada será a data em que o usuário fez login pela última vez antes de 3 de maio de 2018. Para usuários que fizeram login depois de 23 de maio de 2018 14:08 PDT, a data usada mais recentemente para a senha retornada será precisa.  
Se você usar as informações usadas mais recentemente para a senha para identificar credenciais não utilizadas para exclusão, como excluir usuários que não fizeram login na AWS nos últimos 90 dias, será recomendável ajustar a janela de avaliação para incluir datas após 23 de maio de 2018. Como alternativa, se os usuários usarem chaves de acesso para acessar a AWS de maneira programática, você poderá consultar as informações usadas mais recentemente da chave de acesso, pois elas são precisas para todas as datas. 

**Para encontrar senhas não utilizadas ao fazer download do relatório de credenciais (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **Relatório de credenciais**.

1. Selecione **Fazer download do relatório** para fazer download de um arquivo de valores separados por vírgula (CSV) chamado `status_reports_<date>T<time>.csv`. A quinta coluna é a coluna `password_last_used` com as datas ou uma das seguintes opções:
   + **N/A** (N/D): os usuários que não têm qualquer senha atribuída.
   + **no\$1information**: os usuários que não usaram suas senhas desde que o IAM começou a rastrear o tempo de duração das senhas em 20 de outubro de 2014.

**Para encontrar senhas não usadas (AWS CLI)**  
Execute o seguinte comando para encontrar senhas não usadas:
+ `[aws iam list-users](https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html)` retorna uma lista de usuários, cada um com um valor `PasswordLastUsed`. Se o valor estiver ausente, o usuário não tem senha ou a senha não foi usada desde que o IAM começou a rastrear o tempo de duração das senhas em 20 de outubro de 2014.

**Para encontrar senhas não usadas (API da AWS)**  
Chame a seguinte operação para encontrar senhas não usadas:
+  ` [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)` retorna uma coleção de usuários, cada um com um valor `<PasswordLastUsed>`. Se o valor estiver ausente, o usuário não tem senha ou a senha não foi usada desde que o IAM começou a rastrear o tempo de duração das senhas em 20 de outubro de 2014.

Para obter informações sobre os comandos para fazer download do relatório de credenciais, consulte [Obter relatórios de credenciais (AWS CLI)](id_credentials_getting-report.md#getting-credential-reports-cliapi).

## Encontrar chaves de acesso não utilizadas
<a name="finding-unused-access-keys"></a>

Você pode usar o Console de gerenciamento da AWS para visualizar informações de uso de chaves de acesso para seus usuários. Se você tiver um grande número de usuários, você pode usar o console para fazer download de um relatório de credenciais para descobrir quando cada usuário usou sua chave de acesso pela última vez. Você também pode acessar as informações da AWS CLI ou da API do IAM.

**Para localizar chaves de acesso não utilizadas (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Usuários**.

1. Se necessário, adicione a coluna **Chave de acesso usada pela última vez** na tabela dos usuários:

   1. Acima da tabela, no canto direito, selecione o ícone de configurações (![\[Settings icon\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/console-settings-icon.console.png)).

   1. Em **Selecionar colunas visíveis**, selecione **Última chave de acesso utilizada**.

   1. Escolha **Confirmar** para retornar à lista de usuários.

1. A coluna **Chave de acesso usada pela última vez** exibe o número de dias desde que o usuário acessou a AWS de forma programática pela última vez. Você pode usar essas informações para localizar os usuários com chaves de acesso que não tenham sido usadas há mais tempo do que o período especificado. A coluna exibe **–** para usuários sem chaves de acesso. Chaves de acesso que não tenham sido usadas recentemente podem ser bons candidatos para remoção.

**Para encontrar chaves de acesso não utilizadas ao fazer download do relatório de credenciais (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **Relatório de credenciais**.

1. Selecione **Fazer download do relatório** para fazer download de um arquivo de valores separados por vírgula (CSV) chamado `status_reports_<date>T<time>.csv`. As colunas 11 a 13 contêm a última data usada, a região e informações de serviço para a chave de acesso 1. As colunas 16 a 18 contêm as mesmas informações para chave de acesso 2. O valor será **N/A** (N/D) se o usuário não tiver uma chave de acesso ou se o usuário não tiver usado a chave de acesso desde que o IAM começou a rastrear o tempo de duração das chaves de acesso em 22 de abril de 2015.

**Para localizar chaves de acesso não utilizadas (AWS CLI)**  
Execute os seguintes comandos para encontrar chaves de acesso não utilizadas:
+ `[aws iam list-access-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)` retorna informações sobre as chaves de acesso para um usuário, incluindo o `AccessKeyID`.
+ `[aws iam get-access-key-last-used](https://docs.aws.amazon.com/cli/latest/reference/iam/get-access-key-last-used.html)` exige um ID de chave de acesso e retorna a saída que inclui a `LastUsedDate`, `Region` na qual a chave de acesso foi usada pela última vez e o `ServiceName` do último serviço solicitado. Se `LastUsedDate` estiver ausente, significa que a chave de acesso não foi usada desde que o IAM começou a rastrear o tempo de duração das chaves de acesso em 22 de abril de 2015.

**Para localizar chaves de acesso não utilizadas (API da AWS)**  
Chame as seguintes operações para encontrar chaves de acesso não utilizadas:
+ `[ListAccessKeys](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html)` retorna uma lista de valores `AccessKeyID` para chaves de acesso associadas ao usuário especificado. 
+ `[GetAccessKeyLastUsed](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html)` exige um ID de chave de acesso e retorna um conjunto de valores. Os valores incluem a `LastUsedDate`, a `Region` em que a chave de acesso foi usada pela última vez e o `ServiceName` do último serviço solicitado. Se o valor estiver ausente, significa que o usuário não possui uma chave de acesso ou a chave de acesso não é usada desde que o IAM começou a rastrear o tempo de duração das chaves de acesso em 22 de abril de 2015.

Para obter informações sobre os comandos para fazer download do relatório de credenciais, consulte [Obter relatórios de credenciais (AWS CLI)](id_credentials_getting-report.md#getting-credential-reports-cliapi).

# Gerar relatórios de credenciais para sua Conta da AWS
<a name="id_credentials_getting-report"></a>

Você pode gerar e fazer o download de um *relatório de credenciais* que lista todos os usuários em sua conta e o status de diversas credenciais deles, incluindo senhas, chaves de acesso e dispositivos MFA. Você pode obter um relatório de credenciais do Console de gerenciamento da AWS, dos [SDKs da AWS](https://aws.amazon.com/tools) e das [Ferramentas da linha de comando](https://aws.amazon.com/tools/#Command_Line_Tools) ou da API do IAM. 

**nota**  
O relatório de credenciais do IAM inclui apenas as seguintes credenciais gerenciadas pelo IAM: senhas, as duas primeiras chaves de acesso por usuário, dispositivos de MFA e certificados de assinatura X.509. O relatório não inclui as credenciais específicas do serviço (como senhas do CodeCommit, chaves de API do Amazon Bedrock ou chaves de API de longo prazo do Amazon CloudWatch Logs) ou qualquer outra chave de acesso de usuário além das duas primeiras. Para obter visibilidade completa das credenciais, use as APIs [ListServiceSpecificCredentials](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServiceSpecificCredentials.html) e [ListAccessKeys](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html).

Você pode usar os relatórios de credenciais para auxiliar em seus esforços de auditoria e compatibilidade. É possível usar o relatório para auditar os efeitos dos requisitos de ciclo de vida da credencial, como a atualização da chave de acesso e da senha. Você pode fornecer o relatório a um auditor externo ou conceder permissões a um auditor para que ele possa fazer download do relatório diretamente.

Você pode gerar um relatório de credenciais a cada quatro horas. Quando você solicita um relatório, o IAM primeiro verifica se um relatório da Conta da AWS foi gerado nas últimas quatro horas. Se esse for o caso, o relatório mais recente será baixado. Se o relatório mais recente da conta tiver mais de quatro horas ou se não houver relatórios anteriores para a conta, o IAM gerará e baixará um novo relatório. 

**Topics**
+ [

## Permissões obrigatórias
](#id_credentials_required_permissions)
+ [

## Noções básicas sobre o formato do relatório
](#id_credentials_understanding_the_report_format)
+ [

## Obter relatórios de credenciais (console)
](#getting-credential-reports-console)
+ [

## Obter relatórios de credenciais (AWS CLI)
](#getting-credential-reports-cliapi)
+ [

## Obter relatórios de credenciais (API da AWS)
](#getting-credential-reports-api)

## Permissões obrigatórias
<a name="id_credentials_required_permissions"></a>

As seguintes permissões são necessárias para criar e fazer download de relatórios:
+ Para criar um relatório de credenciais: `iam:GenerateCredentialReport` 
+ Para fazer download do relatório: `iam:GetCredentialReport`

## Noções básicas sobre o formato do relatório
<a name="id_credentials_understanding_the_report_format"></a>

Os relatórios de credenciais são formatados como arquivos de valores separados por vírgulas (CSV). Você pode abrir arquivos CSV com software de planilha comum para realizar a análise, ou pode criar um aplicativo que consuma os arquivos CSV de forma programática e realize análises personalizadas. 

O arquivo CSV contém as seguintes colunas:

**usuário**  
O nome amigável do usuário. 

**arn**  
O nome de recurso da Amazon (ARN) do usuário. (Para obter mais informações sobre ARNs, consulte ) [ARNs do IAM](reference_identifiers.md#identifiers-arns). 

**user\$1creation\$1time**  
A data e a hora em que o usuário foi criado, no [formato de data/hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).

**password\$1enabled**  
Quando o usuário tem uma senha, esse valor será `TRUE`. Caso contrário, o valor será `FALSE`. Esse valor é `FALSE` para novas contas de membros criadas como parte da organização, pois elas não têm, por padrão, credenciais de usuário-raiz.

**password\$1last\$1used**  
A data e a hora em que a senha do usuário ou do Usuário raiz da conta da AWS foi usada pela última vez para fazer login em um site da AWS, no [formato de data/hora ISO 8601](http://www.iso.org/iso/iso8601). Os sites da AWS que registram a hora do último login de um usuário são o Console de gerenciamento da AWS, os fóruns de discussão da AWS e o AWS Marketplace. Quando uma senha é usada mais de uma vez em um intervalo de 5 minutos, apenas o primeiro uso é gravado nesse campo.   
+ O valor nesse campo é `no_information` nos seguintes casos:
  + A senha do usuário nunca foi usada.
  + Não há dados de login associados à senha, como quando a senha do usuário não tiver sido usada depois que o IAM começou a rastrear essas informações em 20 de outubro de 2014.
+ O valor nesse campo será `N/A` (não aplicável) quando o usuário não tiver uma senha.

**Importante**  
Devido a um problema de serviço, os dados usados mais recentemente da senha não incluem o uso de senha entre 3 de maio de 2018 22:50 PDT e 23 de maio de 2018 14:08 PDT. Isso afeta as datas de [último login](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_finding-unused.html) mostradas no console do IAM e as datas de última senha usadas no [relatório de credencial do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/SupportedTypes.xmlid_credentials_getting-report.html) e retornadas pela [operação da API GetUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html). Se os usuários fizerem login durante a hora afetada, a data usada pela última vez na senha retornada será a data em que o usuário fez login pela última vez antes de 3 de maio de 2018. Para usuários que fizeram login depois de 23 de maio de 2018 14:08 PDT, a data usada mais recentemente para a senha retornada será precisa.  
Se você usar as informações usadas mais recentemente para a senha para identificar credenciais não utilizadas para exclusão, como excluir usuários que não fizeram login na AWS nos últimos 90 dias, será recomendável ajustar a janela de avaliação para incluir datas após 23 de maio de 2018. Como alternativa, se os usuários usarem chaves de acesso para acessar a AWS de maneira programática, você poderá consultar as informações usadas mais recentemente da chave de acesso, pois elas são precisas para todas as datas. 

**password\$1last\$1changed**  
A data e a hora em que a senha do usuário foi definida pela última vez no [formato de data/hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). Se o usuário não tiver uma senha, o valor nesse campo será `N/A` (não aplicável).

**password\$1next\$1rotation**  
Quando a conta tem uma [política de senha](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_ManagingPasswordPolicies.html) que requer a mudança de senha, esse campo contém a data e a hora em [formato de data/hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), quando o usuário precisa definir uma nova senha. O valor para a Conta da AWS (raiz) é sempre `not_supported`.

**mfa\$1active**  
Quando um dispositivo de [autenticação multifator](id_credentials_mfa.md) (MFA) for ativado para o usuário, esse valor será `TRUE`. Caso contrário, o valor será `FALSE`.

**access\$1key\$11\$1active**  
Quando o usuário tem uma chave de acesso e o status da chave de acesso é `Active`, esse valor será `TRUE`. Caso contrário, o valor será `FALSE`. Aplica-se tanto a usuários do IAM como usuários-raiz da conta.

**access\$1key\$11\$1last\$1rotated**  
A data e a hora, em [formato de data/hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), quando a chave de acesso do usuário foi criada ou alterada pela última vez. Se o usuário não tiver uma chave de acesso ativa, o valor nesse campo será `N/A` (não aplicável). Aplica-se tanto a usuários do IAM como usuários-raiz da conta.

**access\$1key\$11\$1last\$1used\$1date**  
A data e a hora, em [formato de data/hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), quando a chave de acesso do usuário tiver sido usada recentemente para assinar uma solicitação da API da AWS. Quando uma chave de acesso tiver sido usada mais de uma vez em um intervalo de 15 minutos, apenas o primeiro uso será gravado nesse campo. Aplica-se tanto a usuários do IAM como usuários-raiz da conta.  
O valor nesse campo será `N/A` (não aplicável) nos seguintes casos:  
+ O usuário não tiver uma chave de acesso.
+ A chave de acesso nunca tiver sido usada.
+ A chave de acesso não tiver sido usada depois que o IAM começou a rastrear essas informações em 22 de abril de 2015.

**access\$1key\$11\$1last\$1used\$1region**  
A [região da AWS](https://docs.aws.amazon.com/general/latest/gr/rande.html) em que a chave de acesso foi usada mais recentemente. Quando uma chave de acesso tiver sido usada mais de uma vez em um intervalo de 15 minutos, apenas o primeiro uso será gravado nesse campo. Aplica-se tanto a usuários do IAM como usuários-raiz da conta.  
O valor nesse campo será `N/A` (não aplicável) nos seguintes casos:  
+ O usuário não tiver uma chave de acesso.
+ A chave de acesso nunca tiver sido usada.
+ A chave de acesso tiver sido usada pela última vez antes do IAM começar a rastrear essas informações em 22 de abril de 2015.
+ O último serviço usado não for específico da região, como o Amazon S3.

**access\$1key\$11\$1last\$1used\$1service**  
O serviço da AWS que foi acessado recentemente com a chave de acesso. O valor nesse campo usa o namespace do serviço, por exemplo, `s3` para o Amazon S3 e `ec2` para o Amazon EC2. Quando uma chave de acesso tiver sido usada mais de uma vez em um intervalo de 15 minutos, apenas o primeiro uso será gravado nesse campo. Aplica-se tanto a usuários do IAM como usuários-raiz da conta.  
O valor nesse campo será `N/A` (não aplicável) nos seguintes casos:  
+ O usuário não tiver uma chave de acesso.
+ A chave de acesso nunca tiver sido usada.
+ A chave de acesso tiver sido usada pela última vez antes do IAM começar a rastrear essas informações em 22 de abril de 2015.

**access\$1key\$12\$1active**  
Quando o usuário tem uma segunda chave de acesso e o status da segunda chave de acesso é `Active`, esse valor será `TRUE`. Caso contrário, o valor será `FALSE`. Aplica-se tanto a usuários do IAM como usuários-raiz da conta.  
Os usuários podem ter até duas chaves de acesso para facilitar a rotação atualizando a chave primeiro e depois excluindo a chave anterior. Para obter mais informações sobre a atualização de chaves de acesso, consulte [Atualizar chaves de acesso](id-credentials-access-keys-update.md).

**access\$1key\$12\$1last\$1rotated**  
A data e a hora, no [formato de data/hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), quando a segunda chave de acesso do usuário tiver sido criada ou alterada mais recentemente. Se o usuário não tiver uma segunda chave de acesso ativa, o valor nesse campo será `N/A` (não aplicável). Aplica-se tanto a usuários do IAM como usuários-raiz da conta.

**access\$1key\$12\$1last\$1used\$1date**  
A data e a hora, em [formato de data/hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), quando a segunda chave de acesso do usuário tiver sido usada recentemente para assinar uma solicitação da API da AWS. Quando uma chave de acesso tiver sido usada mais de uma vez em um intervalo de 15 minutos, apenas o primeiro uso será gravado nesse campo. Aplica-se tanto a usuários do IAM como usuários-raiz da conta.  
O valor nesse campo será `N/A` (não aplicável) nos seguintes casos:  
+ O usuário não tiver uma segunda chave de acesso.
+ A segunda chave de acesso do usuário nunca tiver sido usada.
+ A segunda chave de acesso do usuário tiver sido usada pela última vez antes de o IAM começar a rastrear essas informações em 22 de abril de 2015.

**access\$1key\$12\$1last\$1used\$1region**  
A [ região da AWS](https://docs.aws.amazon.com/general/latest/gr/rande.html) em que a segunda chave de acesso do usuário foi usada mais recentemente. Quando uma chave de acesso tiver sido usada mais de uma vez em um intervalo de 15 minutos, apenas o primeiro uso será gravado nesse campo. Aplica-se tanto a usuários do IAM como usuários-raiz da conta. O valor nesse campo será `N/A` (não aplicável) nos seguintes casos:  
+ O usuário não tiver uma segunda chave de acesso.
+ A segunda chave de acesso do usuário nunca tiver sido usada.
+ A segunda chave de acesso do usuário tiver sido usada pela última vez antes de o IAM começar a rastrear essas informações em 22 de abril de 2015.
+ O último serviço usado não for específico da região, como o Amazon S3.

**access\$1key\$12\$1last\$1used\$1service**  
O serviço da AWS que foi acessado recentemente com a segunda chave de acesso do usuário. O valor nesse campo usa o namespace do serviço, por exemplo, `s3` para o Amazon S3 e `ec2` para o Amazon EC2. Quando uma chave de acesso tiver sido usada mais de uma vez em um intervalo de 15 minutos, apenas o primeiro uso será gravado nesse campo. Aplica-se tanto a usuários do IAM como usuários-raiz da conta. O valor nesse campo será `N/A` (não aplicável) nos seguintes casos:  
+ O usuário não tiver uma segunda chave de acesso.
+ A segunda chave de acesso do usuário nunca tiver sido usada.
+ A segunda chave de acesso do usuário tiver sido usada pela última vez antes de o IAM começar a rastrear essas informações em 22 de abril de 2015.

**cert\$11\$1active**  
Quando o usuário tem um certificado de assinatura X.509 e o status do certificado é `Active`, esse valor será `TRUE`. Caso contrário, o valor será `FALSE`.

**cert\$11\$1last\$1rotated**  
A data e a hora, em [formato de data/hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), quando o certificado de assinatura do usuário foi criado ou alterado pela última vez. Se o usuário não tiver um certificado de assinatura ativo, o valor nesse campo será `N/A` (não aplicável).

**cert\$12\$1active**  
Quando o usuário tem um segundo certificado de assinatura X.509 e o status do certificado é `Active`, esse valor será `TRUE`. Caso contrário, o valor será `FALSE`.  
Os usuários podem ter até dois certificado de assinatura X.509 para facilitar a mudança do certificado.

**cert\$12\$1last\$1rotated**  
A data e a hora, em [formato de data/hora ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), quando o segundo certificado de assinatura do usuário foi criado ou alterado pela última vez. Se o usuário não tiver um segundo certificado de assinatura ativo, o valor nesse campo será `N/A` (não aplicável).

**additional\$1credentials\$1info**  
Quando o usuário tem mais de duas chaves de acesso ou certificados, esse valor é o número de chaves de acesso ou certificados adicionais e as ações que você pode usar para listar as chaves de acesso ou os certificados associados ao usuário.

## Obter relatórios de credenciais (console)
<a name="getting-credential-reports-console"></a>

Você pode usar o Console de gerenciamento da AWS para fazer download de um relatório de credenciais como um arquivo de valores separados por vírgula (CSV).

**Para fazer download de um relatório de credenciais (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **Relatório de credenciais**.

1. Escolha **Download Report (Fazer download do relatório)**.

## Obter relatórios de credenciais (AWS CLI)
<a name="getting-credential-reports-cliapi"></a>

**Para fazer download um relatório de credenciais (AWS CLI)**

1. Gere um relatório de credenciais. O AWS armazena um único relatório. Se um relatório existir, a geração de um relatório de credenciais substituirá o relatório anterior. [https://docs.aws.amazon.com/cli/latest/reference/iam/generate-credential-report.html](https://docs.aws.amazon.com/cli/latest/reference/iam/generate-credential-report.html)

1. Exibir o último relatório gerado: [https://docs.aws.amazon.com/cli/latest/reference/iam/get-credential-report.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-credential-report.html)

## Obter relatórios de credenciais (API da AWS)
<a name="getting-credential-reports-api"></a>

**Para fazer download de um relatório de credenciais (API AWS)**

1. Gere um relatório de credenciais. O AWS armazena um único relatório. Se um relatório existir, a geração de um relatório de credenciais substituirá o relatório anterior. [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GenerateCredentialReport.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GenerateCredentialReport.html)

1. Exibir o último relatório gerado: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetCredentialReport.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetCredentialReport.html)

# Credenciais do IAM para o CodeCommit: credenciais do Git, chaves SSH e chaves de acesso da AWS
<a name="id_credentials_ssh-keys"></a>

O CodeCommit é um serviço de controle de versão gerenciado que hospeda repositórios privados do Git na Nuvem AWS. Para usar o CodeCommit, configure seu cliente Git para se comunicar com repositórios do CodeCommit. Como parte dessa configuração, forneça credenciais do IAM que podem ser usadas pelo CodeCommit para autenticar você. O IAM oferece suporte ao CodeCommit com três tipos de credenciais:
+ Credenciais do Git, um par de nome de usuário e senha gerado pelo IAM que você pode usar para se comunicar com repositórios do CodeCommit por HTTPS.
+ As chaves SSH, um par de chaves privada e pública gerado localmente, que você pode associar ao seu usuário do IAM para se comunicar com repositórios do CodeCommit por SSH.
+  [Chaves de acesso da AWS](id_credentials_access-keys.md) que você pode usar com o auxiliar de credenciais incluído na AWS CLI para se comunicar com repositórios do CodeCommit por HTTPS.

**nota**  
Você não pode usar as chaves SSH ou as credenciais do Git para acessar repositórios em outra conta da AWS. Para saber como configurar o acesso aos repositórios do CodeCommit para usuários e grupos do IAM em outra Conta da AWS, consulte [Configurar o acesso entre contas a um repositório do AWS CodeCommit usando perfis](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account.html), no *Guia do usuário do AWS CodeCommit*.

Consulte as seções a seguir para obter mais informações sobre cada opção. 

## Usar as credenciais do Git e HTTPS com o CodeCommit (recomendado)
<a name="git-credentials-code-commit"></a>

Com as credenciais do Git, é possível gerar um par de nome de usuário e senha estáticos para o seu usuário do IAM e, em seguida, usar essas credenciais para conexões HTTPS. Você também pode usar essas credenciais com qualquer ferramenta de terceiros ou ambiente de desenvolvimento integrado (IDE), que seja compatível com as credenciais estáticas do Git.

Como essas credenciais são universais para todos os sistemas operacionais com suporte e compatíveis com a maioria dos sistemas de gerenciamento de credenciais, ambientes de desenvolvimento e outras ferramentas de desenvolvimento de software, esse é o método recomendado. Você pode redefinir a senha para as credenciais do Git a qualquer momento. Você também pode tornar as credenciais inativas ou excluí-las se elas não forem mais necessárias.

**nota**  
Você não pode escolher seu próprio nome do usuário ou senha para as credenciais do Git. O IAM gera essas credenciais para ajudar a garantir que atendam aos padrões de segurança da AWS e de repositórios seguros no CodeCommit. Você pode fazer download das credenciais somente uma vez, no momento em que elas são geradas. Certifique-se de salvar as credenciais em um local seguro. Se necessário, você pode redefinir a senha a qualquer momento, mas isso invalida todas as conexões configuradas com a senha antiga. Você deve reconfigurar as conexões para usar a nova senha antes de se conectar.

Consulte os tópicos a seguir para obter mais informações: 
+ Para criar um usuário do IAM, consulte [Criar um usuário do IAM na Conta da AWS](id_users_create.md). 
+ Para gerar e usar as credenciais do Git com o CodeCommit, consulte [Para usuários HTTPS que usam credenciais do Git](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html) no *Guia do usuário do AWS CodeCommit*. 

**nota**  
A alteração do nome de um usuário do IAM após a geração de credenciais do Git não altera o nome do usuário das credenciais do Git. O nome do usuário e a senha são os mesmos e ainda são válidos. 

**Para atualizar credenciais específicas do serviço**

1. Crie um segundo conjunto de credenciais específicas do serviço além do conjunto em uso no momento.

1. Atualize todos os seus aplicativos para utilizar o novo conjunto de credenciais e confirme que os aplicativos estão funcionando.

1. Altere o estado das credenciais originais para "Inativas".

1. Certificar-se de que todos os seus aplicativos ainda estejam funcionando.

1. Exclua as credenciais inativas específicas do serviço.

## Usar chaves SSH e SSH com o CodeCommit
<a name="ssh-keys-code-commit"></a>

Com conexões SSH, você cria arquivos de chave pública e privada em sua máquina local que o Git e o CodeCommit usam para a autenticação SSH. Associe a chave pública ao seu usuário do IAM e armazene a chave privada em sua máquina local. Consulte os tópicos a seguir para obter mais informações: 
+ Para criar um usuário do IAM, consulte [Criar um usuário do IAM na Conta da AWS](id_users_create.md). 
+ Para criar uma chave pública SSH e associá-la a um usuário do IAM, consulte [Para conexões SSH no Linux, macOS ou Unix](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-unixes.html) ou consulte [Para conexões SSH no Windows](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-windows.html) no *Guia do usuário do AWS CodeCommit*. 

**nota**  
A chave pública deve ser codificada no formato ssh-rsa ou PEM. O tamanho mínimo de bit da chave pública é de 2.048 bits, e o tamanho máximo é de 16.384 bits. Isso não tem relação com o tamanho do arquivo que você carregou. Por exemplo, você pode gerar uma chave de 2.048 bits, e o arquivo PEM resultante terá 1.679 bytes. Se você fornecer a chave pública em outro formato ou tamanho, verá uma mensagem de erro indicando que o formato da chave é inválido.

## Usar HTTPS com o auxiliar de credenciais da AWS CLI e o CodeCommit
<a name="access-keys-code-commit"></a>

Como uma alternativa às conexões HTTPS com credenciais do Git, você pode permitir que o Git use uma versão assinada com criptografia de suas credenciais de usuário do IAM ou uma função de instância do Amazon EC2 sempre que o Git precisar de autenticação na AWS para interagir com repositórios do CodeCommit. Este é o único método de conexão para repositórios do CodeCommit que não exige um usuário do IAM. Também é o único método que funciona com acesso federado e credenciais temporárias. Consulte os tópicos a seguir para obter mais informações:
+ Para saber mais sobre o acesso federado, consulte [Federação e provedores de identidade na AWS](id_roles_providers.md) e [Acesso aos usuários autenticados externamente (federação de identidades)](id_roles_common-scenarios_federated-users.md). 
+ Para saber mais sobre credenciais temporárias, consulte [Credenciais de segurança temporárias no IAM](id_credentials_temp.md) e [Acesso temporário a repositórios do CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/temporary-access.html). 

O auxiliar de credenciais da AWS CLI não é compatível com outros sistemas auxiliares de credencial, como o Keychain Access ou o Windows Credential Management. Há considerações de configuração adicionais ao configurar conexões HTTPS com o auxiliar de credenciais. Para obter mais informações, consulte [Para conexões HTTPS no Linux, macOS ou Unix com o auxiliar de credenciais da AWS CLI](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-unixes.html) ou [Conexões HTTPS no Windows com o auxiliar de credenciais da AWS CLI](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-windows.html) no *Guia do usuário do AWS CodeCommit*.

# Gerenciar certificados de servidor no IAM
<a name="id_credentials_server-certs"></a>

Para habilitar conexões HTTPS para o seu site ou aplicativo na AWS você precisa de um *certificado de servidor* SSL/TLS. Para certificados em uma região compatível com o AWS Certificate Manager (ACM), recomendamos que você use o ACM para provisionar, gerenciar e implantar seus certificados de servidor. Nas regiões sem suporte, você deve usar o IAM como gerenciador de certificados. Para saber quais regiões são compatíveis com o ACM, consulte [Cotas e endpoints do AWS Certificate Manager](https://docs.aws.amazon.com/general/latest/gr/acm.html) na *Referência geral da AWS*.

**Importante**  
O ACM é a ferramenta preferencial para provisionar, gerenciar e implantar seus certificados de servidor. Com o ACM você pode solicitar um certificado ou implantar um ACM existente ou um certificado externo nos recursos da AWS. Os certificados fornecidos pelo ACM são gratuitos e são renovados automaticamente. Em uma [região compatível](https://docs.aws.amazon.com/general/latest/gr/acm.html), você pode usar o ACM para gerenciar certificados de servidor no console ou de forma programática. Para obter mais informações sobre o ACM, consulte o [https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html). Para obter mais informações sobre como solicitar um certificado do ACM, consulte [Solicitar um certificado público](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html) ou [Solicitar um certificado privado](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html) no *Guia do usuário do AWS Certificate Manager*. Para obter mais informações sobre a importação de certificados de terceiros para o ACM, consulte [Importação de certificados](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) no *Manual do usuário do AWS Certificate Manager*.

Use o IAM como um gerenciador de certificados apenas quando precisar oferecer suporte a conexões HTTPS em uma região que não é [compatível com o ACM](https://docs.aws.amazon.com/general/latest/gr/acm.html). O IAM criptografa com segurança suas chaves privadas e armazena a versão criptografada no armazenamento de certificado SSL do IAM. O IAM oferece suporte à implantação de certificados de servidor em todas as regiões, mas você deve obter seu certificado de um provedor externo para usar com a AWS. Você não pode carregar um certificado do ACM no IAM. Além disso, não é possível gerenciar seus certificados do console do IAM.

Para obter mais informações sobre como carregar certificados de terceiros para o IAM, consulte os tópicos a seguir.

**Topics**
+ [

## Fazer upload de um certificado de servidor (API da AWS)
](#upload-server-certificate)
+ [

## Operações de API da AWS para certificados de servidor
](#id_credentials_server-certs-api)
+ [

## Solucionar problemas com certificados de servidor
](#server-certificate-troubleshooting)

## Fazer upload de um certificado de servidor (API da AWS)
<a name="upload-server-certificate"></a>

Para carregar um certificado de servidor para o IAM, você deve fornecer o certificado e sua chave privada correspondente. quando o certificado não for autoassinado, você também deverá fornecer uma cadeia de certificado. (Você não precisa de uma cadeia de certificado ao fazer upload de um certificado autoassinado.) Antes de fazer upload de um certificado, verifique se você tem todos estes itens e que atendem aos seguintes critérios:
+ O certificado deve ser válido no momento do upload. Você não pode fazer upload de um certificado antes de seu período de validade começar (a data `NotBefore` do certificado) ou após sua expiração (a data `NotAfter` do certificado).
+ A chave privada deve ser não criptografada. Você não pode fazer upload de uma chave privada que seja protegida por uma senha ou código de acesso. Para ajudar a descriptografar uma chave privada criptografada, consulte [Solucionar problemas com certificados de servidor](#server-certificate-troubleshooting).
+ O certificado, a chave privada e a cadeia de certificação devem ser codificados em PEM. Para ajudar a converter esses itens no formato PEM, consulte [Solucionar problemas com certificados de servidor](#server-certificate-troubleshooting).

Para usar a [API do IAM](https://docs.aws.amazon.com/IAM/latest/APIReference/) para carregar um certificado, envie uma solicitação [UploadServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadServerCertificate.html). O exemplo a seguir mostra como fazer isso com a [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/). O exemplo supõe o seguinte:
+ O certificado codificado PEM está armazenado em um arquivo chamado `Certificate.pem`.
+ A cadeia do certificado codificado PEM está armazenada em um arquivo chamado `CertificateChain.pem`.
+ A chave privada não criptografada codificada PEM está armazenada em um arquivo chamado `PrivateKey.pem`.
+ (Opcional) Você deseja etiquetar o certificado do servidor com um par de chave-valor. Por exemplo, você pode adicionar a chave de tag `Department` e o valor de tag `Engineering` para ajudar a identificar e organizar seus certificados.

Para usar o comando de exemplo a seguir, substitua os nomes de arquivo pelos seus próprios. Substitua *ExampleCertificate* pelo nome do seu certificado carregado. Se quiser marcar o certificado, substitua o par de chave-valor das tags *ExampleKey* e *ExampleValue* por seus próprios valores. Digite o comando em uma única linha contínua. O exemplo a seguir inclui quebras de linha e espaços extras para facilitar a leitura.

```
aws iam upload-server-certificate --server-certificate-name ExampleCertificate
                                    --certificate-body file://Certificate.pem
                                    --certificate-chain file://CertificateChain.pem
                                    --private-key file://PrivateKey.pem
                                    --tags '{"Key": "ExampleKey", "Value": "ExampleValue"}'
```

Quando o comando anterior for executado com êxito, ele retornará metadados sobre o certificado carregado, incluindo [nome de recurso da Amazon (ARN)](reference_identifiers.md#identifiers-arns), nome fácil, identificador (ID), data de expiração, tags etc.

**nota**  
Se você estiver carregando um certificado de servidor para usar com o Amazon CloudFront, deverá especificar um caminho usando a opção `--path`. O caminho deve começar com `/cloudfront` e deve incluir uma barra no final (por exemplo, `/cloudfront/test/`).

Para usar o AWS Tools for Windows PowerShell para fazer upload de um certificado, use [Publish-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Publish-IAMServerCertificate.html&tocid=Publish-IAMServerCertificate).

## Operações de API da AWS para certificados de servidor
<a name="id_credentials_server-certs-api"></a>

Use os comandos a seguir para visualizar, marcar, renomear e excluir certificados de servidor.
+ Use [GetServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServerCertificate.html) para recuperar um certificado. Essa solicitação retorna o certificado, a cadeia de certificado (se foi carregado) e metadados sobre o certificado.
**nota**  
Você não pode baixar nem recuperar uma chave privada do IAM depois de carregá-lo.
+ Use [Get-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Get-IAMServerCertificate.html&tocid=Get-IAMServerCertificate) para recuperar um certificado.
+ Use [ListServerCertificates](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServerCertificates.html) para listar seus certificados do servidor carregados. A solicitação retorna uma lista com metadados sobre cada certificado.
+ Use [Get-IAMServerCertificates](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Get-IAMServerCertificates.html&tocid=Get-IAMServerCertificates) para listar seus certificados de servidor carregados.
+ Use [TagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagServerCertificate.html) para marcar um certificado de servidor existente. 
+ Use [UntagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagServerCertificate.html) para desmarcar um certificado de servidor.
+ Use [UpdateServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServerCertificate.html) para renomear um certificado de servidor ou atualizar esse caminho.

   O exemplo a seguir mostra como fazer isso com a AWS CLI.

  Para usar o exemplo de comando a seguir, substitua os nomes de certificados novo e antigo e o caminho do certificado e digite o comando em uma única linha contínua. O exemplo a seguir inclui quebras de linha e espaços extras para facilitar a leitura.

  ```
  aws iam update-server-certificate --server-certificate-name ExampleCertificate
                                      --new-server-certificate-name CloudFrontCertificate
                                      --new-path /cloudfront/
  ```

  Para usar o AWS Tools for Windows PowerShell para renomear um certificado de servidor ou atualizar seu caminho, use [Update-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Update-IAMServerCertificate.html&tocid=Update-IAMServerCertificate).
+ Use [DeleteServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServerCertificate.html) para excluir um certificado de servidor. 

  Para usar o AWS Tools for Windows PowerShell para excluir um certificado de servidor, use [Remove-IAMServerCertificate](https://docs.aws.amazon.com/powershell/latest/reference/Index.html?page=Remove-IAMServerCertificate.html&tocid=Remove-IAMServerCertificate).

## Solucionar problemas com certificados de servidor
<a name="server-certificate-troubleshooting"></a>

Antes de carregar um certificado para o IAM, você deve garantir que o certificado, a chave privada e a cadeia de certificados estejam todos codificados por PEM. Você também deve garantir que a chave privada não seja criptografada. Veja os exemplos a seguir.

**Example Exemplo de certificado codificado em PEM**  

```
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
```

**Example Exemplo de chave privada não criptografada, codificada por PEM**  

```
-----BEGIN RSA PRIVATE KEY-----
Base64-encoded private key
-----END RSA PRIVATE KEY-----
```

**Example Exemplo de cadeia de certificado codificado em PEM**  
Uma cadeia de certificados contém um ou mais certificados. Você pode usar um editor de texto, o comando copy no Windows ou o comando cat do Linux para concatenar os arquivos de certificado em uma cadeia. Quando você inclui vários certificados, cada certificado deve certificar o anterior. Você pode fazer isso concatenando os certificados, incluindo o certificado CA raiz por último.  
O exemplo a seguir contém três certificados, mas sua cadeia de certificados pode conter mais ou menos certificados.  

```
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded certificate
-----END CERTIFICATE-----
```

Se esses itens não estiverem no formato correto para carregamento no IAM, você poderá usar [OpenSSL](https://openssl.org/) para convertê-los no formato correto.

**Para converter um certificado ou uma cadeia de certificado de DER em PEM**  
Use o comando [OpenSSL **x509**](https://openssl.org/docs/manmaster/man1/x509.html) como no exemplo a seguir. No exemplo a seguir, substitua o comando `Certificate.der` pelo nome do arquivo que contém o certificado codificado em DER. Substitua `Certificate.pem` pelo nome preferido do arquivo de saída para conter o certificado codificado por PEM.  

```
openssl x509 -inform DER -in Certificate.der -outform PEM -out Certificate.pem
```
 

**Para converter uma chave privada de DER em PEM**  
Use o comando [OpenSSL **rsa**](https://openssl.org/docs/manmaster/man1/rsa.html) como no exemplo a seguir. No exemplo a seguir, substitua o comando `PrivateKey.der` pelo nome do arquivo que contém sua chave privada codificada por DER. Substitua `PrivateKey.pem` pelo nome preferido do arquivo de saída para conter a chave privada codificada por PEM.  

```
openssl rsa -inform DER -in PrivateKey.der -outform PEM -out PrivateKey.pem
```
 

**Para descriptografar uma chave privada criptografada (remover a senha ou a frase secreta)**  
Use o comando [OpenSSL **rsa**](https://openssl.org/docs/manmaster/man1/rsa.html) como no exemplo a seguir. Para usar o exemplo de comando a seguir, substitua `EncryptedPrivateKey.pem` pelo nome do arquivo que contém sua chave privada criptografada. Substitua `PrivateKey.pem` pelo nome preferido do arquivo de saída para conter a chave privada descriptografada codificada por PEM.  

```
openssl rsa -in EncryptedPrivateKey.pem -out PrivateKey.pem
```
 

**Para converter um pacote de certificado de PKCS\$112 (PFX) em PEM**  
Use o comando [OpenSSL **pkcs12**](https://openssl.org/docs/manmaster/man1/pkcs12.html) como no exemplo a seguir. No exemplo a seguir, substitua o comando `CertificateBundle.p12` pelo nome do arquivo que contém o pacote de certificado codificado por PKCS\$112. Substitua `CertificateBundle.pem` pelo nome preferido do arquivo de saída para conter o pacote de certificado codificado por PEM.  

```
openssl pkcs12 -in CertificateBundle.p12 -out CertificateBundle.pem -nodes
```
 

**Para converter um pacote de certificado de PKCS\$17 em PEM**  
Use o comando [OpenSSL **pkcs7**](https://openssl.org/docs/manmaster/man1/pkcs7.html) como no exemplo a seguir. No exemplo a seguir, substitua o comando `CertificateBundle.p7b` pelo nome do arquivo que contém o pacote de certificado codificado por PKCS\$17. Substitua `CertificateBundle.pem` pelo nome preferido do arquivo de saída para conter o pacote de certificado codificado por PEM.  

```
openssl pkcs7 -in CertificateBundle.p7b -print_certs -out CertificateBundle.pem
```

# Grupos de usuários do IAM
<a name="id_groups"></a>

Um [*grupo de usuários*](#id_groups) do IAM é um conjunto de usuários do IAM. Os grupos de usuários permitem especificar permissões para vários usuários, o que pode facilitar o gerenciamento das permissões para esses usuários. Por exemplo, você pode ter um grupo de usuários chamado *Admins* e dar a esse grupo de usuários as permissões normais dos administradores. Qualquer usuário desse grupo de usuários tem automaticamente permissões de grupo *Admins*. Se um novo usuário ingressar na organização e precisar de privilégios de administrador, você poderá atribuir as permissões apropriadas adicionando o usuário ao grupo de usuários *Admins*. Se alguém mudar de cargo na organização, em vez de editar as permissões desse usuário, você poderá remover a pessoa dos grupos do IAM antigos e adicioná-la aos novos grupos apropriados do IAM. 

Você pode anexar uma política baseada em identidade a um grupo de usuários para que todos os usuários do grupo de usuários recebem as permissões da política. Não é possível identificar um grupo de usuários como `Principal` em uma política (como uma política baseada em recursos) porque os grupos são relacionados com permissões, não autenticação, e as entidades principais são entidades autenticadas do IAM. Para obter mais informações sobre tipos de política, consulte [Políticas baseadas em identidade e em recurso](access_policies_identity-vs-resource.md).

Estas são algumas características importantes dos grupos do IAM:
+ Um grupo de usuários pode conter muitos usuários e um usuário pode pertencer a vários grupos de usuários.
+ Os grupos de usuários não podem ser aninhados e só podem conter usuários, não outros grupos do IAM.
+ Não existe um grupo de usuários padrão que inclua automaticamente todos os usuários da Conta da AWS. Se você deseja ter um grupo de usuários como este, deve criá-lo e atribuir cada novo usuário a ele.
+ O número e o tamanho dos recursos do IAM em uma Conta da AWS, como o número de grupos e o número de grupos dos quais um usuário pode ser membro, são limitados. Para ter mais informações, consulte [IAM e cotas do AWS STS](reference_iam-quotas.md).

O diagrama a seguir mostra um exemplo simples de uma pequena empresa. O proprietário da empresa cria um grupo de usuários `Admins` para que os usuários criem e gerenciem outros usuários à medida que a empresa cresce. O grupo de usuários `Admins` cria um grupo de usuários `Developers` e um grupo de usuários `Test`. Cada um desses grupos do IAM é composto de usuários (pessoas e aplicações) que interagem com a AWS (João, Brás, DevApp1, etc.). Cada usuário tem um conjunto individual de credenciais de segurança. Neste exemplo, cada usuário pertence a um único grupo de usuários. No entanto, os usuários podem pertencer a vários grupos do IAM.

![\[Exemplo de relacionamento entre Contas da AWS, usuários e grupos do IAM\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/Relationship_Between_Entities_Example.diagram.png)


# Criar grupos do IAM
<a name="id_groups_create"></a>

**nota**  
Como [prática recomendada](best-practices.md), aconselhamos exigir que os usuários humanos usem a federação com um provedor de identidades para acessar a AWS usando credenciais temporárias. Seguindo as práticas recomendadas, você não gerenciará usuários e grupos do IAM. Em vez disso, seus usuários e grupos serão gerenciados fora da AWS e podem acessar recursos da AWS como *identidade federada*. Identidade federada é um usuário de seu diretório de usuários corporativos, um provedor de identidades da Web, AWS Directory Service, o diretório do Centro de Identidade ou qualquer usuário que acesse os serviços da AWS usando credenciais fornecidas por meio de uma fonte de identidade. As identidades federadas utilizam os grupos definidos pelo provedor de identidade. Se você estiver usando o Centro de Identidade do AWS IAM, consulte [Manage identities in IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-sso.html) (Gerenciar identidades no Centro de Identidade do IAM) no *Guia do usuário do Centro de Identidade do AWS IAM* para obter informações sobre a criação de usuários e grupos no Centro de Identidade do IAM.

Os grupos do IAM são criados para ajudar gerenciar as permissões de acesso de vários usuários com perfis ou responsabilidades semelhantes. Ao anexar políticas a esses grupos, você pode conceder ou revogar permissões para conjuntos inteiros de usuários. Isso simplifica a manutenção das políticas de segurança, pois as alterações feitas nas permissões de um grupo são aplicadas automaticamente a todos os membros desse grupo, garantindo um controle de acesso consistente. Depois de criar o grupo, conceda permissões ao grupo com base no tipo de trabalho que você espera que os usuários do IAM no grupo façam e, em seguida, adicione os usuários do IAM ao grupo.

Para obter informações sobre as permissões necessárias para criar um grupo do IAM, consulte [Permissões necessárias para acessar recursos do IAM](access_permissions-required.md). 

## Para criar um grupo do IAM e anexar políticas
<a name="id_groups_create-section-1"></a>

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **User groups** (Grupos de usuários) e escolha **Create group** (Criar grupo).

1. Em **User group name** (Nome do grupo de usuários), digite o nome do grupo.
**nota**  
O número e o tamanho dos recursos do IAM em uma conta da AWS são limitados. Para obter mais informações, consulte [IAM e cotas do AWS STS](reference_iam-quotas.md). Os nomes dos grupos podem ser uma combinação de até 128 letras, dígitos e estes caracteres: mais (\$1), igual (=), vírgula (,), ponto (.), arroba (@), sublinhado (\$1) e hífen (-). Os nomes devem ser exclusivos dentro de uma conta. Não há diferenciação entre maiúsculas e minúsculas. Por exemplo, não é possível criar grupos chamados de **ADMINS** e **admins**.

1. Na lista de usuários, marque a caixa de seleção para cada usuário que você deseja adicionar ao grupo.

1. Na lista de políticas, marque a caixa de seleção para cada política que você deseja aplicar a todos os membros do grupo.

1. Escolha **Criar grupo**.

------
#### [ AWS CLI ]

Execute o seguinte comando:
+ [aws iam create-group](https://docs.aws.amazon.com/cli/latest/reference/iam/create-group.html)

------
#### [ API ]

Chame a seguinte operação:
+ [CreateGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateGroup.html)

------

# Visualizar grupos do IAM
<a name="id_groups_manage_list"></a>

Você pode listar todos os grupos do IAM de sua conta, listar os usuários de um grupo de usuários e listar os grupos do IAM aos quais um usuário pertence. Se você usar a CLI ou a API, poderá listar todos os grupos do IAM com um determinado prefixo de caminho.

------
#### [ Console ]

Para listar todos os grupos do IAM na sua conta:
+ No painel de navegação, selecione **Grupos de usuários**.

Para listar os usuários do IAM em um grupo do IAM específico:
+ No painel de navegação, selecione **User groups** (Grupos de usuários). Escolha o nome do grupo de destino para abrir a página de detalhes do grupo. Revise a guia **Usuários** para ver a associação a grupos.

Para listar todos os grupos do IAM aos quais um usuário pertence:
+ No painel de navegação, escolha **Users**. Em seguida, escolha o nome do usuário para abrir a página de detalhes do usuário. Escolha a guia **Grupos** para ver uma lista dos grupos aos quais o usuário pertence.

------
#### [ AWS CLI ]

Para listar todos os grupos do IAM na sua conta:
+ [aws iam list-groups](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups.html)

Para listar os usuários em um grupo do IAM específico:
+ [aws iam get-group](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html)

Para listar todos os grupos do IAM aos quais um usuário pertence:
+ [aws iam list-groups-for-user](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups-for-user.html)

------
#### [ API ]

Para listar todos os grupos do IAM na sua conta:
+ [ListGroups](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroups.html)

Para listar os usuários em um grupo do IAM específico:
+ [GetGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html)

Para listar todos os grupos do IAM aos quais um usuário pertence:
+ [ListGroupsForUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupsForUser.html)

------

# Editar usuários em grupos do IAM
<a name="id_groups_manage_add-remove-users"></a>

Use os grupos do IAM para aplicar as mesmas políticas de permissões a vários usuários de uma só vez. É possível adicionar ou remover usuários de um grupo do IAM. Isso é útil à medida que pessoas entram e saem de sua organização.

## Revisar acesso à política
<a name="groups-remove_prerequisites"></a>

Antes de remover um grupo, use a página de detalhes do grupo para analisar os membros (usuários do IAM) do grupo, as políticas anexadas ao grupo na guia **Permissões** e revisar a atividade recente em nível de serviço usando a guia **Último acesso**. Isso ajuda a evitar a remoção não intencional do acesso de uma entidade principal (pessoa ou aplicação) que o esteja usando. Para obter mais informações sobre como visualizar as informações acessadas por último, consulte [Refinar permissões na AWS usando informações do último acesso](access_policies_last-accessed.md).

## Adicionar um usuário do IAM a um grupo do IAM
<a name="groups-add-remove-console"></a>

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **User groups** (Grupos de usuários) e, em seguida, escolha o nome do grupo.

1. Escolha a guia **Users** (Usuários) e, em seguida, **Add users** (Adicionar usuários). Marque a caixa de seleção próxima dos usuários que você deseja adicionar.

1. Escolha **Add users** (Adicionar usuários).

------
#### [ AWS CLI ]

Execute o seguinte comando:
+ `[aws iam add-user-to-group](https://docs.aws.amazon.com/cli/latest/reference/iam/add-user-to-group.html)`

------
#### [ API ]

Chame a seguinte operação:
+ `[AddUserToGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddUserToGroup.html)`

------

## Remover um usuário do IAM de um grupo do IAM
<a name="id_groups_manage_add-remove-users-section-1"></a>

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **User groups** (Grupos de usuários) e, em seguida, escolha o nome do grupo.

1. Escolha a guia **Users**. Marque a caixa de seleção ao lado dos usuários que deseja remover e escolha **Remove users** (Remover usuários).

------
#### [ AWS CLI ]

Execute o seguinte comando:
+ `[aws iam remove-user-from-group](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-user-from-group.html)`

------
#### [ API ]

Chame a seguinte operação:
+ `[RemoveUserFromGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveUserFromGroup.html)`

------

# Anexar uma política a um grupo de usuários do IAM
<a name="id_groups_manage_attach-policy"></a>

Você pode anexar uma [política gerenciada pela AWS](access_policies_managed-vs-inline.md#aws-managed-policies), ou seja, uma política pré-escrita fornecida pela AWS, a um grupo de usuários, conforme explicado nas etapas a seguir. Para anexar uma política gerenciada pelo cliente, ou seja, uma política com permissões personalizadas criada por você, crie a política primeiro. Para obter informações sobre a criação de políticas gerenciadas pelo cliente, consulte [Defina permissões personalizadas do IAM com políticas gerenciadas pelo cliente](access_policies_create.md). 

Para obter informações sobre permissões e políticas, consulte [Gerenciamento de acesso para recursos da AWS](access.md). 

## Para anexar uma política a um grupo do IAM
<a name="id_groups_manage_attach-policy-section-1"></a>

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **User groups** (Grupos de usuários) e, em seguida, escolha o nome do grupo.

1. Escolha a aba **Permissões**.

1. Escolha **Adicionar permissões** e depois **Anexar políticas**.

1. As políticas atuais anexadas ao grupo de usuários são exibidas na lista **Current permissions policies** (Políticas de permissões atuais). Na lista **Other permissions policies** (Outras políticas de permissões), marque a caixa de seleção ao lado dos nomes das políticas a serem anexadas. Você pode usar a caixa de pesquisa para filtrar a lista de políticas por tipo e nome de política.

1. Selecione a política que deseja anexar ao seu grupo do IAM e escolha **Anexar políticas**.

------
#### [ AWS CLI ]

Execute o seguinte comando:
+ `[aws iam attach-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-group-policy.html)`

------
#### [ API ]

Chame a seguinte operação:
+ `[AttachGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachGroupPolicy.html)`

------

# Renomear um grupo de usuários do IAM
<a name="id_groups_manage_rename"></a>

Quando você altera o nome ou o caminho de um grupo de usuários, acontece o seguinte: 
+ Todas as políticas anexadas ao grupo de usuários permanecem com o grupo sob o novo nome.
+ O grupo de usuários retém todos os seus usuários com o novo nome.
+ O ID exclusivo do grupo de usuários permanece o mesmo. Para obter mais informações sobre IDs exclusivos, consulte [Identificadores exclusivos](reference_identifiers.md#identifiers-unique-ids). 

O IAM não atualiza automaticamente as políticas que se referem ao grupo de usuários como um recurso para usar o novo nome. Portanto, você deve ter cuidado ao renomear um grupo de usuários. Antes de renomear o grupo de usuários, você deve verificar manualmente todas as suas políticas para encontrar as políticas em que esse grupo de usuários é mencionado pelo nome. Por exemplo, digamos que Bob seja gerente da parte de testes da organização. Bob tem uma política anexada à entidade de usuário do IAM que permite a ele adicionar e remover usuários do grupo de usuários Teste. Se um administrador alterar o nome do grupo de usuários (ou mudar o caminho do grupo), ele também precisará atualizar a política anexada a Bob para usar o novo nome ou o novo caminho. Caso contrário, Bob não poderá adicionar e remover usuários do grupo de usuários. 

**Para encontrar as políticas que se referem a um grupo do IAM como um recurso:**

1. No painel de navegação do console do IAM, escolha **Policies** (Políticas).

1. Classifique pela coluna **Type** (Tipo) para encontrar suas políticas personalizadas **Customer managed** (Gerenciadas pelo cliente).

1. Escolha o nome da política a ser editada.

1. Escolha a guia **Permissions** e escolha **Resumo**.

1. Escolha **IAM** na lista de serviços, se houver esta opção.

1. Procure o nome do seu grupo de usuários na coluna **Resource** (Recurso).

1. Escolha **Editar** para alterar o nome do grupo de usuários na política.

## Para alterar o nome de um grupo de usuários do IAM
<a name="id_groups_manage_rename-section-1"></a>

------
#### [ Console ]

1. No painel de navegação, escolha **Grupos de usuários** e, em seguida, selecione o nome do grupo.

1. Escolha **Editar**. Digite o novo nome do grupo de usuários e escolha **Save changes** (Salvar alterações).

------
#### [ AWS CLI ]

Execute o seguinte comando:
+ [aws iam update-group](https://docs.aws.amazon.com/cli/latest/reference/iam/update-group.html)

------
#### [ API ]

Chame a seguinte operação:
+ [UpdateGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateGroup.html)

------

# Excluir um grupo do IAM
<a name="id_groups_manage_delete"></a>

Quando um grupo do IAM é excluído no console, o console remove automaticamente todos os membros do grupo, desanexa todas as políticas gerenciadas e exclui todas as políticas em linha. Contudo, como o IAM não exclui automaticamente as políticas que se referem ao grupo do IAM como um recurso, você deve tomar cuidado ao excluir um grupo do IAM. Antes de excluir seu grupo do IAM, revise manualmente as suas políticas para encontrar quaisquer políticas que mencionem o grupo por nome. Por exemplo, João tem uma política anexada à sua entidade de usuário do IAM que permite que ele adicione e remova usuários do grupo de usuários Teste. Se um administrador excluir o grupo, ele também precisará excluir a política anexada a John. Caso contrário, se o administrador recriar o grupo excluído e dar a ele o mesmo nome, as permissões de João permanecerão em vigor, mesmo que ele tenha saído da Equipe de teste.

Por outro lado, ao usar a CLI, o SDK ou a API para excluir um grupo, primeiro é necessário remover os usuários do grupo. Exclua então todas as políticas em linha incorporadas no grupo do IAM. Em seguida, desanexe todas as políticas gerenciadas anexadas ao grupo. Agora exclua o grupo do IAM propriamente dito.

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **User groups** (Grupos de usuários).

1. Na lista de grupos do IAM, marque a caixa de seleção ao lado dos nomes dos grupos do IAM a serem excluídos. É possível usar a caixa de pesquisa para filtrar a lista de grupos do IAM por tipo, permissões e nome do grupo.

1. Escolha **Excluir**.

1. Na caixa de confirmação, para excluir um único grupo, digite o nome do grupo e escolha **Excluir**. Se você quiser excluir vários grupos, digite o número de grupos do IAM a serem excluídos, seguido por **user groups**, e escolha **Excluir**. Por exemplo, para excluir três grupos do IAM, digite **3 **user groups****.

------
#### [ AWS CLI ]

1. Remova todos os usuários do grupo do IAM.
   + [aws iam get-group](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html) (para obter a lista de usuários no grupo do IAM) e [aws iam remover-user-from-group](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-user-from-group.html) (para remover um usuário do grupo do IAM)

1. Exclua todas as políticas em linha incorporadas no grupo do IAM.
   + [aws iam list-group-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-group-policies.html) (para obter uma lista de políticas em linha do grupo do IAM) e [aws iam delete-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-group-policy.html) (para excluir as políticas em linha do grupo do IAM)

1. Desanexe todas as políticas gerenciadas anexadas ao grupo do IAM.
   + [aws iam list-attached-group-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-group-policies.html) (para obter uma lista das políticas gerenciadas anexados ao grupo do IAM) e [aws iam detach-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/detach-group-policy.html) (para desanexar uma política gerenciada do grupo do IAM)

1. Exclua o grupo do IAM.
   + [aws iam delete-group](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-group.html)

------
#### [ API ]

1. Remova todos os usuários do grupo do IAM.
   + [GetGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html) (para obter a lista de usuários no grupo do IAM) e [RemoveUserFromGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveUserFromGroup.html) (para remover um usuário do grupo do IAM)

1. Exclua todas as políticas em linha incorporadas no grupo do IAM.
   + [ListGroupPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupPolicies.html) (para obter uma lista de políticas em linha do grupo do IAM) e [DeleteGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteGroupPolicy.html) (para excluir as políticas em linha do grupo do IAM)

1. Desanexe todas as políticas gerenciadas anexadas ao grupo do IAM.
   + [ListAttachedGroupPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedGroupPolicies.html) (para obter uma lista das políticas gerenciadas anexados ao grupo do IAM) e [DetachGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DetachGroupPolicy.html) (para desanexar uma política gerenciada do grupo do IAM)

1. Exclua o grupo do IAM.
   + [DeleteGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteGroup.html)

------

# Perfis do IAM
<a name="id_roles"></a>

Uma *função* do IAM é uma identidade do IAM que você pode criar em sua conta que tem permissões específicas. Uma função do IAM é semelhante a um usuário do IAM no sentido de que é uma identidade da AWS com políticas de permissão que determinam o que a identidade pode e não pode fazer na AWS. No entanto, em vez de ser exclusivamente associada a uma pessoa, o propósito do perfil é ser assumido por qualquer pessoa que precisar dele. Além disso, um perfil não tem credenciais de longo prazo padrão associadas a ele, como senha ou chaves de acesso. Em vez disso, quando você assumir um perfil, ele fornecerá credenciais de segurança temporárias para sua sessão de perfil.

É possível usar funções para delegar acesso a usuários, aplicações ou serviços que normalmente não têm acesso aos seus recursos da AWS. Por exemplo, você pode conceder para os usuários na sua conta da AWS acesso a recursos que normalmente eles não têm ou conceder para os usuários em uma Conta da AWS acesso a recursos em outra conta. Também é possível permitir que uma aplicação móvel use recursos da AWS, mas sem incorporar chaves da AWS na aplicação (onde pode ser difícil atualizá-las e onde os usuários poderão potencialmente extraí-las). Às vezes, você deseja oferecer acesso à AWS a usuários que já têm identidades definidas fora da AWS, como no diretório corporativo. Você também pode conceder acesso à sua conta a terceiros, para que eles possam realizar uma auditoria em seus recursos.

Para esses cenários, você pode delegar acesso aos recursos da AWS usando uma *função do IAM*. Esta seção apresenta funções e as diferentes maneiras de usá-las, quando e como escolher essas abordagens e como criar, gerenciar, alternar para (ou assumir) e excluir funções.

**nota**  
Quando você cria sua Conta da AWS, nenhum perfil é criado por padrão. Conforme você adiciona serviços à sua conta, eles podem adicionar perfis vinculados a serviços para dar suporte a seus casos de uso.  
 Um perfil vinculado a serviço é um tipo de perfil de serviço vinculado a um AWS service (Serviço da AWS). O serviço pode presumir o perfil de executar uma ação em seu nome. Perfis vinculados ao serviço aparecem em sua Conta da AWS e são de propriedade do serviço. Um administrador do IAM pode visualizar, mas não editar as permissões para perfis vinculados ao serviço.   
Para poder excluir esses perfis vinculados a serviços, você deve primeiro excluir os recursos relacionados a eles. Isso protege seus recursos porque você não pode remover por engano as permissões para acessar os recursos.  
Para obter informações sobre quais serviços oferecem suporte a funções vinculadas a serviços, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md) e procure os serviços que têm **Sim **na coluna **Função vinculada ao serviço**. Escolha um **Sim** com um link para visualizar a documentação do perfil vinculado para esse serviço.

**Topics**
+ [

## Quando criar um usuário do IAM (em vez de uma função)
](#id_which-to-choose)
+ [

## Termos e conceitos das funções
](#id_roles_terms-and-concepts)
+ [

## Recursos adicionais
](#id_roles_additional-resources)
+ [

# O problema "confused deputy"
](confused-deputy.md)
+ [

# Cenários comuns para perfis do IAM
](id_roles_common-scenarios.md)
+ [

# Criar um perfil do IAM
](id_roles_create.md)
+ [

# Gerenciamento de perfis do IAM
](id_roles_manage.md)
+ [

# Métodos para assumir um perfil
](id_roles_manage-assume.md)

## Quando criar um usuário do IAM (em vez de uma função)
<a name="id_which-to-choose"></a>

Recomendamos usar somente usuários do IAM para casos de uso sem suporte à federação de identidades. Alguns dos casos de uso incluem o seguinte:
+ **Workloads que não podem usar perfis do IAM**: você pode executar a workload de um local que precisa acessar a AWS. Em algumas situações, você não pode usar perfis do IAM para fornecer credenciais temporárias, como para plugins do WordPress. Nessas situações, use as chaves de acesso de longo prazo do usuário do IAM para que essa workload seja autenticada na AWS.
+ **Clientes de terceiros da AWS**: se você estiver usando ferramentas que não oferecem suporte ao acesso com o Centro de Identidade do IAM, como fornecedores ou clientes terceiros da AWS que não estão hospedados na AWS, use as chaves de acesso de longo prazo do usuário do IAM.
+ **Acesso ao AWS CodeCommit**: se você estiver usando o CodeCommit para armazenar seu código, poderá usar um usuário do IAM com chaves SSH ou credenciais específicas de serviço para que o CodeCommit seja autenticado em seus repositórios. Recomendamos fazer isso além de usar um usuário do IAM Identity Center para autenticação padrão. Os usuários do Centro de Identidade do IAM são as pessoas em sua força de trabalho que precisam acessar suas Contas da AWS ou suas aplicações na nuvem. Para dar aos usuários acesso aos seus repositórios do CodeCommit sem configurar os usuários do IAM, você pode configurar o utilitário **git-remote-codecommit**. Para obter mais informações sobre o IAM e o CodeCommit, consulte [Credenciais do IAM para o CodeCommit: credenciais do Git, chaves SSH e chaves de acesso da AWS](id_credentials_ssh-keys.md). Para obter mais informações sobre como configurar o utilitário **git-remote-codecommit**, consulte [Conectar-se a repositórios do AWS CodeCommit credenciais alternadas](https://docs.aws.amazon.com/codecommit/latest/userguide/temporary-access.html#temporary-access-configure-credentials), no *Guia do usuário do AWS CodeCommit*.
+ **Acesso ao Amazon Keyspaces (para Apache Cassandra)**: em uma situação em que não é possível usar usuários no IAM Identity Center, como para fins de teste de compatibilidade com o Cassandra, você pode usar um usuário do IAM com credenciais específicas do serviço para a autenticação com o Amazon Keyspaces. Os usuários do Centro de Identidade do IAM são as pessoas em sua força de trabalho que precisam acessar suas Contas da AWS ou suas aplicações na nuvem. Você também pode se conectar ao Amazon Keyspaces usando credenciais temporárias. Para obter mais informações, consulte [Using temporary credentials to connect to Amazon Keyspaces using an IAM role and the SigV4 plugin](https://docs.aws.amazon.com/keyspaces/latest/devguide/access.credentials.html#temporary.credentials.IAM) (Como usar credenciais temporárias para se conectar ao Amazon Keyspaces usando um perfil do IAM e o plug-in SigV4) no *Guia do desenvolvedor do Amazon Keyspaces (para Apache Cassandra)*.
+ **Acesso de emergência**: em uma situação em que você não consegue acessar seu provedor de identidade e precisa tomar medidas em sua Conta da AWS. Estabelecer usuários do IAM com acesso emergencial pode fazer parte do plano de resiliência. Recomendamos que as credenciais do usuário de emergência sejam rigidamente controladas e protegidas por autenticação multifator (MFA).

## Termos e conceitos das funções
<a name="id_roles_terms-and-concepts"></a>

Veja a seguir alguns termos básicos para começar a usar as funções.

****Perfil****  
Uma identidade do IAM que você pode criar em sua conta que tem permissões específicas. Uma função do IAM tem algumas semelhanças com um usuário do IAM. Funções e usuários são identidades da AWS com políticas de permissão que determinam o que a identidade pode e não pode fazer na AWS. No entanto, em vez de ser exclusivamente associada a uma pessoa, o propósito do perfil é ser assumido por qualquer pessoa que precisar dele. Além disso, um perfil não tem credenciais de longo prazo padrão associadas a ele, como senha ou chaves de acesso. Em vez disso, quando você assumir um perfil, ele fornecerá credenciais de segurança temporárias para sua sessão de perfil.  
Os perfis podem ser usados pelas seguintes entidades:  
+ Um usuário do IAM na mesma Conta da AWS ou em outra Conta da AWS
+ Perfis do IAM na mesma conta
+ Entidades principais de serviço, para uso com serviços e recursos da AWS como:
  + Serviços que permitem executar código em serviços de computação, como Amazon EC2 ou AWS Lambda
  + Atributos que executam ações em seus recursos em seu nome, como a replicação de objetos do Amazon S3
  + Serviços que fornecem credenciais de segurança temporárias para suas aplicações executadas fora da AWS, como IAM Roles Anywhere ou Amazon ECS Anywhere
+ Um usuário externo autenticado por um serviço de provedor de identidades (IdP) compatível com SAML 2.0 ou OpenID Connect

****AWS Perfil de serviço da****  
 O perfil de serviço é um [perfil do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) que um serviço assume para executar ações em seu nome. Um administrador do IAM pode criar, modificar e excluir um perfil de serviço do IAM. Para obter mais informações, consulte [Criação de um perfil para delegar permissões a um AWS service (Serviço da AWS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) no *Guia do Usuário do IAM*. 

****AWS Função vinculada ao serviço do****  
 Um perfil vinculado a serviço é um tipo de perfil de serviço vinculado a um AWS service (Serviço da AWS). O serviço pode presumir o perfil de executar uma ação em seu nome. Perfis vinculados ao serviço aparecem em sua Conta da AWS e são de propriedade do serviço. Um administrador do IAM pode visualizar, mas não editar as permissões para perfis vinculados ao serviço.   
Se já estiver usando um serviço quando ele começar a oferecer suporte às funções vinculadas ao serviço, você poderá receber um e-mail informando sobre uma nova função na sua conta. Nesse caso, o serviço cria automaticamente a função vinculada ao serviço na sua conta. Você não precisa realizar nenhuma ação para oferecer suporte a essa função, e você não deve excluir manualmente. Para obter mais informações, consulte [Uma nova função apareceu na minha conta da AWS](troubleshoot_roles.md#troubleshoot_roles_new-role-appeared).
Para obter informações sobre quais serviços oferecem suporte a funções vinculadas a serviços, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md) e procure os serviços que têm **Sim **na coluna **Função vinculada ao serviço**. Escolha um **Sim** com um link para visualizar a documentação do perfil vinculado para esse serviço. Para obter mais informações, consulte [Criar um perfil vinculado ao serviço](id_roles_create-service-linked-role.md).

****Encadeamento de funções****  
O encadeamento de perfis ocorre quando um perfil é usado para assumir um segundo perfil. Você pode realizar o encadeamento de perfis via Console de gerenciamento da AWS alternando entre os perfis, a AWS CLI ou a API. Por exemplo, suponha que o `RoleA` tenha permissão para assumir o `RoleB`. É possível permitir que o Usuário1 assuma o `RoleA` usando as credenciais de usuário de longo prazo na operação da API AssumeRole. Esta operação retorna as credenciais de curto prazo do `RoleA`. Para iniciar o encadeamento de funções, você pode usar as credenciais de curto prazo do `RoleA` para permitir que o Usuário1 assuma o `RoleB`.  
Ao assumir uma função, você pode passar uma tag de sessão e definir a tag como transitiva. As tags de sessão transitivas são passadas para todas as sessões subsequentes em uma cadeia de funções. Para saber mais sobre tags de sessão, consulte [Passar tags de sessão no AWS STS](id_session-tags.md).  
O encadeamento de perfis limita a sessão de perfil da API do Console de gerenciamento da AWS, AWS CLI ou AWS a um máximo de uma hora. Isso se aplica de forma independente da duração máxima da sessão configurada para perfis individuais. Ao usar a operação de API [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) para assumir uma função, você pode especificar o tempo da sessão da sua função usando o parâmetro `DurationSeconds`. É possível especificar um valor de parâmetro de até 43200 segundos (12 horas), dependendo da [configuração da duração máxima da sessão](id_roles_update-role-settings.md#id_roles_update-session-duration) para seu perfil. No entanto, se você assumir uma função usando o encadeamento e fornecer um valor de parâmetro `DurationSeconds` maior do que uma hora, a operação falhará.  
Para obter mais informações sobre como alternar entre perfis no Console de gerenciamento da AWS, consulte [Mudar de um usuário para um perfil do IAM (console)](id_roles_use_switch-role-console.md).

****Delegação****  
A concessão de permissões a alguém para permitir o acesso a recursos controlados por você. A delegação envolve estabelecer confiança entre duas contas. A primeira é a conta que possui o recurso (a conta de confiança). A segunda é a conta que contém os usuários que precisam acessar o recurso (a conta confiável). As contas confiável e de confiança podem ser qualquer uma das seguintes:  
+ A mesma conta.
+ Contas separadas que estão sob controle da sua organização.
+ Duas contas pertencentes a organizações diferentes.
Para delegar permissão para acessar um recurso, você [cria um perfil do IAM](id_roles_create_for-user.md) na conta de confiança com duas políticas anexadas. A *política de permissões* concede ao usuário da função as permissões necessárias para executar as tarefas pretendidas no recurso. A *política de confiança* especifica quais membros das contas confiáveis têm permissão para assumir a função.  
Ao criar uma política de confiança, você não pode especificar um curinga (\$1) como parte de um ARN no elemento de entidade principal. A política de confiança é anexada à função na conta de confiança e equivale à metade das permissões. A outra metade é uma política de permissões anexada ao usuário na conta confiável que [permite a ele alternar ou assumir a função](id_roles_use_permissions-to-switch.md). Um usuário que assume uma função temporariamente desiste de suas próprias permissões e, em vez disso, assume as permissões da função. Quando o usuário sai ou para de usar a função, as permissões originais do usuário são restauradas. Um parâmetro adicional chamado [ID externo](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id) ajuda a garantir o uso seguro de funções entre contas que não são controladas pela mesma organização.

****Política de confiança****  
Um [documento de política JSON](reference_policies_grammar.md) no qual você define os principais nos quais você *confia* para assumir a função. Uma política de confiança da função é uma [política com base em recurso](access_policies.md#policies_resource-based) necessária anexada a uma função no IAM. Os [principais](reference_policies_elements_principal.md) que podem ser especificados na política de confiança incluem usuários, funções, contas e serviços. Para obter mais informações, consulte [Como usar políticas de confiança em perfis do IAM](https://aws.amazon.com/blogs//security/how-to-use-trust-policies-with-iam-roles/) no *AWS Security Blog*.

****Função para acesso entre contas****  
Uma função que concede o acesso a recursos em uma conta a uma entidade principal confiável em outra conta. Os perfis são a principal forma de conceder acesso entre contas. No entanto, alguns dos serviços da AWS permitem que você anexe uma política diretamente a um recurso (em vez de usar uma função como proxy). Essas políticas são chamadas de políticas baseadas em recursos, e você pode usá-las para conceder acesso ao recurso para entidades principais em outra Conta da AWS. Alguns desses recursos incluem buckets do Amazon Simple Storage Service (S3), cofres do Amazon Glacier, tópicos do Amazon Simple Notification Service (SNS) e filas do Amazon Simple Queue Service (SQS). Para saber quais serviços oferecem suporte a políticas baseadas em recursos, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md). Para obter mais informações sobre políticas baseadas em recursos, consulte [Acesso a recursos entre contas no IAM](access_policies-cross-account-resource-access.md).

## Recursos adicionais
<a name="id_roles_additional-resources"></a>

Os seguintes recursos podem ajudar você a saber mais sobre a terminologia do IAM relacionada a perfis do IAM.
+ **Entidades principais** são entidades na AWS que podem executar ações e acessar recursos. Uma entidade principal pode ser um Usuário raiz da conta da AWS, um usuário do IAM ou um perfil. Uma entidade principal que representa a identidade de um serviço da AWS é uma [entidade principal de serviço](reference_policies_elements_principal.md#principal-services). Use o elemento Principal nas políticas de confiança do perfil para definir as entidades principais em que você confia para assumir o perfil.

   Para obter mais informações e exemplos de entidades principais que você pode permitir que assumam um perfil, consulte [Elementos da política JSON da AWS: Principal](reference_policies_elements_principal.md). 
+ A **federação de identidades** cria uma relação de confiança entre um provedor de identidades externo e a AWS. É possível usar seu provedor de OpenID Connect (OIDC) ou Security Assertion Markup Language (SAML) 2.0 existente para gerenciar quem pode acessar os recursos da AWS. Quando você usa o OIDC e o SAML 2.0 para configurar uma relação de confiança entre esses provedores de identidades externos e a AWS, o usuário é atribuído a um perfil do IAM. O usuário também recebe credenciais temporárias que permitem que ele acesse seus recursos da AWS.

  Para obter mais informações sobre entidades principais federadas, consulte [Federação e provedores de identidade na AWS](id_roles_providers.md).
+ **Entidades principais federadas** são identidades existentes do Directory Service, do diretório de usuários da sua empresa ou de um provedor OIDC. A AWS atribui um perfil a uma entidade principal federada quando o acesso é solicitado por meio de um [provedor de identidade](id_roles_providers.md).

  Para obter mais informações sobre as entidades principais federadas SAML e OIDC, consulte [Sessões de usuários federados e perfis](introduction_access-management.md#intro-access-roles).
+ As **políticas de permissões** são políticas baseadas em identidade que definem quais ações e recursos o perfil pode usar. O documento é criado de acordo com as regras da linguagem da política do IAM. 

  Para obter mais informações, consulte [Referência de política JSON do IAM](reference_policies.md).
+ Os **limites de permissões** são um recurso avançado em que você usa políticas para limitar as permissões máximas que uma política baseada em identidade pode conceder a uma função. Você não pode aplicar um limite de permissões a uma função vinculada ao serviço.

  Para obter mais informações, consulte [Limites de permissões para entidades do IAM](access_policies_boundaries.md).

# O problema "confused deputy"
<a name="confused-deputy"></a>

O problema "confused deputy" é um problema de segurança em que uma entidade que não tem permissão para executar uma ação pode coagir uma entidade mais privilegiada a executar a ação. Para evitar isso, a AWS fornece ferramentas que ajudam você a proteger sua conta se você fornecer acesso aos recursos na sua conta a terceiros (conhecido como *entre contas*) ou a outros serviços da AWS (conhecido como *entre serviços*).

Às vezes, poderá ser necessário conceder acesso aos recursos da AWS a terceiros (delegar acesso). Por exemplo, você decide contratar uma empresa terceirizada chamada Example Corp para monitorar sua Conta da AWS e ajudar a otimizar os custos. Para rastrear seus gastos diários, a Example Corp precisa de acesso aos seus recursos da AWS. A Example Corp também monitora muitas outras Contas da AWS para outros clientes. É possível usar um perfil do IAM para estabelecer uma relação de confiança entre sua Conta da AWS e a conta da Example Corp. Um aspecto importante desse cenário é o *ID externo*, um identificador opcional que você pode usar em uma política de confiança do perfil do IAM para designar quem pode assumir ao perfil. A função principal do ID externo é abordar e impedir o problema "confused deputy".

Alguns serviços (serviços de chamada) da AWS usam a entidade principal do serviço da AWS para acessar recursos da AWS de outros serviços da AWS (serviços chamados). Em algumas dessas interações de serviços, você pode configurar serviços de chamada para se comunicarem com os recursos de um serviço chamado em outra Conta da AWS. Um exemplo disso é configurar o AWS CloudTrail para gravar em um bucket central do Amazon S3 localizado em outra Conta da AWS. É concedido ao serviço de chamadas CloudTrail acesso ao bucket do S3 usando a política de bucket do S3 por meio da adição de uma instrução de permissão para `cloudtrail.amazonaws.com`.

Quando uma entidade principal de serviço da AWS de um serviço de chamada está acessando um recurso de um serviço chamado, a política de recursos do serviço chamado está autorizando somente a entidade principal do serviço AWS, e não o ator que configurou o serviço de chamada. Por exemplo, um bucket do S3 que confia na entidade principal do serviço CloudTrail sem condições pode receber logs do CloudTrail das Contas da AWS configuradas por um administrador confiável, mas também logs do CloudTrail de um agente não autorizado em sua Conta da AWS, se ele souber o nome do bucket do Amazon S3.

O problema "confused deputy" surge quando um ator usa a confiança de uma entidade principal de um serviço da AWS para obter acesso a recursos aos quais não deveria ter acesso.

## Prevenção de "confused deputy" entre contas
<a name="mitigate-confused-deputy"></a>

O diagrama a seguir ilustra o problema "confused deputy" entre contas.

![\[A descrição de um problema "confused deputy"\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/confuseddeputyproblem2.png)


Este cenário supõe o seguinte:
+ **AWS1** é a sua Conta da AWS.
+ **AWS1:ExampleRole** é uma função em sua conta. Esta política de confiança da função confia na Example Corp especificando a conta da AWS da Example Corp como a conta que pode assumir a função.

Veja o que acontece:

1. Ao começar a usar o serviço da Exemplo Corp, você fornece o ARN **AWS1:ExampleRole** à Exemplo Corp.

1. A Example Corp usa esse ARN de perfil para obter credenciais de segurança temporárias para acessar recursos na sua Conta da AWS. Dessa forma, confie na Example Corp como um "substituto" que pode agir em seu nome.

1. Outro cliente da AWS também começa a usar os serviços da Exemplo Corp e também fornece o ARN **AWS1:ExampleRole** para a Exemplo Corp usar. Provavelmente, o outro cliente soube ou adivinhou o **AWS1:ExampleRole**, que não é um segredo.

1. Quando o outro cliente pede à Exemplo Corp que acesse os recursos da AWS (o que ele afirma ser) em sua conta, a Exemplo Corp usa **AWS1:ExampleRole** para acessar os recursos da sua conta.

Dessa forma, o outro cliente pode obter acesso não autorizado aos seus recursos. Como esse outro cliente foi capaz de burlar a Example Corp para agir involuntariamente em seus recursos, a Example Corp agora é um "confused deputy."

A Example Corp pode abordar o problema "confused deputy" exigindo que você inclua a verificação de condição `ExternalId` na política de confiança da função. A Example Corp gera um único valor de `ExternalId` para cada cliente e usa esse valor em sua solicitação para assumir a função. O valor de `ExternalId` deve ser exclusivo entre os clientes da Example Corp e controlado pela Example Corp, não por seus clientes. É por isso que ele é fornecido pela Example Corp e não é criado por você. Isso impede que a Example Corp seja um "confused deputy" e conceda acesso a recursos da AWS de outra conta.

Em nosso cenário, imagine que seu identificador exclusivo da Example Corp seja 12345 e que o identificador do outro cliente seja 67890. Esses identificadores são simplificados para esse cenário. Em geral, esses identificadores são GUIDs. Supondo que esses identificadores sejam exclusivos entre os clientes da Example Corp, eles são valores confidenciais próprios para o ID externo. 

A Example Corp atribui o valor do ID externo "12345" a você. É necessário adicionar um elemento `Condition` à política de confiança do perfil que exija que o valor [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#condition-keys-sts](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#condition-keys-sts) seja 12345, da seguinte forma:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {
      "AWS": "Example Corp's AWS Account ID"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "StringEquals": {
        "sts:ExternalId": "12345"
      }
    }
  }
}
```

------

O elemento Condition (Condição) dessa política só permite que a Example Corp assuma a função quando a chamada de API AssumeRole incluir o valor do ID externo 12345. A Example Corp garante que sempre que assumir uma função em nome de um cliente, incluirá o valor do ID externo desse cliente em uma chamada AssumeRole. Mesmo que outro cliente forneça seu ARN à Example Corp, ele não poderá controlar o ID externo que a Example Corp inclui em sua solicitação para a AWS. Isso ajuda a evitar que um cliente não autorizado tenha acesso aos seus recursos.

O diagrama a seguir ilustra isso.

![\[Como mitigar um problema "confused deputy".\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/confuseddeputymitigation2.png)


1. Como antes, ao começar a usar o serviço da Exemplo Corp, você fornece o ARN **AWS1:ExampleRole** à Exemplo Corp.

1.  Quando a Exemplo Corp usa esse ARN de perfil para assumir a função **AWS1:ExampleRole**, ela inclui o ID externo (12345) na chamada de API AssumeRole. O ID externo corresponde à política de confiança da perfil e, portanto, a chamada de API AssumeRole tem êxito, e a Example Corp obtém credenciais de segurança temporárias para acessar recursos na sua Conta da AWS.

1. Outro cliente da AWS também começa a usar os serviços da Exemplo Corp e, assim como antes, esse cliente também fornece o ARN **AWS1:ExampleRole** para a Exemplo Corp usar. 

1. Mas, desta vez, quando a Exemplo Corp tenta assumir a função **AWS1:ExampleRole**, ela fornece o ID externo associado a outro cliente (67890). O outro cliente não tem como alterar isso. A Example Corp faz isso porque a solicitação para usar a função veio de outro cliente, portanto, 67890 indica a circunstância em que a Example Corp está atuando. Como você adicionou uma condição com seu próprio ID externo (12345) à política de confiança de **AWS1:ExampleRole**, a chamada de API AssumeRole não vai funcionar. O outro cliente será impedido de obter o acesso não autorizado aos recursos na sua conta (indicado pelo "X" vermelho no diagrama).

O ID externo ajuda a prevenir que qualquer outro cliente engane a Example Corp a acessar seus recursos involuntariamente.

## Prevenção do problema "confused deputy" entre serviços
<a name="cross-service-confused-deputy-prevention"></a>

O diagrama a seguir demonstra o problema "confused deputy" entre serviços usando o exemplo de interação entre o CloudTrail e o Amazon S3, em que um ator não autorizado grava logs do CloudTrail em um bucket do Amazon S3 ao qual não está autorizado a ter acesso.

![\[Um ator não autorizado recebe acesso a um bucket do Amazon S3 em outra conta usando a entidade principal do serviço do CloudTrail.\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/cross-service-confused-deputy1.png)


Para ajudar a evitar que um ator não autorizado use a confiança de uma entidade principal da AWS para obter acesso aos seus recursos, as entidades principais de serviços da AWS incluem informações sobre o recurso da AWS, a Conta da AWS e a organização da AWS em nome dos quais estão agindo.

Essas informações estão disponíveis em valores-chave de condições globais que podem ser usados em uma política de recursos ou política de controle de recursos para solicitações feitas pelas entidades principais de serviços da AWS. Recomendamos usar [aws:SourceArn](reference_policies_condition-keys.md#condition-keys-sourcearn), [aws:SourceAccount](reference_policies_condition-keys.md#condition-keys-sourceaccount), [aws:SourceOrgID](reference_policies_condition-keys.md#condition-keys-sourceorgid) ou [aws:SourceOrgPaths](reference_policies_condition-keys.md#condition-keys-sourceorgpaths) nas políticas de recursos sempre que uma entidade principal de serviço da AWS receber permissão para acessar um dos seus recursos. Essas chaves de condição permitem que você teste nas políticas de recursos ou nas políticas de controle de recursos se as entidades principais de serviços da AWS que acessam os recursos estão fazendo isso em nome dos recursos da AWS, das Contas da AWS ou do AWS Organizations que você espera.
+ Use `aws:SourceArn` para permitir que uma entidade principal de serviço da AWS acesse os recursos em nome de um recurso específico, como uma trilha do AWS CloudTrail específica ou uma frota do AppStream.
+ Use `aws:SourceAccount` para permitir que uma entidade principal de serviço da AWS acesse os recursos em nome de uma Conta da AWS específica.
+ Use `aws:SourceOrgID` para permitir que a entidade principal de um serviço da AWS acesse os seus recursos em nome de determinadas AWS Organizations.
+ Use `aws:SourceOrgPaths` para permitir que uma entidade principal de serviço da AWS acesse os recursos em nome de um caminho do AWS Organizations específico.

O diagrama a seguir demonstra o cenário de "confused deputy" entre serviços quando um recurso é configurado com a chave de contexto de condição global `aws:SourceAccount`, e um ator não autorizado de outra conta tenta acessar recursos da AWS aos quais não deveria ter acesso.

![\[Um ator não autorizado tem o acesso negado a um bucket do Amazon S3 em outra conta usando a entidade principal do serviço do CloudTrail.\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/cross-service-confused-deputy2.png)


Usar as chaves de condição global `aws:SourceArn`, `aws:SourceAccount`, `aws:SourceOrgID` e `aws:SourceOrgPaths` em uma política ajuda a garantir que as entidades principais de serviços estejam acessando os recursos em seu nome. Recomendamos usar essas chaves de condição sempre que o acesso a um de seus recursos for concedido a uma entidade principal de serviço da AWS. 

**nota**  
Algumas interações de AWS service (Serviço da AWS) têm controles adicionais para ajudar a proteger contra problemas "confused deputy" entre serviços que testam o acesso de usuários a um recurso. Por exemplo, quando uma concessão de chave do KMS é emitida para um AWS service (Serviço da AWS), o AWS KMS usa o contexto de criptografia associado ao recurso e a concessão de chave para ajudar a proteger contra problemas "confused deputy" entre serviços.  
Consulte a documentação dos serviços que você usa para obter mais informações sobre os mecanismos específicos dos serviços que podem ajudar a evitar os riscos de "confused deputy" entre serviços e se `aws:SourceArn`, `aws:SourceAccount`, `aws:SourceOrgID` e `aws:SourceOrgPaths` são compatíveis.

## Proteção contra "confused deputy" entre serviços com políticas baseadas em recursos
<a name="cross-service-confused-deputy-prevention-resource"></a>

O exemplo de política a seguir concede à entidade principal de serviço `cloudtrail.amazonaws.com` acesso ao bucket do Amazon S3, arn:aws:s3:::amzn-s3-demo-bucket1, somente quando a entidade principal de serviço está agindo em nome da Conta da AWS 111122223333.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CloudTrailAclCheck",
            "Effect": "Allow",
            "Principal": {"Service": "cloudtrail.amazonaws.com"},
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                }
            }
        },
        {
            "Sid": "AWSCloudTrailWrite",
            "Effect": "Allow",
            "Principal": {"Service": "cloudtrail.amazonaws.com"},
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/[optionalPrefix]/Logs/myAccountID/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

------

Esse exemplo de política de bucket concede à entidade principal de serviço `appstream.amazonaws.com` acesso ao script do PowerShell examplefile.psh em s3://amzn-s3-demo-bucket2 somente quando ele está agindo em nome da frota especificada do Amazon AppStream, especificando o ARN da frota com `aws:SourceArn`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "appstream.amazonaws.com"
                ]
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket2/examplefile.psh",
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:appstream:us-east-1:111122223333:fleet/ExampleFleetName"
                } 
            }
        }
    ]
}
```

------

## Proteção contra "confused deputy" entre serviços com políticas de controle de recursos
<a name="cross-service-confused-deputy-prevention-resource-control"></a>

Você pode usar políticas de controle de recursos (RCP) para aplicar controles contra "confused deputy" entre serviços aos recursos de Serviços da AWS compatíveis. As RCPs permitem que você aplique de forma centralizada controles contra "confused deputy" entre serviços em seus recursos. Você pode usar chaves de condição como `aws:SourceOrgId` e `aws:SourceOrgPaths` com RCPs anexadas ao AWS Organizations, a unidades organizacionais (OU) ou a Contas da AWS em sua organização sem adicionar instruções a políticas específicas baseadas em recursos. Para obter mais informações sobre RCPs e serviços compatíveis, consulte [Políticas de Controle de Recursos (RCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) no *Guia do usuário do AWS Organizations*.

O exemplo a seguir de RCP nega às entidades principais de serviço da AWS o acesso aos buckets do Amazon S3 nas contas de membros quando `aws:SourceOrgID` não é igual a o-ExampleOrg. Uma permissão correspondente deve estar presente na política baseada em recursos do bucket do Amazon S3 para permitir as entidades principais do AWS service (Serviço da AWS) com um `SourceOrgID` igual a o-ExampleOrg.

Essa política aplica o controle somente nas solicitações das entidades principais de serviço (`"Bool": {"aws:PrincipalIsAWSService": "true"}`) que tenham a chave `aws:SourceAccount` presente (`"Null": {"aws:SourceAccount": "false"}`), de modo que as integrações de serviços que não exijam o uso da chave de condição e as chamadas pelas entidades principais não sejam afetadas. Se a chave de condição `aws:SourceAccount` estiver presente no contexto da solicitação, a condição de anulação será avaliada como true, fazendo com que `aws:SourceOrgID` seja aplicada. Usamos `aws:SourceAccount` em vez de `aws:SourceOrgID` no operador de condição de anulação para que o controle ainda se seja aplicado caso a solicitação se origine de uma conta que não pertença a uma organização.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RCPEnforceConfusedDeputyProtectionForS3",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:*"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:SourceOrgID": "o-ExampleOrg"
        },
        "Null": {
          "aws:SourceAccount": "false"
        },
        "Bool": {
          "aws:PrincipalIsAWSService": "true"
        }
      }
    }
  ]
}
```

------

# Cenários comuns para perfis do IAM
<a name="id_roles_common-scenarios"></a>

Assim como ocorre com a maioria dos recursos da AWS, você geralmente tem duas maneiras de usar uma função: interativamente no console do IAM ou de forma programática com a AWS CLI, o Tools for Windows PowerShell ou a API.
+ Os usuários do IAM na sua conta que estiverem usando o console do IAM podem *mudar para* uma função para usarem, temporariamente, as permissões da função no console. Os usuários cedem suas permissões originais e assumem as permissões atribuídas à função. Quando os usuários saem da função, suas permissões originais são restauradas.
+ Uma aplicação ou um serviço oferecido pela AWS (como o Amazon EC2) pode *assumir* uma função ao solicitar credenciais de segurança temporárias para uma função com as quais faça solicitações, de forma programática, para a AWS. Use uma função dessa forma para que você não precise compartilhar ou manter credenciais de segurança de longo prazo (por exemplo, criando um usuário do IAM) para cada entidade que necessite de acesso a um recurso.

**nota**  
Esse guia usa as frases *mudar para uma função* e *assumir uma função* de forma intercambiável.

A maneira mais simples de usar perfis é conceder aos seus usuários do IAM permissões para mudar para os perfis que você cria dentro da sua própria conta ou em outra Conta da AWS. Eles podem mudar de funções facilmente usando o console do IAM para usar permissões que você normalmente não deseja que eles tenham e, depois, sair da função para devolver essas permissões. Isso pode ajudar a impedir o acesso *acidental* ou a modificação de recursos confidenciais.

Para obter mais utilizações complexas de funções, como concessão de acesso a aplicativos e serviços ou usuários externos federados, chame a API `AssumeRole`. Essa chamada de API retorna um conjunto de credenciais temporárias que o aplicativo pode usar em chamadas de API subsequentes. Ações executadas com as credenciais temporárias têm apenas as permissões concedidas pela função associada. Um aplicativo não precisa "sair" de uma função da mesma forma que um usuário no console; em vez disso, o aplicativo simplesmente é interrompido usando as credenciais temporárias e continua fazendo chamadas com as credenciais originais.

Os usuários federados fazem login usando credenciais de um provedor de identidade (IdP). A AWS fornece credenciais temporárias ao IdP confiável para serem transmitidas ao usuário e incluídas em solicitações de recursos subsequentes da AWS. Essas credenciais fornecem as permissões concedidas para a função atribuída.

Essa seção fornece uma visão geral dos seguintes cenários:
+ [Fornecer acesso para um usuário do IAM em uma Conta da AWS que você possui para acessar recursos em outra conta que você possui](id_roles_common-scenarios_aws-accounts.md)
+ [Fornecer acesso a workloads que não são da AWS](id_roles_common-scenarios_non-aws.md)
+ [Fornecer acesso a usuários do IAM em Contas da AWS de terceiros](id_roles_common-scenarios_third-party.md)
+ [Fornecer acesso para serviços oferecidos pela AWS para recursos da AWS](id_roles_common-scenarios_services.md)
+ [Fornecer acesso aos usuários autenticados externamente (federação de identidades)](id_roles_common-scenarios_federated-users.md)

# Acesso a um usuário do IAM em outra Conta da AWS de sua propriedade
<a name="id_roles_common-scenarios_aws-accounts"></a>

Você pode conceder aos usuários do IAM permissões para alternar para perfis na sua Conta da AWS ou para perfis definidos em outras Contas da AWS que você possui. 

**nota**  
Se deseja conceder acesso a uma conta que você não possui ou controla, veja [Acesso às Contas da AWS de propriedade de terceiros](id_roles_common-scenarios_third-party.md) mais adiante neste tópico. 

Imagine que você tenha instâncias do Amazon EC2 que são críticas para sua organização. Em vez de conceder diretamente aos usuários permissão para encerrar as instâncias, você pode criar uma função com esses privilégios. Em seguida, permita que os administradores alternem para a função quando eles precisam encerrar uma instância. Isso adiciona as seguintes camadas de proteção para as instâncias:
+ É necessário conceder explicitamente aos usuários permissão para assumir a função.
+ Os usuários devem alternar ativamente para a função usando o Console de gerenciamento da AWS ou assumir a função usando a AWS CLI ou a API da AWS.
+ Você pode adicionar a proteção de autenticação multifator (MFA) à função para que somente os usuários que fizerem login com um dispositivo MFA possam assumir a função. Para saber como configurar uma função de maneira que os usuários que assumem a função precisem primeiro ser autenticados usando a autenticação multifator (MFA), consulte [Acesso seguro à API com a MFA](id_credentials_mfa_configure-api-require.md).

Recomendamos usar essa abordagem para aplicar o *princípio do privilégio mínimo*. Isso significa restringir o uso de permissões elevadas para apenas quando elas forem necessárias para tarefas específicas. Com as funções, você pode ajudar a evitar alterações acidentais em ambientes confidenciais, especialmente se você combiná-las com uma [auditoria](cloudtrail-integration.md) para ajudar a garantir que as funções sejam usadas apenas quando necessário.

Quando cria uma função com esse propósito, você especifica as contas pelo ID cujos usuários precisam de acesso no elemento `Principal` da política de confiança da função. Depois, você pode conceder permissões a usuários específicos nessas outras contas para alternar para a função. Para saber se as entidades de contas fora de sua zona de confiança (organização confiável ou conta) têm acesso para assumir as suas funções, consulte [O que é o IAM Access Analyzer?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html).

Um usuário em uma conta pode alternar para uma função na mesma conta ou em uma diferente. Ao usar a função, o usuário pode executar somente as ações e acessar somente os recursos permitidos pela função; as permissões originais do usuário são suspensas. Quando o usuário fecha a função, as permissões originais do usuário são restauradas.

## Cenário de exemplo que usa contas separadas de desenvolvimento e produção
<a name="id_roles_common-scenarios_aws-accounts-example"></a>

Imagine que sua organização tenha várias Contas da AWS para isolar um ambiente de desenvolvimento de um ambiente de produção. Os usuários na conta de desenvolvimento podem precisar acessar os recursos na conta de produção. Por exemplo, você pode precisar de acesso entre contas ao promover uma atualização do ambiente de desenvolvimento para um ambiente de produção. Embora você pudesse criar identidades (e senhas) separadas para os usuários que trabalham nas duas contas, gerenciar credenciais para várias contas dificulta o gerenciamento de identidades. Na figura a seguir, todos os usuários são gerenciados na conta de desenvolvimento, mas alguns desenvolvedores exigem acesso limitado à conta de produção. A conta de desenvolvimento tem dois grupos: os testadores e os desenvolvedores, e cada grupo tem sua própria política.

![\[Use uma função para delegar permissões para um usuário em uma conta diferente\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/roles-usingroletodelegate.png)


1. Na conta de produção, um administrador usa o IAM para criar a função `UpdateApp` nessa conta. Na função, o administrador define uma política de confiança que especifica a conta de desenvolvimento como `Principal`, o que significa que usuários autorizados da conta de desenvolvimento podem usar a função `UpdateApp`. O administrador também define uma política de permissões para a função que especifica as permissões de leitura e gravação para o bucket do Amazon S3 denominado `productionapp`.

   O administrador acaba compartilhando as informações apropriadas com qualquer pessoa que precise assumir a função. Essas informações são o número da conta e o nome da função (para usuários do console da AWS) ou o Amazon Resource Name (ARN) (para acesso à AWS CLI ou à API da AWS). O ARN da função pode ser semelhante a `arn:aws:iam::123456789012:role/UpdateApp`, em que a função se chama `UpdateApp` e foi criada na conta de número 123456789012.
**nota**  
O administrador pode optar por configurar a função para que os usuários que assumirem a função precisem primeiro ser autenticados usando a autenticação multifator (MFA). Para obter mais informações, consulte [Acesso seguro à API com a MFA](id_credentials_mfa_configure-api-require.md). 

1. Na conta de desenvolvimento, um administrador concede aos membros do grupo de desenvolvedores permissão para alternar para a função. Isso é feito ao conceder ao grupo de desenvolvedores a permissão para chamar a API AWS Security Token Service do AWS STS (`AssumeRole`) para a função `UpdateApp`. Qualquer usuário do IAM que pertença ao grupo de desenvolvedores na conta de desenvolvimento agora pode alternar para a função `UpdateApp` na conta de produção. Outros usuários que não estão no grupo de desenvolvedor não têm permissão para alternar para a função e, portanto, não podem acessar o bucket do S3 na conta de produção.

1. As solicitações do usuário alternam para a função:
   + Console da AWS: O usuário escolhe o nome da conta na barra de navegação e escolhe **Mudar de função**. O usuário especifica o ID da conta (ou alias) e o nome da função. Como alternativa, o usuário pode clicar em um link enviado por e-mail pelo administrador. O link leva o usuário para a página **Alternar função** com os detalhes já preenchidos.
   + API da AWS/AWS CLI : Um usuário no grupo de desenvolvedores da conta de desenvolvimento chama a função `AssumeRole` para obter credenciais para a função `UpdateApp`. O usuário especifica o ARN da função `UpdateApp` como parte da chamada. Se um usuário no grupo de testadores faz a mesma solicitação, a solicitação falha porque os testadores não têm permissão para chamar `AssumeRole` para o ARN da função `UpdateApp`.

1. AWS STSO retorna credenciais temporárias:
   + Console da AWS: o AWS STS verifica a solicitação com a política de confiança da função para garantir que a solicitação é de uma entidade confiável (que é a conta de desenvolvimento). Após a verificação, o AWS STS retorna as [credenciais de segurança temporárias](https://docs.aws.amazon.com/STS/latest/UsingSTS/Welcome.html) ao console da AWS.
   + API/CLI: o AWS STS verifica a solicitação em relação à política de confiança da função para garantir que a solicitação é de uma entidade confiável (que é a conta de desenvolvimento). Após a verificação, o AWS STS retorna as [credenciais de segurança temporárias](https://docs.aws.amazon.com/STS/latest/UsingSTS/Welcome.html) ao aplicativo.

1. As credenciais temporárias permitem acesso aos recursos da AWS:
   + Console da AWS: o console da AWS usa as credenciais temporárias em nome do usuário para todas as ações subsequentes do console, nesse caso, para ler e gravar no bucket `productionapp`. O console não pode acessar qualquer outro recurso na conta de produção. Quando o usuário fecha a função, as permissões do usuário revertem para as permissões mantidas antes de alternar para a função.
   + API/CLI: o aplicativo usa as credenciais de segurança temporárias para atualizar o bucket `productionapp`. Com as credenciais de segurança temporárias, o aplicativo só poderá ler e gravar no bucket `productionapp` e não poderá acessar qualquer outro recurso na conta de produção. O aplicativo não tem que sair da função, mas, em vez disso, interromper o uso de credenciais temporárias e usar as credenciais nas chamadas de API subsequentes.

## Recursos adicionais
<a name="id_roles_common-scenarios_more-info"></a>

Para saber mais, consulte:
+ [Tutorial do IAM: Delegar acesso entre contas da AWS usando funções do IAM](tutorial_cross-account-with-roles.md)

# Acesso para workloads que não sejam da AWS
<a name="id_roles_common-scenarios_non-aws"></a>

Um [perfil do IAM](id_roles.md) é um objeto no AWS Identity and Access Management (IAM) que recebe [permissões](access_policies.md). Quando você [assume esse perfil](id_roles_manage-assume.md) usando uma identidade do IAM ou uma identidade de fora da AWS, credenciais de segurança temporárias são fornecidas para sua sessão de perfil. Você pode ter workloads em execução em seu data center ou em outra infraestrutura fora da AWS que precisem acessar seus recursos da AWS. Em vez de criar, distribuir e gerenciar chaves de acesso de longo prazo, você pode usar o AWS Identity and Access Management Roles Anywhere (IAM Roles Anywhere) para autenticar suas workloads que não são da AWS. O IAM Roles Anywhere usa certificados X.509 de sua autoridade de certificação (CA) para autenticar identidades e fornecer acesso seguro aos Serviços da AWS com as credenciais temporárias fornecidas por um perfil do IAM.

**Para usar o IAM Roles Anywhere**

1. Configure uma CA usando o [Autoridade de Certificação Privada da AWS](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html) ou use uma CA de sua própria infraestrutura de PKI.

1. Depois de configurar uma CA, crie um objeto no IAM Roles Anywhere chamado *âncora de confiança*. Essa âncora estabelece confiança entre o IAM Roles Anywhere e sua CA para autenticação.

1. Em seguida, você pode configurar seus perfis existentes do IAM ou criar novos perfis que confiam no serviço do IAM Roles Anywhere.

1. Autentique suas workloads não AWS com o IAM Roles Anywhere usando a âncora de confiança. A AWS concede credenciais temporárias às workloads que não sejam da AWS para o perfil do IAM que tem acesso aos seus recursos da AWS.

## Recursos adicionais
<a name="id_roles_non-aws_additional_resources"></a>

Os recursos a seguir podem ajudar você a saber mais sobre como fornecer acesso a workloads que não sejam da AWS.
+ Para obter mais informações sobre como configurar o IAM Roles Anywhere, consulte [O que é o AWS Identity and Access Management Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html) no *Guia do usuário do IAM Roles Anywhere*.
+ Para saber como configurar a infraestrutura de chave pública (PKI) para o IAM Roles Anywhere, consulte [IAM Roles Anywhere with an external certificate authority](https://aws.amazon.com/blogs/) no *Blog de segurança da AWS*.

# Acesso às Contas da AWS de propriedade de terceiros
<a name="id_roles_common-scenarios_third-party"></a>

Quando terceiros precisam de acesso a recursos da AWS da sua organização, você pode usar funções para delegar acesso a eles. Por exemplo, um terceiro pode fornecer um serviço para gerenciar seus recursos da AWS. Com funções do IAM, você pode conceder a esses terceiros acesso aos seus recursos da AWS sem compartilhar suas credenciais de segurança da AWS. Em vez disso, os terceiros podem acessar seus recursos da AWS assumindo um perfil que você cria na sua Conta da AWS. Para saber se as entidades de contas fora de sua zona de confiança (organização confiável ou conta) têm acesso para assumir as suas funções, consulte [O que é o IAM Access Analyzer?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html).

Esses terceiros devem fornecer as seguintes informações para criar uma função que eles podem assumir:
+ **O ID da Conta da AWS do terceiro**. Você especifica o ID da Conta da AWS dele como a entidade principal ao definir a política de confiança para o perfil.
+ **Um ID externo a ser associado de forma exclusiva ao perfil.** O ID externo pode ser qualquer identificador secreto conhecido apenas por você e pelo terceiro. Por exemplo, você pode usar um ID da fatura entre você e o terceiro, mas não use algo que possa ser adivinhado, como o nome ou o número de telefone do terceiro. Você deve especificar esse ID ao definir a política de confiança para a função. O terceiro deve fornecer esse ID quando assumir a função.
+ **As permissões de que terceiros precisam para trabalhar com seus recursos da AWS**. Você deve especificar essas permissões ao definir a política de permissões da função. Essa política define quais ações podem ser tomadas e quais recursos podem ser acessados.

Depois de criar a função, você deve fornecer o nome de recurso da Amazon (ARN) ao terceiro. Eles requerem o ARN de sua função para assumir a função.

**Importante**  
Quando você concede a terceiros acesso aos seus recursos da AWS, eles podem acessar qualquer recurso que você especifique na política. O uso de seus recursos é cobrado de você. Certifique-se de limitar o uso de seus recursos de forma apropriada.

## ID externos para acesso de terceiros
<a name="id_roles_third-party_external-id"></a>

Um ID externo permite que o usuário que está assumindo o perfil assegure as circunstâncias nas quais elas operam. Também oferece uma forma para o proprietário da conta permitir que a função seja assumida apenas em determinadas circunstâncias. A função principal do ID externo é abordar e impedir o [O problema "confused deputy"](confused-deputy.md).

**Importante**  
AWSA não trata o ID externo como um segredo. Depois de criar um segredo, como um par de chaves de acesso ou uma senha na AWS, você não poderá visualizá-las novamente. O ID externo de uma função pode ser visto por qualquer pessoa com permissão para visualizar a função. 

## Quando devo usar um ID externo?
<a name="external-id-use"></a>

Use um ID externo nas seguintes situações:
+ Você é proprietário de uma Conta da AWS e configurou uma perfil para um terceiro que acessa outras Contas da AWS além da sua. Você deve solicitar um ID externo ao terceiro que ele inclui quando assume a sua função. Depois, você verifica o ID externo na política de confiança da sua função. Isso garante que o terceiro externo possa assumir sua função somente quando estiver agindo em seu nome.
+ Você está na posição de assumir funções em nome de clientes diferentes, como a Example Corp em nosso cenário anterior. Você deve atribuir um ID externo exclusivo para cada cliente e instruí-los a adicionar o ID externo à política de confiança de sua função. Certifique-se de sempre incluir o ID externo correto em suas solicitações para assumir funções.

  Provavelmente, você já tem um identificador exclusivo para cada um de seus clientes e esse ID exclusivo será suficiente para ser usado como ID externo. O ID externo não é um valor especial que você precisa criar, explicitamente, ou rastrear, separadamente, apenas para essa finalidade.

  Sempre especifique o ID externo em suas chamadas de API `AssumeRole`. Quando um cliente oferecer a você um ARN da função, teste se você poderá assumir a função com e sem o ID externo correto. Se você assumir a função sem o ID externo correto, não armazene o ARN da função do cliente em seu sistema. Aguarde até que o cliente tenha atualizado a política de confiança de função para exigir o ID externo correto. Dessa forma, você ajudará seus clientes a agir da forma correta, mantendo-os protegidos contra o problema confused deputy.

## Exemplo de cenário usando um ID externo
<a name="id_roles_third-party_example"></a>

Por exemplo, suponha que você decida contratar uma empresa terceirizada chamada Example Corp para monitorar sua Conta da AWS e ajudar a otimizar os custos. Para rastrear seus gastos diários, a Example Corp precisa de acesso aos seus recursos da AWS. A Example Corp também monitora muitas outras contas da AWS para outros clientes.

Não dê à Exemplo Corp acesso a um usuário do IAM e suas credenciais de longo prazo na sua conta da AWS. Em vez disso, use uma função do IAM e suas credenciais de segurança temporárias. Um perfil do IAM fornece um mecanismo que permite o acesso de terceiros aos recursos da AWS sem a necessidade de compartilhar credenciais de longo prazo (como uma chave de acesso de usuário do IAM).

Você pode usar um perfil do IAM para estabelecer uma relação de confiança entre sua Conta da AWS e a conta da Example Corp. Depois que esse relacionamento for estabelecido, um membro da conta Exemplo Corp pode chamar a API [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) do AWS Security Token Service para obter credenciais de segurança temporárias. Os membros da Example Corp podem usar as credenciais para acessar recursos da AWS na sua conta. 

**nota**  
Para obter mais informações sobre AssumeRole e outras APIs da AWS que você pode chamar para obter credenciais de segurança temporárias, consulte [Compare credenciais do AWS STS](id_credentials_sts-comparison.md).

Veja aqui um detalhamento desse cenário:

1. Contrate a Example Corp, para que eles criem um identificador de clientes exclusivo para você. Eles fornecerão o ID de cliente exclusivo e o número da Conta da AWS deles. Essas informações são necessárias para criar uma função do IAM na próxima etapa. 
**nota**  
A Example Corp pode usar qualquer valor de string que desejar para o ExternalId, desde que seja exclusivo para cada cliente. Pode ser o número da conta de um cliente ou até mesmo uma string aleatória de caracteres, desde que dois clientes não tenham o mesmo valor. Isso não deve ser um "segredo". A Example Corp deve fornecer o valor do ExternalId para cada cliente. O essencial é que ele deve ser gerado pela Example Corp e ***não*** pelos clientes dela para garantir que cada ID externo seja exclusivo.

1. Faça login na AWS e crie uma função do IAM que dê à Exemplo Corp acesso aos seus recursos. Como qualquer função do IAM, a função tem duas políticas, uma política de permissão e uma política de confiança. A política de confiança da função especifica quem pode assumir a função. Em nosso cenário de exemplo, a política especifica o número de Conta da AWS da Example Corp como `Principal`. Isso permite que as identidades dessa conta assumam a função. Além disso, você adiciona um elemento `[Condition](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Condition)` à política de confiança. Esse elemento `Condition` testa a chave de contexto `ExternalId` para garantir que ela corresponda ao ID do cliente exclusivo da Example Corp. Por exemplo:

   ```
       "Principal": {"AWS": "Example Corp's Conta da AWS ID"},
       "Condition": {"StringEquals": {"sts:ExternalId": "Unique ID Assigned by Example Corp"}}
   ```

1. A política de permissões da função especifica o que a função permite que alguém faça. Por exemplo, você pode especificar que a função permita que alguém gerencie apenas seus recursos do Amazon EC2 e Amazon RDS, mas não seus usuários ou grupos do IAM. Em nosso cenário de exemplo, use a política de permissões para dar acesso somente leitura à Example Corp a todos os recursos na sua conta.

1. Depois de criar a função, forneça o nome de recurso da Amazon (ARN) da função à Example Corp.

1. Quando a Exemplo Corp precisar acessar seus recursos da AWS, alguém da empresa chamará a API `sts:AssumeRole` da AWS. A chamada inclui o ARN da função a ser assumida e o parâmetro ExternalId que corresponde ao ID do cliente.

Se a solicitação vier de alguém que estiver usando a Conta da AWS da Example Corp, e se o ARN do perfil e o ID externo estiverem corretos, a solicitação será bem-sucedida. Nesse caso, ela fornecerá credenciais de segurança temporárias que a Example Corp poderá usar para acessar os recursos da AWS permitidos pela sua função.

Em outras palavras, quando uma política de função incluir um ID externo, qualquer pessoa que desejar assumir a função deverá ser especificada como um principal na função e deverá incluir o ID externo correto.

## Pontos-chave para IDs externos
<a name="id_roles_third-party_key-points"></a>
+ Em um ambiente de vários locatários onde você oferece suporte a vários clientes com AWS contas diferentes, recomendamos usar um ID externo por Conta da AWS. Esse ID deve ser uma string aleatória gerada por um terceiro.
+ Para exigir que o terceiro forneça um ID externo ao assumir uma função, atualize a política de confiança da função com o ID externo de sua escolha.
+ Para fornecer um ID externo quando você assumir uma função, use a AWS CLI ou a API da AWS para assumir essa função. Para obter mais informações, consulte a operação da API STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) ou a operação da CLI [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) STS.
+ O valor `ExternalId` deve ter no mínimo 2 e no máximo 1.224 caracteres. O valor deve ser alfanumérico sem espaço em branco. Ele também pode incluir os seguintes símbolos: mais (\$1), igual (=), vírgula (,), ponto (.), arroba (@), dois pontos (:), barra (/) e hífen (-).

## Recursos adicionais
<a name="id_roles_third-party_additional_resources"></a>

Os seguintes recursos podem ajudar você a saber mais sobre como fornecer acesso a Contas da AWS de terceiros.
+ Para saber mais sobre como permitir que outras pessoas realizem ações na sua Conta da AWS, consulte [Criar um perfil usando políticas de confiança personalizadas](id_roles_create_for-custom.md).
+ Para saber mais sobre como conceder permissão para alternar para um perfil, consulte [Conceder permissões a um usuário para alternar perfis](id_roles_use_permissions-to-switch.md)
+ Para saber mais sobre como criar e fornecer credenciais de segurança temporárias aos usuários confiáveis, [Permissões de credenciais de segurança temporárias](id_credentials_temp_control-access.md).

# Acesso a um serviço da AWS
<a name="id_roles_common-scenarios_services"></a>

Muitos serviços da AWS exigem que você use funções para controlar o que esse serviço pode acessar. A [função de serviço](id_roles.md#iam-term-service-role) é uma função que um serviço assume para realizar ações em seu nome. Quando uma função atende a uma finalidade especializada para um serviço, ela pode ser categorizada como uma [função vinculada ao serviço](id_roles.md#iam-term-service-linked-role). Consulte a [documentação da AWS](https://docs.aws.amazon.com/) de cada serviço para ver se ele usa funções e saber como atribuir uma função ao serviço a ser usado.

Para obter detalhes sobre a criação de uma função para delegar acesso a um serviço oferecido pela AWS, consulte [Criar um perfil para delegar permissões a um serviço da AWS](id_roles_create_for-service.md).

# Acesso aos usuários autenticados externamente (federação de identidades)
<a name="id_roles_common-scenarios_federated-users"></a>

Seus usuários podem já ter identidades fora da AWS, por exemplo, no diretório corporativo. Se esses usuários precisarem trabalhar com recursos da AWS (ou trabalhar com aplicações que acessem esses recursos), os usuários também precisarão de credenciais de segurança da AWS. Você pode usar uma função do IAM para especificar permissões para usuários cuja identidade é federada de sua organização ou de um provedor de identidade (IdP) de terceiros.

**nota**  
Como prática recomendada de segurança, recomendamos que você gerencie o acesso do usuário no [Centro de identidade do IAM](https://docs.aws.amazon.com//singlesignon/latest/userguide/what-is.html) com federação de identidades em vez de criar usuários do IAM. Para obter informações sobre situações específicas em que um usuário do IAM é necessário, consulte [Quando criar um usuário do IAM (em vez de um perfil)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_which-to-choose).

## Federação de usuários de um aplicativo móvel ou baseado na Web com o Amazon Cognito
<a name="id_roles_common-scenarios_federated-users-cognito"></a>

Se você criar um aplicativo móvel ou baseado na Web que acesse recursos da AWS, ele precisará de credenciais de segurança para fazer solicitações programáticas à AWS. Para a maioria dos cenários de aplicações móveis, recomendamos usar o [Amazon Cognito](https://aws.amazon.com/cognito/). Você pode usar esse serviço com o [AWS Mobile SDK para iOS](https://aws.amazon.com/sdkforios/) e o [AWS Mobile SDK para Android e Fire OS](https://aws.amazon.com/sdkforandroid/) a fim de criar identidades exclusivas para os usuários e autenticá-las para assegurar o acesso aos seus recursos da AWS. O Amazon Cognito oferece suporte aos mesmos provedores de identidade listados na próxima seção e também oferece suporte a [identidades autenticadas pelo desenvolvedor](https://aws.amazon.com/blogs/mobile/amazon-cognito-announcing-developer-authenticated-identities) e acesso não autenticado (de convidado). O Amazon Cognito também fornece operações de API para sincronização de dados de usuário para que eles sejam preservados à medida que passarem de um dispositivo para outro. Para obter mais informações, consulte [Amazon Cognito para aplicativos móveis](id_federation_common_scenarios.md#id_roles_providers_oidc_cognito). 

## Federação de usuários com provedores de serviços de identidade pública ou OpenID Connect
<a name="id_roles_common-scenarios_federated-users-openId"></a>

Sempre que possível, use o Amazon Cognito para cenários de aplicativos móveis e baseados na Web. O Amazon Cognito faz a maior parte do trabalho em segundo plano com os serviços do provedor de identidade pública para você. Ele funciona com os mesmos serviços de terceiros e também dá suporte a logins anônimos. No entanto, para cenários mais avançados, você pode trabalhar diretamente com um serviço de terceiros, como o Login with Amazon, Facebook, Google ou qualquer provedor compatível com o OpenID Connect (OIDC). Para obter mais informações sobre como usar a federação OIDC com um desses serviços, consulte [Federação OIDC](id_roles_providers_oidc.md).

## Federação de usuários com SAML 2.0
<a name="id_roles_common-scenarios_federated-users-saml20"></a>

Se sua organização já usa um pacote de software de provedor de identidade que ofereça suporte a SAML 2.0 (Security Assertion Markup Language 2.0), você poderá criar confiança entre a organização como provedor de identidade (IdP) e a AWS como o provedor de serviços. Em seguida, você pode usar SAML para fornecer aos usuários logon único (SSO) federado ao Console de gerenciamento da AWS ou acesso federado para chamar operações de API da AWS. Por exemplo, se sua empresa usa o Microsoft Active Directory e o Active Directory Federation Services, você poderá realizar a federação usando o SAML 2.0. Para obter mais informações sobre como federar usuários com SAML 2.0, consulte [Federação SAML 2.0](id_roles_providers_saml.md).

## Federação de usuários criando um aplicativo identity broker personalizado
<a name="id_roles_common-scenarios_federated-users-idbroker"></a>

Se o armazenamento de identidades não for compatível com o SAML 2.0, você poderá criar um aplicativo identity broker personalizado para executar uma função semelhante. O aplicativo agente autentica os usuários, solicita credenciais temporárias para usuários da AWS e, em seguida, as fornece ao usuário para acessar os recursos da AWS. 

Por exemplo, a Corp. de Exemplo tem muitos funcionários que precisam executar aplicativos internos que acessam os recursos da AWS da empresa. Os funcionários já têm identidades no sistema de autenticação e identidade da empresa, e a Corp. de Exemplo não deseja criar um usuário do IAM separado para cada funcionário da empresa.

Bob é um desenvolvedor na Corp. de Exemplo. Para permitir que os aplicativos internos da Corp. de Exemplo acessem os recursos da AWS da empresa, Bob desenvolve um aplicativo identity broker personalizado. O aplicativo confirma que os funcionários existentes estão conectados ao sistema de autenticação e identidade da Corp. de Exemplo, que pode usar LDAP, Active Directory ou outro sistema. O aplicativo identity broker, em seguida, obtém credenciais de segurança temporárias para os funcionários. Esse cenário é semelhante ao anterior (um aplicativo móvel que usa um sistema de autenticação personalizada), exceto pelo fato de que as aplicações que precisam de acesso a todos os recursos da AWS são executados dentro da rede corporativa, e a empresa tem um sistema de autenticação.

Para obter credenciais de segurança temporárias, o aplicativo identity broker chama `AssumeRole` ou `GetFederationToken` para obter credenciais de segurança temporárias, dependendo de como Bob precisa gerenciar as políticas para os usuários e quando as credenciais temporárias devem expirar. (Para obter mais informações sobre as diferenças entre essas operações de API, veja [Credenciais de segurança temporárias no IAM](id_credentials_temp.md) e [Permissões de credenciais de segurança temporárias](id_credentials_temp_control-access.md).) A chamada retorna as credenciais de segurança temporárias que consistem em um ID da chave de acesso da AWS, uma chave de acesso secreta e um token de sessão. O aplicativo identity broker torna essas credenciais temporárias de segurança disponíveis para os aplicativos internos da empresa. Em seguida, o aplicativo pode usar as credenciais temporárias para fazer chamadas para a AWS diretamente. O aplicativo armazena as credenciais em cache até elas expirarem e, em seguida, solicita um novo conjunto de credenciais temporárias. A figura a seguir ilustra esse cenário.

![\[Exemplo de fluxo de trabalho usando um aplicativo agente de identidades personalizado\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/enterprise-authentication-with-identity-broker-application.diagram.png)


Esse cenário tem os seguintes atributos:
+ A aplicação do agente de identidades tem permissões para acessar a API do serviço de token (STS) do IAM para criar credenciais de segurança temporárias.
+ O aplicativo identity broker é capaz de verificar se os funcionários estão autenticados dentro do sistema de autenticação existente.
+ Os usuários podem obter um URL temporário que forneça a elrd acesso ao Console de Gerenciamento da AWS (chamada de autenticação única).

Para obter informações sobre a criação de credenciais de segurança temporárias, consulte [Compare credenciais do AWS STS](id_credentials_sts-comparison.md). Para obter mais informações sobre como as entidades principais federadas SAML obtêm acesso ao Console de Gerenciamento da AWS, consulte [Habilitar o acesso das entidades principais federadas do SAML 2.0 ao Console de gerenciamento da AWS](id_roles_providers_enable-console-saml.md).

# Criar um perfil do IAM
<a name="id_roles_create"></a>

Para criar uma função você pode usar o Console de gerenciamento da AWS, a AWS CLI, o Tools for Windows PowerShell ou a API do IAM.

Se você usar o Console de gerenciamento da AWS, um assistente orienta você durante as etapas para a criação de uma função. O assistente tem etapas ligeiramente diferentes dependendo se você esta criando um perfil para um serviço da AWS, para uma Conta da AWS ou para uma entidade principal federada SAML ou OIDC.

**Perfis para usuários do IAM**  
Crie esse perfil para delegar permissões na sua Conta da AWS ou para perfis definidos em outras Contas da AWS que você possui. Um usuário em uma conta pode alternar para uma função na mesma conta ou em uma diferente. Ao usar a função, o usuário pode executar somente as ações e acessar somente os recursos permitidos pela função; as permissões originais do usuário são suspensas. Quando o usuário fecha a função, as permissões originais do usuário são restauradas.

Para obter mais informações, consulte [Criar um perfil para conceder permissões a um usuário do IAM](id_roles_create_for-user.md).

Para obter mais informações sobre a criação de perfis para acesso entre contas, consulte [Criar um perfil usando políticas de confiança personalizadas](id_roles_create_for-custom.md).

**Perfis para serviços da AWS**  
Crie esse perfil para delegar permissões a um serviço que pode realizar ações em seu nome. Um [perfil de serviço](id_roles.md#iam-term-service-role) que você passa para um serviço deve ter uma política do IAM com as permissões que possibilitem que o serviço realize ações associadas a esse serviço. Diferentes permissões são necessárias para cada um dos serviços da AWS.

Para obter mais informações sobre como criar perfis de serviço, consulte [Criar um perfil para delegar permissões a um serviço da AWS](id_roles_create_for-service.md).

Para obter mais informações sobre como criar perfis vinculados a serviço, consulte [Criar um perfil vinculado ao serviço](id_roles_create-service-linked-role.md).

**Perfis para federação de identidades**  
Crie esse perfil para delegar permissões a usuários que já têm identidades externas à AWS. Quando você usa um provedor de identidade do , não precisa criar código de login personalizado nem gerenciar suas próprias identidades de usuários. Os usuários externos fazem login por meio do IdP, e você pode conceder a essas identidades externas permissões para usar os recursos da AWS na sua conta. Os provedores de identidade ajudam a manter sua conta da AWS segura, pois você não precisa distribuir nem incorporar credenciais de segurança de longo prazo, como chaves de acesso, em sua aplicação.

Para obter mais informações, consulte [Criar um perfil para um provedor de identidade de terceiros](id_roles_create_for-idp.md).

# Criar um perfil para conceder permissões a um usuário do IAM
<a name="id_roles_create_for-user"></a>

É possível usar perfis do IAM para delegar acesso aos seus recursos da AWS. Com funções do IAM, você pode estabelecer relações de confiança entre sua conta de *confiança* e outras contas *confiáveis* da AWS. A conta de confiança tem o recurso a ser acessado e a conta confiável contém os usuários que precisam de acesso ao recurso. No entanto, é possível que outra conta tenha um recurso em sua conta. Por exemplo, a conta de confiança pode permitir que a conta confiável crie novos recursos, como a criação de novos objetos em um bucket do Amazon S3. Nesse caso, a conta que cria o recurso possui o recurso e controla quem pode acessar esse recurso.

Depois de criar a relação de confiança, um usuário do IAM ou um aplicativo da conta confiável pode usar a operação [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) da API do AWS Security Token Service (AWS STS). Essa operação fornece credenciais de segurança temporárias que permitem acesso aos recursos da AWS em sua conta.

As contas podem ser controladas por você ou a conta com os usuários pode ser controlada por terceiros. Se a outra conta com os usuários for uma Conta da AWS controlada por você, use o atributo `externalId`. O ID externo pode ser qualquer palavra ou número combinado entre você e o administrador da conta de terceiros. Esta opção adiciona automaticamente uma condição à política de confiança que permite ao usuário assumir a função somente se a solicitação incluir o correto `sts:ExternalID`. Para obter mais informações, consulte [Acesso às Contas da AWS de propriedade de terceiros](id_roles_common-scenarios_third-party.md).

Para obter informações sobre como usar funções para delegar permissões, consulte [Termos e conceitos das funções](id_roles.md#id_roles_terms-and-concepts). Para obter mais informações sobre o uso de uma função de serviço para permitir que os serviços acessem recursos na sua conta, consulte [Criar um perfil para delegar permissões a um serviço da AWS](id_roles_create_for-service.md).

## Criação de uma função do IAM (console)
<a name="roles-creatingrole-user-console"></a>

Você pode usar o Console de gerenciamento da AWS para criar uma função que um usuário do IAM pode assumir. Por exemplo, suponha que sua organização tem várias Contas da AWS para isolar um ambiente de desenvolvimento de um ambiente de produção. Para obter informações de alto nível sobre a criação de uma função que permita que os usuários na conta de desenvolvimento acessem recursos na conta de produção, consulte [Cenário de exemplo que usa contas separadas de desenvolvimento e produção](id_roles_common-scenarios_aws-accounts.md#id_roles_common-scenarios_aws-accounts-example).

**Permissões mínimas**  
Para executar as etapas a seguir, é necessário ter as seguintes permissões do IAM:  
`access-analyzer:ValidatePolicy`
`iam:AttachRolePolicy`
`iam:CreatePolicy`
`iam:CreateRole`
`iam:GetAccountSummary`
`iam:GetPolicy`
`iam:GetPolicyVersion`
`iam:GetRole`
`iam:ListAccountAliases`
`iam:ListAttachedRolePolicies`
`iam:ListOpenIDConnectProviders`
`iam:ListPolicies`
`iam:ListRolePolicies`
`iam:ListRoles`
`iam:ListRoleTags`
`iam:ListSAMLProviders`

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console, escolha **Roles** (Perfis) e, em seguida, clique em **Create role** (Criar perfil).

1. Escolha o tipo de perfil do **Conta da AWS**.

1. Para criar uma função para sua conta, escolha **This account** (Esta conta). Para criar um perfil para outra conta, escolha **Outra Conta da AWS** e insira o **ID da conta** para o qual você deseja conceder acesso a seus recursos.

   O administrador da conta especificada pode conceder permissão para assumir essa função a qualquer usuário do IAM dessa conta. Para fazer isso, o administrador anexa uma política ao usuário ou grupo que concede permissão para a ação `sts:AssumeRole`. Essa política deve especificar o ARN da função como `Resource`. 

1. Se estiver concedendo permissões aos usuários de uma conta que você não controla e os usuários assumirem essa função de maneira programática, selecione **Require external ID** (Exigir ID externo). O ID externo pode ser qualquer palavra ou número combinado entre você e o administrador da conta de terceiros. Esta opção adiciona automaticamente uma condição à política de confiança que permite ao usuário assumir a função somente se a solicitação incluir o correto `sts:ExternalID`. Para obter mais informações, consulte [Acesso às Contas da AWS de propriedade de terceiros](id_roles_common-scenarios_third-party.md).
**Importante**  
A escolha dessa opção restringe o acesso à função apenas por meio da AWS CLI, do Tools for Windows PowerShell ou da API da AWS. A razão disso é que você não pode usar o console da AWS para alternar para uma função que tenha uma condição `externalId` na sua política de confiança. No entanto, você pode criar esse tipo de acesso de modo programático ao escrever um script ou um aplicativo usando o SDK relevante. Para obter mais informações e um script de exemplo, consulte [How to Enable Cross-Account Access to the Console de gerenciamento da AWS](https://aws.amazon.com/blogs/security/how-to-enable-cross-account-access-to-the-aws-management-console) no AWS Security Blog.

1. Se você desejar restringir a função a usuários que façam login usando um dispositivo de multi-factor authentication (MFA), selecione a opção **Exigir MFA**. Isso adiciona uma condição à política de confiança da função que verifica a existência de um login MFA. Um usuário que desejar assumir a função deverá fazer login com uma senha de uso único temporária a partir de um dispositivo MFA configurado. Os usuários sem a autenticação por MFA não podem assumir a função. Para obter mais informações sobre MFA, consulte [Código da autenticação multifator no IAM da AWS](id_credentials_mfa.md)

1. Escolha **Próximo**.

1. O IAM inclui uma lista das políticas gerenciadas pela AWS e pelo cliente em sua conta. Selecione a política a ser usada para a política de permissões ou escolha **Create policy (Criar política)** para abrir uma nova guia no navegador e criar uma nova política a partir do zero. Para obter mais informações, consulte [Criação de políticas do IAM](access_policies_create-console.md#access_policies_create-start). Depois de criar a política, feche essa guia e retorne à guia original. Marque a caixa de seleção ao lado das políticas de permissões que você deseja que qualquer pessoa que assuma a função tenha. Se preferir, você pode optar por não selecionar nenhuma política neste momento e anexar as políticas à função mais tarde. Por padrão, uma função não tem nenhuma permissões.

1. (Opcional) Defina um [limite de permissões](access_policies_boundaries.md). Este é um recurso avançado. 

   Abra a seção **Set permissions boundary (Definir limite de permissões)** e escolha **Use a permissions boundary to control the maximum role permissions (Usar um limite de permissões para controlar o número máximo de permissões de funções)**. Selecione a política a ser usada para o limite de permissões.

1. Escolha **Próximo**.

1. Em **Role name (Nome da função)**, digite um nome para sua função. Os nomes de função devem ser exclusivos em sua Conta da AWS. Ao ser usado em uma política ou como parte de um ARN, o nome de perfil diferencia maiúsculas de minúsculas. Quando exibida para os clientes no console, por exemplo, como durante o processo de login, o nome de função não diferencia maiúsculas de minúsculas. Como várias entidades podem fazer referência à função, não é possível editar o nome da função depois de criada.

1. (Opcional) Em **Descrição da função**, insira uma descrição para a nova função.

1. Escolha **Edit** (Editar) nas seções **Etapa 1: selecionar entidades confiáveis** ou na **Etapa 2: adicionar permissões** para editar os casos de uso e as permissões para a função. Você será levado de volta às páginas anteriores para fazer as edições.

1. (Opcional) Adicione metadados à função anexando tags como pares de chave-valor. Para obter mais informações sobre como usar tags no IAM, consulte [Tags para recursos do AWS Identity and Access Management](id_tags.md).

1. Revise o perfil e escolha **Criar perfil**.
**Importante**  
Lembre-se de que esta é apenas a metade da configuração necessária. Você também deve conceder aos usuários individuais na conta confiável permissões para alternar para a função no console ou assumir a função de forma programática. Para obter mais informações sobre essa etapa, consulte [Conceder permissões a um usuário para alternar perfis](id_roles_use_permissions-to-switch.md).

------

## Criação de uma função do IAM (AWS CLI)
<a name="roles-creatingrole-user-cli"></a>

A criação de uma função a partir da AWS CLI envolve várias etapas. Quando o console é usado para criar uma função, muitas das etapas são concluídas por você, mas com a AWS CLI, é necessário executar explicitamente cada etapa. Você deve criar a função e atribuir uma política de permissões à função. Opcionalmente, você também pode definir o [limite de permissões](access_policies_boundaries.md) para sua função.

**Para criar uma função para acesso entre contas (AWS CLI)**

1. Criar uma função: [aws iam create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)

1. Anexar uma política de permissões gerenciada à função: [aws iam attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html)

    ou

   Criar uma política de permissões em linha para a função: [aws iam put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)

1. (Opcional) Adicione atributos personalizados à função anexando tags: [aws iam tag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-role.html)

   Para obter mais informações, consulte [Gerenciar etiquetas em funções do IAM (AWS CLI ou API da AWS)](id_tags_roles.md#id_tags_roles_procs-cli-api).

1. (Opcional) Definir o [limite de permissões](access_policies_boundaries.md) para a função: [aws iam put-role-permissions-boundary](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-permissions-boundary.html)

   Um limite de permissões controla o número máximo de permissões que uma função pode ter. Os limites de permissões são um recurso avançado da AWS.

O exemplo a seguir mostra as duas primeiras e as etapas mais comuns para a criação de uma função entre contas em um ambiente simples. Este exemplo permite que qualquer usuário na conta `123456789012` assuma a função e visualize o bucket `example_bucket` do Amazon S3. Este exemplo também supõe que você está em um computador cliente com o Windows e já configurou a interface de linha de comando com as credenciais de sua conta e região. Para obter mais informações, consulte [Configurar a interface de linha de comando da AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).

Neste exemplo, inclua a seguinte política de confiança no primeiro comando ao criar a função. A política de confiança permite que os usuários na conta `123456789012` assumam a função usando a operação `AssumeRole`, mas apenas se o usuário fornecer autenticação MFA usando os parâmetros `SerialNumber` e `TokenCode`. Para obter mais informações sobre MFA, consulte [Código da autenticação multifator no IAM da AWS](id_credentials_mfa.md).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
          "Effect": "Allow",
          "Principal": { "AWS": "arn:aws:iam::123456789012:root" },
          "Action": "sts:AssumeRole",
          "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" } }
      }
  ]
}
```

------

**Importante**  
Se seu elemento `Principal` contiver o ARN de uma função ou um usuário específico do IAM, esse ARN será transformado em um ID de entidade de segurança exclusivo quando a política for salva. Isso ajuda a reduzir o risco de alguém elevar suas permissões ao remover e recriar a função ou usuário. Normalmente, você não vê esse ID no console, porque há também uma transformação reversa de volta para o ARN quando a política de confiança é exibida. No entanto, se você excluir a função ou o usuário, o ID da entidade principal aparecerá no console porque a AWS não pode mais mapeá-lo de volta para um ARN. Portanto, se você excluir e recriar um usuário ou função referenciado no elemento `Principal` de uma política de confiança, você deverá editar a função para substituir o ARN.

Quando usa o segundo comando, você deve anexar uma política gerenciada existente à função. A política de permissões a seguir permite que qualquer pessoa que assuma a função execute apenas a ação `ListBucket` no bucket `example_bucket` do Amazon S3.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
          "Effect": "Allow",
          "Action": "s3:ListBucket",
          "Resource": "arn:aws:s3:::example_bucket"
      }
  ]
}
```

------

Para criar essa `Test-UserAccess-Role` função, você deve primeiro salvar a política de confiança anterior com o nome `trustpolicyforacct123456789012.json` na pasta `policies` em sua `C:` unidade local. Em seguida, salve a política de permissões anterior como uma política gerenciada pelo cliente na sua Conta da AWS com o nome `PolicyForRole`. Você pode usar os comandos a seguir para criar a função e anexar a política gerenciada.

```
# Create the role and attach the trust policy file that allows users in the specified account to assume the role.
$ aws iam create-role --role-name Test-UserAccess-Role --assume-role-policy-document file://C:\policies\trustpolicyforacct123456789012.json

# Attach the permissions policy (in this example a managed policy) to the role to specify what it is allowed to do.
$ aws iam attach-role-policy --role-name Test-UserAccess-Role --policy-arn arn:aws:iam::123456789012:policy/PolicyForRole
```

**Importante**  
Lembre-se de que esta é apenas a metade da configuração necessária. Você também deve conceder aos usuários individuais na conta confiável permissões para alternar para a função. Para obter mais informações sobre essa etapa, consulte [Conceder permissões a um usuário para alternar perfis](id_roles_use_permissions-to-switch.md).

Depois de criar a função e conceder permissões a ela para executar tarefas da AWS ou acessar recursos da AWS, qualquer usuário da conta `123456789012` poderá assumir a função. Para obter mais informações, consulte [Alterar para uma perfil do IAM (AWS CLI)](id_roles_use_switch-role-cli.md).

## Criação de uma função do IAM (API da AWS)
<a name="roles-creatingrole-user-api"></a>

A criação de uma função na API da AWS envolve várias etapas. Quando o console é usado para criar uma função, muitas das etapas são concluídas por você, mas com a API, é necessário executar explicitamente cada etapa. Você deve criar a função e atribuir uma política de permissões à função. Opcionalmente, você também pode definir o [limite de permissões](access_policies_boundaries.md) para sua função.

**Para criar uma função em código (API da AWS)**

1. Criar uma função: [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)

   Para a política de confiança da função, você pode especificar um local de arquivo.

1. Anexar uma política de permissões gerenciada à função: [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)

   ou

   Criar uma política de permissões embutida para a função: [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)
**Importante**  
Lembre-se de que esta é apenas a metade da configuração necessária. Você também deve conceder aos usuários individuais na conta confiável permissões para alternar para a função. Para obter mais informações sobre essa etapa, consulte [Conceder permissões a um usuário para alternar perfis](id_roles_use_permissions-to-switch.md).

1. (Opcional) Adicione atributos personalizados ao usuário anexando tags: [TagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagRole.html)

   Para obter mais informações, consulte [Gerenciamento de etiquetas em usuários do IAM (AWS CLI ou API da AWS)](id_tags_users.md#id_tags_users_procs-cli-api).

1. (Opcional) Definir o [limite de permissões](access_policies_boundaries.md) para a função: [PutRolePermissionsBoundary](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePermissionsBoundary.html)

   Um limite de permissões controla o número máximo de permissões que uma função pode ter. Os limites de permissões são um recurso avançado da AWS.

Depois de criar a função e conceder permissões a ela para executar tarefas da AWS ou acessar recursos da AWS, você deve conceder permissões aos usuários da conta para permitir que eles assumam a função. Para obter mais informações sobre a assunção de uma função, consulte [Alternar para um perfil do IAM (API da AWS)](id_roles_use_switch-role-api.md).

## Criação de uma função do IAM (AWS CloudFormation)
<a name="roles_creatingrole-user-cloudformation"></a>

Para obter informações sobre como criar uma função do IAM no AWS CloudFormation, consulte a [referência de recursos e propriedades](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html) e [exemplos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#aws-resource-iam-role--examples) no *Guia do usuário do AWS CloudFormation*.

Para obter mais informações sobre os modelos do IAM no AWS CloudFormation, consulte [Trechos de modelo do AWS Identity and Access Management](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-iam.html) no *Guia do usuário do AWS CloudFormation*.

# Criar um perfil para delegar permissões a um serviço da AWS
<a name="id_roles_create_for-service"></a>

Muitos serviços da AWS exigem que você use funções para permitir que o serviço acesse recursos em outros serviços em seu nome. A [função de serviço](id_roles.md#iam-term-service-role) é uma função que um serviço assume para realizar ações em seu nome. Quando um perfil atende a uma finalidade especializada para um serviço, ela é categorizada como um [perfil vinculado ao serviço](id_roles.md#iam-term-service-linked-role). Para ver quais serviços oferecem suporte ao uso de funções vinculadas a serviços, ou se um serviço oferece suporte a qualquer forma de credenciais temporárias, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md). Para saber como determinado serviço usa funções, escolha o nome do serviço na tabela para visualizar a documentação dele.

Ao definir a permissão `PassRole`, é necessário garantir que um usuário não passe um perfil em que o perfil tenha mais permissões do que você deseja que o usuário tenha. Por exemplo, Alice pode não ter permissão para realizar nenhuma ação do Amazon S3. Se Alice pudesse passar um perfil para um serviço que permite ações do Amazon S3, o serviço poderia realizar ações do Amazon S3 em nome de Alice ao executar o trabalho.

Para obter informações sobre como as funções ajudam você a delegar permissões, consulte [Termos e conceitos das funções](id_roles.md#id_roles_terms-and-concepts).

## Permissões de função de serviço
<a name="id_roles_create_service-permissions"></a>

Configure permissões para que uma entidade do IAM (usuário ou função) crie ou edite uma função de serviço.

**nota**  
O ARN de uma função vinculado ao serviço inclui uma entidade principal do serviço que é indicada nas políticas a seguir como `SERVICE-NAME.amazonaws.com`. Não tente adivinhar a entidade principal do serviço, pois ela faz distinção entre maiúsculas e minúsculas, e o formato pode variar entre os serviços da AWS. Para visualizar a entidade principal do serviço, consulte a documentação do perfil vinculado ao serviço.

**Para permitir que uma entidade do IAM crie uma função de serviço específica**

Adicione a seguinte política à entidade do IAM que precisa criar a função de serviço. Essa política permite que você crie uma função de serviço para o serviço especificado e com um nome específico. Em seguida, você poderá anexar políticas em linha ou gerenciadas a essa função. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:CreateRole",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME"
        }
    ]
}
```

------

**Para permitir que uma entidade do IAM crie qualquer função de serviço**

A AWS recomenda permitir apenas que usuários administrativos criem qualquer perfil de serviço. Uma pessoa com permissões para criar uma função e anexar qualquer política pode aumentar as próprias permissões. Em vez disso, crie uma política que permita criar apenas as funções necessárias ou peça para um administrador criar a função de serviço no nome dessas pessoas.

Para anexar uma política que permita que um administrador acesse toda a sua Conta da AWS, use a política gerenciada [AdministratorAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AdministratorAccess) da AWS.

**Para permitir que uma entidade do IAM edite uma função de serviço**

Adicione a seguinte política à entidade do IAM que precisa editar a função de serviço.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EditSpecificServiceRole",
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:DeleteRolePolicy",
                "iam:DetachRolePolicy",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:ListAttachedRolePolicies",
                "iam:ListRolePolicies",
                "iam:PutRolePolicy",
                "iam:UpdateRole",
                "iam:UpdateRoleDescription"
            ],
            "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME"
        },
        {
            "Sid": "ViewRolesAndPolicies",
            "Effect": "Allow",
            "Action": [
                "iam:GetPolicy",
                "iam:ListRoles"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**Para permitir que uma entidade do IAM exclua uma função de serviço específica**

Adicione a seguinte instrução à política de permissões à entidade do IAM que precisa excluir a função de serviço especificada.

```
{
    "Effect": "Allow",
    "Action": "iam:DeleteRole",
    "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME"
}
```

**Para permitir que uma entidade do IAM exclua qualquer função de serviço**

A AWS recomenda permitir apenas que usuários administrativos excluam qualquer perfil de serviço. Em vez disso, crie uma política que permita excluir apenas as funções necessárias ou peça para um administrador excluir a função de serviço no nome dessas pessoas.

Para anexar uma política que permita que um administrador acesse toda a sua Conta da AWS, use a política gerenciada [AdministratorAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AdministratorAccess) da AWS.

## Criar uma função para um serviço da AWS (console)
<a name="roles-creatingrole-service-console"></a>

É possível usar o Console de gerenciamento da AWS para criar um perfil para um serviço. Como alguns serviços oferecem suporte a mais de uma função de serviço, consulte a [Documentação da AWS](https://docs.aws.amazon.com/) para o seu serviço para ver qual caso de uso escolher. É possível saber como atribuir as políticas de confiança e as permissões necessárias ao perfil para que o serviço possa assumir o perfil em seu nome. As etapas que podem se usadas para controlar as permissões para a sua função podem variar, dependendo de como o serviço define os casos de uso e de se você cria ou não uma função vinculada ao serviço.

------
#### [ Console ]

**Para criar uma função para um AWS service (Serviço da AWS) (console do IAM)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console do IAM, escolha **Perfis** e, em seguida, **Criar perfil**.

1. Em **Tipo de entidade confiável**, escolha **AWS service (Serviço da AWS)**.

1. Para **Serviço ou caso de uso**, escolha um serviço e, em seguida, escolha o caso de uso. Casos de uso são definidos pelo serviço para incluir a política de confiança exigida pelo serviço.

1. Escolha **Próximo**.

1. As opções para **Políticas de permissões** dependem do caso de uso selecionado.
   + Se o serviço definir as permissões para o perfil, não será possível selecionar políticas de permissões.
   + Selecione em um conjunto limitado de políticas de permissões.
   + Selecione entre todas as políticas de permissões.
   + Não selecione nenhuma política de permissão; crie políticas após a criação do perfil e, em seguida, anexe as políticas ao perfil.

1. (Opcional) Defina um [limite de permissões](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html). Esse é um atributo avançado que está disponível para perfis de serviço, mas não para perfis vinculados ao serviço.

   1. Abra a seção **Definir limite de permissões** e escolha **Usar um limite de permissões para controlar o número máximo de permissões do perfil**. 

      O IAM inclui uma lista das políticas gerenciadas pela AWS e pelo cliente em sua conta.

   1. Selecione a política a ser usada para o limite de permissões.

1. Escolha **Próximo**.

1. Para **Nome do perfil**, as opções dependem do serviço:
   + Se o serviço definir o nome do perfil, não será possível editar esse nome.
   + Se o serviço definir um prefixo para o nome do perfil, você poderá inserir um sufixo opcional.
   + Se o serviço definir o nome do perfil, você poderá atribuir um nome ao perfil.
**Importante**  
Quando nomear um perfil, observe o seguinte:  
Os nomes do perfil devem ser exclusivos em sua Conta da AWS e não podem ser diferenciados caso a caso.  
Por exemplo, não crie dois perfis denominados **PRODROLE** e **prodrole**. Quando usado em uma política ou como parte de um ARN, o nome de perfil diferencia maiúsculas de minúsculas. No entanto, quando exibido para os clientes no console, como durante o processo de login, o nome de perfil diferencia maiúsculas de minúsculas.
Não é possível editar o nome do perfil depois de criá-lo porque outras entidades podem referenciar o perfil.

1. (Opcional) Em **Descrição**, insira uma descrição para o perfil.

1. (Opcional) Para editar os casos de uso e as permissões do perfil, escolha **Editar** nas seções **Etapa 1: selecionar entidades confiáveis** ou **Etapa 2: adicionar permissões**.

1. (Opcional) Para ajudar a identificar, organizar ou pesquisar o perfil, adicione tags como pares de chave-valor. Para obter mais informações sobre o uso de tags no IAM, consulte [Tags para recursos do AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) no *Guia do usuário do IAM*.

1. Reveja a função e escolha **Criar função**.

------

## Criar uma função para um serviço (AWS CLI)
<a name="roles-creatingrole-service-cli"></a>

A criação de uma função a partir da AWS CLI envolve várias etapas. Quando o console é usado para criar uma função, muitas das etapas são concluídas por você, mas com a AWS CLI, é necessário executar explicitamente cada etapa. Você deve criar a função e atribuir uma política de permissões à função. Se o serviço com o qual você está trabalhando for o Amazon EC2, você também deverá criar um perfil de instância e adicionar a função a ele. Opcionalmente, você também pode definir o [limite de permissões](access_policies_boundaries.md) para sua função.

**Para criar uma função para um serviço da AWS na AWS CLI**

1. O seguinte comando `[create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)` cria uma função chamada *Test-Role* e anexa uma política de confiança a ela:

   `aws iam create-role --role-name Test-Role --assume-role-policy-document file://Test-Role-Trust-Policy.json`

1. Anexe uma política de permissões gerenciadas à função: [aws iam attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html).

   Por exemplo, o seguinte comando `attach-role-policy` anexa a política gerenciada pela AWS chamada `ReadOnlyAccess` à função do IAM chamada `ReadOnlyRole`:

   `aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess --role-name ReadOnlyRole`

    ou

   Criar uma política de permissões em linha para a função: [aws iam put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)

   Para adicionar uma política de permissões em linha, consulte o seguinte exemplo:

    `aws iam put-role-policy --role-name Test-Role --policy-name ExamplePolicy --policy-document file://AdminPolicy.json`

1. (Opcional) Adicione atributos personalizados à função anexando tags: [aws iam tag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-role.html)

   Para obter mais informações, consulte [Gerenciar etiquetas em funções do IAM (AWS CLI ou API da AWS)](id_tags_roles.md#id_tags_roles_procs-cli-api).

1. (Opcional) Definir o [limite de permissões](access_policies_boundaries.md) para a função: [aws iam put-role-permissions-boundary](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-permissions-boundary.html)

   Um limite de permissões controla o número máximo de permissões que uma função pode ter. Os limites de permissões são um recurso avançado da AWS.

Se você for usar a função com o Amazon EC2 ou outro produto da AWS que use o Amazon EC2, armazene a função em um perfil de instância. Um perfil da instância é um contêiner para uma função que pode ser anexado a uma instância do Amazon EC2 quando iniciada. Um perfil da instância pode conter somente uma função, e esse limite não pode ser aumentado. Se você criar a função usando o Console de gerenciamento da AWS, o perfil da instância será criado com o mesmo nome que a função. Para obter mais informações sobre os perfis da instância, consulte [Usar perfis de instância](id_roles_use_switch-role-ec2_instance-profiles.md). Para obter informações sobre como executar uma instância do EC2 com um perfil, consulte [Controle de acesso aos recursos do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#UsingIAMrolesWithAmazonEC2Instances) no *Guia do usuário do Amazon EC2*.

**Para criar um perfil de instância e armazenar a função nele (AWS CLI)**

1. Criar um perfil da instância: [aws iam create-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/create-instance-profile.html)

1. Adicionar a função ao perfil da instância: [aws iam add-role-to-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/add-role-to-instance-profile.html)

O comando da AWS CLI de exemplo definido a seguir demonstra as duas primeiras etapas para criar uma função e anexar permissões. Também mostra as duas etapas para criar um perfil de instância e adicionar a função ao perfil. Este exemplo de política de confiança permite que o serviço Amazon EC2 assuma a função e visualize o bucket `example_bucket` do Amazon S3. O exemplo também presume que você está executando em um computador cliente com o Windows e já configurou a interface de linha de comando com as credenciais de sua conta e região. Para obter mais informações, consulte [Configurar a interface de linha de comando da AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).

Neste exemplo, inclua a seguinte política de confiança no primeiro comando ao criar a função. Essa política de confiança permite que o serviço Amazon EC2 assuma a função. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {"Service": "ec2.amazonaws.com"},
    "Action": "sts:AssumeRole"
  }
}
```

------

Quando usa o segundo comando, você deve anexar uma política de permissões à função. A política de permissões de exemplo a seguir permite que a função execute apenas a ação `ListBucket` no bucket `example_bucket` do Amazon S3.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::example_bucket"
  }
}
```

------

Para criar essa função `Test-Role-for-EC2`, você deve primeiro salvar a política de confiança anterior com o nome `trustpolicyforec2.json` e a política de permissões anterior com o nome `permissionspolicyforec2.json` no diretório `policies` na unidade `C:` local. Em seguida, você pode usar os seguintes comandos para criar a função, anexar a política, criar o perfil da instância e adicionar a função ao perfil da instância.

```
# Create the role and attach the trust policy that allows EC2 to assume this role.
$ aws iam create-role --role-name Test-Role-for-EC2 --assume-role-policy-document file://C:\policies\trustpolicyforec2.json

# Embed the permissions policy (in this example an inline policy) to the role to specify what it is allowed to do.
$ aws iam put-role-policy --role-name Test-Role-for-EC2 --policy-name Permissions-Policy-For-Ec2 --policy-document file://C:\policies\permissionspolicyforec2.json

# Create the instance profile required by EC2 to contain the role
$ aws iam create-instance-profile --instance-profile-name EC2-ListBucket-S3

# Finally, add the role to the instance profile
$ aws iam add-role-to-instance-profile --instance-profile-name EC2-ListBucket-S3 --role-name Test-Role-for-EC2
```

Quando você ativar a instância do EC2, especifique o nome do perfil da instância na página **Configure Instance Details** se você usar o console da AWS. Se você usar o comando CLI `aws ec2 run-instances`, especifique o parâmetro `--iam-instance-profile`.

## Criar uma função para um serviço (API da AWS)
<a name="roles-creatingrole-service-api"></a>

A criação de uma função na API da AWS envolve várias etapas. Quando o console é usado para criar uma função, muitas das etapas são concluídas por você, mas com a API, é necessário executar explicitamente cada etapa. Você deve criar a função e atribuir uma política de permissões à função. Se o serviço com o qual você está trabalhando for o Amazon EC2, você também deverá criar um perfil de instância e adicionar a função a ele. Opcionalmente, você também pode definir o [limite de permissões](access_policies_boundaries.md) para sua função.

**Para criar uma função para um serviço da AWS (API da AWS)**

1. Criar uma função: [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)

   Para a política de confiança da função, você pode especificar um local de arquivo.

1. Anexar uma política de permissões gerenciada à função: [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)

    ou

   Criar uma política de permissões em linha para a função: [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)

1. (Opcional) Adicione atributos personalizados ao usuário anexando tags: [TagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagRole.html)

   Para obter mais informações, consulte [Gerenciamento de etiquetas em usuários do IAM (AWS CLI ou API da AWS)](id_tags_users.md#id_tags_users_procs-cli-api).

1. (Opcional) Definir o [limite de permissões](access_policies_boundaries.md) para a função: [PutRolePermissionsBoundary](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePermissionsBoundary.html)

   Um limite de permissões controla o número máximo de permissões que uma função pode ter. Os limites de permissões são um recurso avançado da AWS.

Se você for usar a função com o Amazon EC2 ou outro produto da AWS que use o Amazon EC2, armazene a função em um perfil de instância. Um perfil da instância é um contêiner para uma função. Cada perfil da instância pode conter somente uma função e esse limite não pode ser aumentado. Se você criar a função no Console de gerenciamento da AWS, o perfil da instância será criado para você com o mesmo nome da função. Para obter mais informações sobre os perfis da instância, consulte [Usar perfis de instância](id_roles_use_switch-role-ec2_instance-profiles.md). Para obter informações sobre como executar uma instância do Amazon EC2 com um perfil, consulte [Controle de acesso aos recursos do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#UsingIAMrolesWithAmazonEC2Instances) no *Guia do usuário do Amazon EC2*. 

**Para criar um perfil de instância e armazenar a função nele (API da AWS)**

1. Criar um perfil da instância: [CreateInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateInstanceProfile.html)

1. Adicionar a função ao perfil da instância: [AddRoleToInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddRoleToInstanceProfile.html)

# Criar um perfil vinculado ao serviço
<a name="id_roles_create-service-linked-role"></a>

Uma função vinculada ao serviço é um tipo exclusivo de função do IAM vinculado diretamente a um serviço da AWS. As funções vinculadas a serviços são predefinidas pelo serviço e incluem todas as permissões que o serviço requer para chamar outros serviços da AWS em seu nome. O serviço vinculado também define como criar, modificar e excluir uma função vinculada a serviço. Um serviço pode criar ou excluir a função automaticamente. Ele pode permitir que você crie, modifique ou exclua a função como parte de um assistente ou processo no serviço. Ou pode exigir que você use o IAM para criar ou excluir a função. Independente do método, as funções vinculadas a serviço simplificam o processo de configurar um serviço da , pois você não precisa adicionar manualmente as permissões para o serviço concluir as ações em seu nome.

**nota**  
Lembre-se de que perfis de serviço são diferentes de perfis vinculados a serviços. O perfil de serviço é um [perfil do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) que um serviço assume para executar ações em seu nome. Um administrador do IAM pode criar, modificar e excluir um perfil de serviço do IAM. Para obter mais informações, consulte [Criação de um perfil para delegar permissões a um AWS service (Serviço da AWS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) no *Guia do Usuário do IAM*. Um perfil vinculado ao serviço é um tipo de perfil de serviço vinculado a um AWS service (Serviço da AWS). O serviço pode presumir o perfil de executar uma ação em seu nome. Perfis vinculados ao serviço aparecem em sua Conta da AWS e são de propriedade do serviço. Um administrador do IAM pode visualizar, mas não editar as permissões para perfis vinculados ao serviço. 

O serviço vinculado define as permissões de suas funções vinculadas ao serviço e, a menos que definido em contrário, somente aquele serviço pode assumir as funções. As permissões definidas incluem a política de confiança e a política de permissões, que não pode ser anexada a nenhuma outra entidade do IAM.

Para poder excluir as funções, você deve primeiroexcluir os recursos relacionados a eles. Isso ajuda a impedir que você remova por engano a permissão para acessar os recursos. 

**dica**  
Para obter informações sobre quais serviços oferecem suporte a funções vinculadas a serviços, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md) e procure os serviços que têm **Sim **na coluna **Função vinculada ao serviço**. Escolha um **Sim** com um link para visualizar a documentação do perfil vinculado para esse serviço.

## Permissões de perfil vinculado ao serviço
<a name="service-linked-role-permissions"></a>

Configure as permissões para que uma entidade do IAM (usuário ou função) permita que o usuário ou a função crie ou edite a função vinculada ao serviço.

**nota**  
O ARN de uma função vinculada ao serviço inclui uma entidade principal do serviço que é indicada nas políticas abaixo como `SERVICE-NAME.amazonaws.com`. Não tente adivinhar a entidade principal do serviço, pois ela faz distinção entre maiúsculas e minúsculas, e o formato pode variar entre os serviços da AWS. Para visualizar a entidade principal do serviço, consulte a documentação do perfil vinculado ao serviço.

**Para permitir que uma entidade do IAM; crie uma função vinculada ao serviço**

Adicione a seguinte política à entidade do IAM que precisa criar a função vinculada ao serviço.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*",
            "Condition": {"StringLike": {"iam:AWSServiceName": "SERVICE-NAME.amazonaws.com"}}
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*"
        }
    ]
}
```

------

**Para permitir que uma entidade do IAM crie qualquer função vinculada ao serviço**

Adicione a seguinte instrução à política de permissões da entidade do IAM que precisa criar uma função vinculada ao serviço ou qualquer função de serviço que inclua as políticas necessárias. Esta declaração de política não permite que a entidade do IAM anexe uma política à função.

```
{
    "Effect": "Allow",
    "Action": "iam:CreateServiceLinkedRole",
    "Resource": "arn:aws:iam::*:role/aws-service-role/*"
}
```

**Para permitir que uma entidade do IAM edite a descrição de todas as funções de serviço**

Adicione a seguinte instrução à política de permissões da entidade do IAM que precisa editar uma descrição de uma função vinculada ao serviço ou qualquer função de serviço.

```
{
    "Effect": "Allow",
    "Action": "iam:UpdateRoleDescription",
    "Resource": "arn:aws:iam::*:role/aws-service-role/*"
}
```

**Para permitir que uma entidade do IAM exclua uma função vinculada ao serviço específica**

Adicione a seguinte instrução à política de permissões para a entidade do IAM que precisa excluir a função vinculada ao serviço.

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/SERVICE-NAME.amazonaws.com/SERVICE-LINKED-ROLE-NAME-PREFIX*"
}
```

**Para permitir que uma entidade do IAM exclua qualquer função vinculada ao serviço**

Adicione a seguinte instrução à política de permissões da entidade do IAM que precisa excluir uma função vinculada ao serviço, mas não a função de serviço.

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::*:role/aws-service-role/*"
}
```

**Para permitir que uma entidade do IAM transmita uma função existente para o serviço**

Alguns serviços do AWS permitem que você transmita uma função existente para o serviço, ao invés de criar uma nova função vinculada ao serviço. Para fazer isso, um usuário deve ter permissões para *transmitir a função* para o serviço. Adicione a seguinte instrução à política de permissões para a entidade do IAM necessária para transmitir a função. Esta declaração de política também permite que a entidade visualize uma lista de funções a partir da qual elas podem escolher a função a ser transmitida. Para obter mais informações, consulte [Conceda permissões a um usuário para passar um perfil para um serviço da AWS](id_roles_use_passrole.md).

```
{
  "Sid": "PolicyStatementToAllowUserToListRoles",
  "Effect": "Allow",
  "Action": ["iam:ListRoles"],
  "Resource": "*"
},
{
  "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole",
  "Effect": "Allow",
  "Action": [ "iam:PassRole" ],
  "Resource": "arn:aws:iam::account-id:role/my-role-for-XYZ"
}
```

## Permissões indiretas com funções vinculadas a serviços
<a name="create-service-linked-role-permissions-transfer"></a>

As permissões concedidas por uma função vinculada a um serviço podem ser transferidas indiretamente para outros usuários e funções. Quando um perfil vinculado ao serviço é usado por um serviço da AWS, esse perfil vinculado ao serviço pode usar suas próprias permissões para chamar outros serviços da AWS. Isso significa que usuários e funções com permissões para chamar um serviço que usa uma função vinculada ao serviço podem ter acesso indireto aos serviços acessíveis por essa função vinculada ao serviço.

Por exemplo, quando você cria uma instância de banco de dados do Amazon RDS, [uma função vinculada ao serviço para o RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAM.ServiceLinkedRoles.html) será criada automaticamente se ainda não houver uma. Essa função permite que o RDS chame o Amazon EC2, o Amazon SNS, o Amazon CloudWatch Logs e o Amazon Kinesis em seu nome. Se você permitir que usuários e perfis em sua conta modifiquem ou criem bancos de dados do RDS, eles poderão interagir indiretamente com o Amazon EC2, o Amazon SNS, os logs do Amazon CloudWatch Logs e os recursos do Amazon Kinesis por meio de chamadas ao RDS, pois o RDS usaria sua função vinculada ao serviço para acessar esses recursos.

### Métodos de criação de perfis vinculados ao serviço
<a name="create-service-linked-role"></a>

O método que você usa para criar uma função vinculada ao serviço depende do serviço. Em alguns casos, você não precisa criar manualmente uma função vinculada ao serviço. Por exemplo, quando você conclui uma ação específica (como a criação de um recurso) no serviço, o serviço pode criar a função vinculada ao serviço para você. Ou, se você estava usando um serviço antes que ele começou a oferecer suporte a funções vinculadas ao serviço, o serviço pode ter criado automaticamente a função na sua conta. Para saber mais, consulte [Uma nova função apareceu na minha conta da AWS](troubleshoot_roles.md#troubleshoot_roles_new-role-appeared).

Em outros casos, o serviço pode oferecer suporte à criação de uma função vinculada ao serviço manualmente usando o console, API ou CLI do serviço. Para obter informações sobre quais serviços oferecem suporte a funções vinculadas a serviços, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md) e procure os serviços que têm **Sim **na coluna **Função vinculada ao serviço**. Para saber se o serviço oferece suporte para criar a função vinculada ao serviço, escolha o link **Sim** para visualizar a documentação da função vinculada a esse serviço.

Se o serviço não for compatível com a criação da função, você poderá usar o IAM para criar a função vinculada ao serviço.

**Importante**  
Perfis vinculados a serviço contam para o limite dos seus [perfis do IAM em uma Conta da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-entities), mas, se você tiver atingido seu limite, ainda poderá criar perfis vinculados a serviço na sua conta. Somente as funções vinculadas ao serviço podem exceder o limite.

### Criar uma função vinculada ao serviço (console)
<a name="create-service-linked-role-iam-console"></a>

Antes de criar uma função vinculada ao serviço no IAM, descubra se o serviço vinculado cria automaticamente funções vinculadas ao serviço. Além disso, saiba se você pode criar a função no console, na API ou na CLI do serviço.<a name="create-service-linked-role-iam-console"></a>

**Para criar uma função vinculada ao serviço (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console do IAM, escolha **Perfis**. Depois, escolha **Create role** (Criar perfil).

1. Escolha o tipo de função **AWS Service** (Service).

1. Escolha o caso de uso para o seu serviço. Casos de uso são definidos pelo serviço para incluir a política de confiança exigida pelo serviço. Em seguida, escolha **Próximo**.

1. Escolha uma ou mais políticas de permissões a serem anexadas à função. Dependendo do caso de uso que você selecionou, o serviço pode executar uma das seguintes ações:
   + Defina as permissões usadas pela função.
   + Permita que você escolha um conjunto limitado de permissões.
   + Permita que você escolha entre todas as permissões.
   + Permitir que você opte por não selecionar nenhuma política no momento, criar políticas mais tarde e, em seguida, anexá-las à função.

   Marque a caixa de seleção ao lado da política que atribui as permissões que você deseja que o perfil tenha e escolha **Próximo**. 
**nota**  
As permissões que você especificar estarão disponíveis para qualquer entidade que usar a função. Por padrão, uma função não tem nenhuma permissões.

1. Para **Nome do perfil**, o grau de personalização do nome do perfil é definido pelo serviço. Se o serviço define o nome da função, essa opção não é editável. Em outros casos, o serviço pode definir um prefixo para a função e permitir que você insira um sufixo opcional.

   Se possível, insira um sufixo de nome de função a ser adicionado ao nome padrão. O sufixo ajuda a identificar a finalidade dessa função. Os nomes de função devem ser exclusivos em sua conta AWS. Eles não são diferenciados por letras maiúsculas e minúsculas. Por exemplo, não é possível criar perfis denominados **<service-linked-role-name>\$1SAMPLE** e **<service-linked-role-name>\$1sample**. Como várias entidades podem fazer referência à função, não é possível editar o nome da função depois que ela é criada.

1. (Opcional) Em **Description** (Descrição), edite a descrição para a nova função vinculado ao serviço.

1. Você não pode anexar tags para funções vinculadas ao serviço durante a criação. Para obter mais informações sobre como usar tags no IAM, consulte [Tags para recursos do AWS Identity and Access Management](id_tags.md).

1. Revise o perfil e escolha **Criar perfil**.

### Criar uma função vinculada ao serviço (AWS CLI)
<a name="create-service-linked-role-iam-cli"></a>

Antes de criar uma função vinculada ao serviço no IAM, descubra se o serviço vinculado cria automaticamente as funções vinculadas ao serviço e se você pode criar a função na CLI do serviço. Se a CLI do serviço não for compatível, você poderá usar comandos do IAM para criar uma função vinculada ao serviço com a política de confiança e políticas em linha de que o serviço precisa assumir a função.

**Para criar uma função vinculada ao serviço (AWS CLI)**

Execute o seguinte comando:

```
aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name SERVICE-NAME.amazonaws.com
```

### Criar uma função vinculada ao serviço (API da AWS)
<a name="create-service-linked-role-iam-api"></a>

Antes de criar uma função vinculada ao serviço no IAM, descubra se o serviço vinculado cria automaticamente as funções vinculadas ao serviço e se você pode criar a função na API do serviço. Se a API do serviço não for suportada, você pode usar a API do AWS para criar uma função vinculada ao serviço com a política de confiança e políticas em linha de que o serviço precisa para assumir a função.

**Para criar uma função vinculada ao serviço (API da AWS)**

Use a chamada de API [CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html). Na solicitação, especifique o nome do serviço na forma de `SERVICE_NAME_URL.amazonaws.com`. 

Por exemplo, para criar a função vinculada ao serviço **Lex Bots**, use `lex.amazonaws.com`.

# Criar um perfil para um provedor de identidade de terceiros
<a name="id_roles_create_for-idp"></a>

Você pode usar provedores de identidade em vez de criar usuários do IAM na sua Conta da AWS. Com um provedor de identidade (IdP), você pode gerenciar as identidades de usuários fora da AWS e fornecer a essas identidades de usuários externos permissões para acessar recursos da AWS na sua conta. Para obter mais informações sobre federação e provedores de identidade, consulte [Federação e provedores de identidade na AWS](id_roles_providers.md).

## Criar um perfil para entidades principais federadas OIDC e SAML (console)
<a name="roles-creatingrole-federated-users-console"></a>

Os procedimentos para criar um perfil dependem de sua opção de provedores de terceiros:
+ Para OpenID Connect (OIDC), consulte [Criar uma função para uma federação do OpenID Connect (console)](id_roles_create_for-idp_oidc.md).
+ Para SAML 2.0, consulte [Criar um perfil para uma federação do SAML 2.0 (console)](id_roles_create_for-idp_saml.md).

## Criar uma função para acesso federado (AWS CLI)
<a name="roles-creatingrole-identityprovider-cli"></a>

As etapas para criar uma função para provedores de identidade (OIDC ou SAML) na AWS CLI são idênticas. A diferença está no conteúdo da política de confiança que você cria nas etapas obrigatórias. Comece seguindo as etapas na seção **Pré-requisitos** para o tipo de provedor que você está usando:
+ Para um provedor do OIDC, consulte [Pré-requisitos para a criação de uma função para o OIDC](id_roles_create_for-idp_oidc.md#idp_oidc_Prerequisites).
+ Para um provedor do SAML, consulte [Pré-requisitos para a criação de uma função para o SAML](id_roles_create_for-idp_saml.md#idp_saml_Prerequisites).

A criação de uma função a partir da AWS CLI envolve várias etapas. Quando o console é usado para criar uma função, muitas das etapas são concluídas por você, mas com a AWS CLI, é necessário executar explicitamente cada etapa. Você deve criar a função e atribuir uma política de permissões à função. Opcionalmente, você também pode definir o [limite de permissões](access_policies_boundaries.md) para sua função.

**Para criar um perfil (AWS CLI)**

1. Criar uma função: [aws iam create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)

1. Anexar uma política de permissões à função: [aws iam attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html)

    ou

   Criar uma política de permissões em linha para a função: [aws iam put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)

1. (Opcional) Adicione atributos personalizados à função anexando tags: [aws iam tag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-role.html)

   Para obter mais informações, consulte [Gerenciar etiquetas em funções do IAM (AWS CLI ou API da AWS)](id_tags_roles.md#id_tags_roles_procs-cli-api).

1. (Opcional) Definir o [limite de permissões](access_policies_boundaries.md) para a função: [aws iam put-role-permissions-boundary](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-permissions-boundary.html)

   Um limite de permissões controla o número máximo de permissões que uma função pode ter. Os limites de permissões são um recurso avançado da AWS.

O exemplo a seguir mostra as duas primeiras e as etapas mais comuns para a criação de uma função de provedor de identidade em um ambiente simples. Este exemplo permite que qualquer usuário na conta `123456789012` assuma a função e visualize o bucket `example_bucket` do Amazon S3. Este exemplo também supõe que você esteja executando a AWS CLI em um computador Windows e já tenha configurado a AWS CLI com suas credenciais. Para obter mais informações, consulte [Configurar a AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).

A política de confiança do exemplo a seguir será designada para um aplicativo móvel se o usuário fizer login usando o Amazon Cognito. Neste exemplo, *us-east:12345678-ffff-ffff-ffff-123456* representa o ID do grupo de identidades atribuído pelo Amazon Cognito.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "RoleForCognito",
        "Effect": "Allow",
        "Principal": {"Federated": "cognito-identity.amazonaws.com"},
        "Action": "sts:AssumeRoleWithWebIdentity",
        "Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}}
    }
}
```

------

A política de permissões a seguir permite que qualquer pessoa que assuma a função execute apenas a ação `ListBucket` no bucket `example_bucket` do Amazon S3.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::example_bucket"
  }
}
```

------

Para criar essa função `Test-Cognito-Role`, você deve primeiro salvar a política de confiança anterior com o nome `trustpolicyforcognitofederation.json` e a política de permissões anterior com o nome `permspolicyforcognitofederation.json` na pasta `policies` na unidade `C:` local. Você pode usar os comandos a seguir para criar a função e anexar a política em linha.

```
# Create the role and attach the trust policy that enables users in an account to assume the role.
$ aws iam create-role --role-name Test-Cognito-Role --assume-role-policy-document file://C:\policies\trustpolicyforcognitofederation.json

# Attach the permissions policy to the role to specify what it is allowed to do.
aws iam put-role-policy --role-name Test-Cognito-Role --policy-name Perms-Policy-For-CognitoFederation --policy-document file://C:\policies\permspolicyforcognitofederation.json
```

## Criar uma função para acesso federado (API da AWS)
<a name="roles-creatingrole-identityprovider-api"></a>

As etapas para criar uma função para provedores de identidade (OIDC ou SAML) na AWS CLI são idênticas. A diferença está no conteúdo da política de confiança que você cria nas etapas obrigatórias. Comece seguindo as etapas na seção **Pré-requisitos** para o tipo de provedor que você está usando:
+ Para um provedor do OIDC, consulte [Pré-requisitos para a criação de uma função para o OIDC](id_roles_create_for-idp_oidc.md#idp_oidc_Prerequisites).
+ Para um provedor do SAML, consulte [Pré-requisitos para a criação de uma função para o SAML](id_roles_create_for-idp_saml.md#idp_saml_Prerequisites).

**Para criar um perfil (API AWS)**

1. Criar uma função: [CreateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html)

1. Anexar uma política de permissões à função: [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)

    ou

   Criar uma política de permissões em linha para a função: [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)

1. (Opcional) Adicione atributos personalizados ao usuário anexando tags: [TagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagRole.html)

   Para obter mais informações, consulte [Gerenciamento de etiquetas em usuários do IAM (AWS CLI ou API da AWS)](id_tags_users.md#id_tags_users_procs-cli-api).

1. (Opcional) Definir o [limite de permissões](access_policies_boundaries.md) para a função: [PutRolePermissionsBoundary](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePermissionsBoundary.html)

   Um limite de permissões controla o número máximo de permissões que uma função pode ter. Os limites de permissões são um recurso avançado da AWS.

# Criar uma função para uma federação do OpenID Connect (console)
<a name="id_roles_create_for-idp_oidc"></a>

É possível usar os provedores de identidades federadas do OpenID Connect (OIDC) em vez de criar usuários do AWS Identity and Access Management em sua Conta da AWS. Com um provedor de identidade (IdP), você pode gerenciar as identidades de usuários fora da AWS e fornecer a essas identidades de usuários externos permissões para acessar recursos da AWS na sua conta. Para obter mais informações sobre federação e IdPs, consulte [Federação e provedores de identidade na AWS](id_roles_providers.md).

## Pré-requisitos para a criação de uma função para o OIDC
<a name="idp_oidc_Prerequisites"></a>

Para criar uma função para a federação OIDC, você primeiro deve concluir as etapas obrigatórias a seguir.<a name="oidc-prereqs"></a>

**Para se preparar para uma função para a federação do OIDC**

1. Inscreva-se em um ou mais serviços que oferecem identidades federadas OIDC. Se estiver criando um aplicativo que precisa de acesso a seus recursos da AWS, você também poderá configurar seu aplicativo com as informações do provedor. Quando você faz isso, o provedor fornece a você um ID de aplicação ou público que é exclusivo da aplicação. (Diferentes provedores usam diferentes terminologias para este processo. Este guia usa o termo *configurar* para o processo de identificação de sua aplicação com o provedor.) É possível configurar várias aplicações com cada provedor ou vários provedores com um único aplicativo. Visualize as informações sobre o uso de provedores de identidades:
   + [Centro do desenvolvedor do Login with Amazon](https://login.amazon.com/)
   + [Adicione o login do Facebook ao seu aplicativo ou site](https://developers.facebook.com/docs/facebook-login/v2.1) no site de desenvolvedores do Facebook.
   + [Uso de OAuth 2.0 para login (OpenID Connect)](https://developers.google.com/accounts/docs/OAuth2Login) no site de desenvolvedores do Google.

1. <a name="idpoidcstep2"></a>Depois de receber as informações necessárias do IdP, crie um IdP no IAM. Para obter mais informações, consulte [Criar um provedor de identidade OpenID Connect (OIDC) no IAM](id_roles_providers_create_oidc.md).
**Importante**  
Se você estiver usando um IdP OIDC do Google, Facebook ou Amazon Cognito, não crie um IdP do IAM separado no Console de gerenciamento da AWS. Esses provedores de identidades OIDC já estão integrados à AWS e estão disponíveis para uso. Ignore esta etapa e a criação de novas funções usando seu IdP na etapa a seguir.

1. Prepare as políticas para a função que os usuários autenticados pelo IdP assumirão. Assim como com qualquer função, uma função para um aplicativo móvel inclui duas políticas. Uma é a política de confiança que especifica quem pode assumir a função. A outra é a política de permissões que especifica as ações e os recursos reais da AWS aos quais o aplicativo móvel tem ou não permissão para acessar.

   Para idPs da Web, recomendamos que você use o [Amazon Cognito](https://aws.amazon.com/cognito/) para gerenciar identidades. Nesse caso, use uma política de confiança semelhante a este exemplo.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"Federated": "cognito-identity.amazonaws.com"},
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
               "StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east-2:12345678-abcd-abcd-abcd-123456"},
               "ForAnyValue:StringLike": {"cognito-identity.amazonaws.com:amr": "unauthenticated"}
           }
       }
   }
   ```

------

   Substitua `us-east-2:12345678-abcd-abcd-abcd-123456` pelo ID do grupo de identidades que o Amazon Cognito atribuir a você.

   Se você configurar manualmente um IdP do OIDC, ao criar a política de confiança, você deve usar três valores que garantem que apenas seu aplicativo possa assumir a função:
   + No elemento `Action`, use a ação `sts:AssumeRoleWithWebIdentity`.
   + No elemento `Principal`, use a string `{"Federated":providerUrl/providerArn}`.
     + Para alguns IdPs OIDC comuns, a `providerUrl` é um URL. Os exemplos a seguir incluem métodos para especificar a entidade principal para alguns IdPs comuns:

       `"Principal":{"Federated":"cognito-identity.amazonaws.com"}`

       `"Principal":{"Federated":"www.amazon.com"}`

       `"Principal":{"Federated":"graph.facebook.com"}`

       `"Principal":{"Federated":"accounts.google.com"}`
     + Para outros provedores OIDC, use nome do recurso da Amazon (ARN) do IdP OIDC que você criou em [Step 2](#idpoidcstep2), como o exemplo a seguir:

       `"Principal":{"Federated":"arn:aws:iam::123456789012:oidc-provider/server.example.com"}`
   + No elemento `Condition`, use uma condição `StringEquals` para limitar as permissões. Teste o ID do grupo de identidades para o Amazon Cognito ou o ID da aplicação para outros provedores. O ID do grupo de identidades deve corresponder ao ID da aplicação que você recebeu quando configurou a aplicação com o IdP. Essa correspondência entre os IDs garante que a solicitação seja proveniente da aplicação.
**nota**  
Os perfis do IAM para bancos de identidades do Amazon Cognito confiam na entidade principal do serviço `cognito-identity.amazonaws.com` para assumir o perfil. Perfis desse tipo devem conter pelo menos uma chave de condição para limitar as entidades principais que podem assumir o perfil.  
Considerações adicionais se aplicam aos bancos de identidades do Amazon Cognito que assumem [perfis do IAM entre contas](access_policies-cross-account-resource-access.md). As políticas de confiança desses perfis devem aceitar a entidade principal do serviço `cognito-identity.amazonaws.com` e conter a chave de condição `aud` para restringir a suposição de perfis aos usuários dos bancos de identidades pretendidos. Uma política que confia nos bancos de identidades do Amazon Cognito sem essa condição cria o risco de que um usuário de um banco de identidades não intencional possa assumir o perfil. Para obter mais informações, consulte [Políticas de confiança para perfis do IAM na autenticação básica (clássica)](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#trust-policies) no *Guia do Desenvolvedor do Amazon Cognito*.

     Crie um elemento de condição semelhante aos exemplos a seguir, dependendo do IdP que você está usando: 

     `"Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}}`

     `"Condition": {"StringEquals": {"www.amazon.com:app_id": "amzn1.application-oa2-123456"}}`

     `"Condition": {"StringEquals": {"graph.facebook.com:app_id": "111222333444555"}}`

     `"Condition": {"StringEquals": {"accounts.google.com:aud": "66677788899900pro0"}}`

     Para provedores OIDC, use o URL totalmente qualificado do IdP OIDC com a chave de contexto `aud`, como o exemplo a seguir: 

     `"Condition": {"StringEquals": {"server.example.com:aud": "appid_from_oidc_idp"}}`
**nota**  
Observe que os valores para a entidade principal na política de confiança para a função são específicos a um IdP. Um perfil pode especificar apenas uma entidade principal. Portanto, se a aplicação móvel permitir que os usuários se registrem em mais de um IdP, você deverá criar uma função separada para cada IdP que utilizar. Portanto, você deve criar políticas de confiança separadas para cada IdP.

   Se um usuário usar uma aplicação móvel para fazer login estando no Login with Amazon, a política de confiança do exemplo a seguir será aplicada. No exemplo, *amzn1.application-oa2-123456* representa o ID da aplicação que a Amazon atribuiu quando você configurou a aplicação usando o Login with Amazon.

------
#### [ JSON ]

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForLoginWithAmazon",
             "Effect": "Allow",
             "Principal": {"Federated": "www.amazon.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"www.amazon.com:app_id": "amzn1.application-oa2-123456"}}
         }]
     }
   ```

------

   Se um usuário usar uma aplicação móvel para fazer login estando no Facebook, a política de confiança do exemplo a seguir será aplicada. Neste exemplo, *111222333444555* representa o ID da aplicação atribuído pelo Facebook.

------
#### [ JSON ]

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForFacebook",
             "Effect": "Allow",
             "Principal": {"Federated": "graph.facebook.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"graph.facebook.com:app_id": "111222333444555"}}
         }]
     }
   ```

------

   Se um usuário usar uma aplicação móvel para fazer login estando no Goggle, a política de confiança do exemplo a seguir será aplicada. Nesse exemplo, *666777888999000* representa o ID da aplicação atribuído pelo Google.

------
#### [ JSON ]

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForGoogle",
             "Effect": "Allow",
             "Principal": {"Federated": "accounts.google.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"accounts.google.com:aud": "666777888999000"}}
         }]
     }
   ```

------

   Se um usuário usar uma aplicação móvel para fazer login estando no Amazon Cognito, a política de confiança do exemplo a seguir será aplicada. Neste exemplo, *us-east:12345678-ffff-ffff-ffff-123456* representa o ID do grupo de identidades atribuído pelo Amazon Cognito.

------
#### [ JSON ]

****  

   ```
   {
         "Version":"2012-10-17",		 	 	 
         "Statement": [{
             "Sid": "RoleForCognito",
             "Effect": "Allow",
             "Principal": {"Federated": "cognito-identity.amazonaws.com"},
             "Action": "sts:AssumeRoleWithWebIdentity",
             "Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}}
         }]
     }
   ```

------

## Como criar um perfil para o OIDC
<a name="idp_oidc_Create"></a>

Depois de concluir as etapas obrigatórias, você pode criar a função no IAM. Para provedores de identidade (IdPs) OpenID Connect (OIDC) compartilhados reconhecidos, o IAM exige uma avaliação explícita de declarações específicas em JSON Web Tokens (JWTs), os quais são conhecidos como *controles de provedor de identidade*. Para obter mais informações sobre quais IdPs OIDC têm *controles de provedor de identidade*, consulte [Controles de provedor de identidade para provedores OIDC compartilhados](id_roles_providers_oidc_secure-by-default.md).

O procedimento a seguir descreve como criar o perfil para federação OIDC no Console de gerenciamento da AWS. Para criar uma função na AWS CLI ou na API da AWS, consulte os procedimentos em [Criar um perfil para um provedor de identidade de terceiros](id_roles_create_for-idp.md).

**Importante**  
Se você estiver usando o Amazon Cognito, use o console do Amazon Cognito para configurar as funções. Caso contrário, use o console do IAM para criar uma função para federação OIDC.

**Criar um perfil do IAM para a federação OIDC**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Funções** e **Criar função**.

1. Escolha a **identidade da Web** como o tipo de entidade confiável e selecione **Avançar**.

1. Em **Identity provider** (Provedor de identidades), escolha o IdP para a função: 
   + Se você desejar criar uma função para um IdP da Web individual, selecione **Login with Amazon**, **Facebook** ou **Google**. 
**nota**  
Você deve criar uma função separada para cada IdP que quiser utilizar.
   + Se você desejar criar uma função de cenário avançado para o Amazon Cognito, escolha **Amazon Cognito**. 
**nota**  
Você só precisa criar manualmente uma função para usar com o Amazon Cognito quando está trabalhando em um cenário avançado. Caso contrário, o Amazon Cognito pode criar funções para você. Para obter mais informações sobre o Amazon Cognito, consulte [Provedores externos de identidade de grupos de identidades (identidades federadas)](https://docs.aws.amazon.com/cognito/latest/developerguide/external-identity-providers.html) no *Guia do desenvolvedor do Amazon Cognito*. 
   + Para criar uma função para o GitHub Actions, é necessário adicionar o provedor OIDC do GitHub ao IAM. Depois de adicionar o provedor OIDC do GitHub ao IAM, escolha **token.actions.githubusercontent.com**. 
**nota**  
Para obter informações sobre como configurar a AWS para confiar no provedor de OIDC do GitHub como uma identidade federada, consulte [Documentos do GitHub – Configuração do OpenID Connect na Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services). Para obter informações sobre as práticas recomendadas para limitar o acesso às funções associadas ao IAM IdP para GitHub, consulte [Configurar uma função para o provedor de identidades OIDC GitHub](#idp_oidc_Create_GitHub) nesta página.
   + Se você desejar criar um perfil para a HashiCorp Cloud Platform (HCP) Terraform, comece adicionando o provedor de OIDC do Terraform ao IAM. Depois de adicionar o provedor de OIDC Terraform ao IAM, escolha **app.terraform.io**. 
**Importante**  
Os perfis do IAM para o provedor de OIDC Terraform da HashiCorp Cloud Platform (HCP) devem avaliar a chave de condição do IAM, `app.terraform.io:sub`, na política de confiança do perfil. Essa chave de condição limita quais organizações, projetos, espaços de trabalho ou fases de execução do HCP Terraform são capazes de assumir o perfil. Sem essa chave de condição, sua política de confiança concede acesso ao seu perfil e a recursos da AWS por meio de identidades fora da sua organização, o que não se alinha ao princípio de privilégio mínimo.   
Se você definir ou modificar uma política de confiança de um perfil para um perfil associado ao provedor de OIDC Terraform da HCP em sua conta da AWS, mas não avaliar a chave de condição do IAM `app.terraform.io:sub`, você receberá um erro. Além disso, o AWS STS negará solicitações de autorização se sua política de confiança de perfil não avaliar essa chave de condição.

1. As informações solicitadas variam de acordo com o provedor OIDC que você escolher.
   + Insira o identificador para a aplicação. O rótulo do identificador é alterado de acordo com o provedor escolhido:
     + Se você desejar criar uma função para o Login with Amazon, insira o ID da aplicação na caixa **Application ID** (ID da aplicação).
     + Se você desejar criar uma função para o Facebook, digite o ID da aplicação na caixa **Application ID** (ID da aplicação).
     + Se você desejar criar uma função para o Google, digite o nome do público na caixa **Audience** (Público).
     + Se você desejar criar uma função para o Amazon Cognito, digite o ID do grupo de identidades que você criou para as aplicações do Amazon Cognito na caixa **Identity Pool ID** (ID do grupo de identidades).
   + Para criar uma função para GitHub Actions, insira os seguintes detalhes:
     + Em **Público**, escolha `sts.amazonaws.com`.
     + Em **Organização do GitHub**, insira o nome da organização no GitHub. O nome da organização do GitHub é obrigatório e deve ser alfanumérico, incluindo traços (-). Não é permitido usar caracteres curinga (\$1 e ?) no nome da organização do GitHub.
     + (Opcional) Em **Repositório do GitHub**, insira o URL do seu repositório do GitHub. Se você não especificar um valor, o padrão será um coringa (`*`).
     + (Opcional) em **Filial do GitHub**, insira o nome da filial do GitHub. Se você não especificar um valor, o padrão será um coringa (`*`).
   + Se você desejar criar um perfil para a HashiCorp Cloud Platform (HCP) Terraform, insira os detalhes a seguir:
     + Em **Público**, escolha `aws.workload.identity`.
     + Em **Organização**, insira o nome da organização. É possível especificar um caractere curinga (`*`) para todas as organizações.
     + Em **Projeto**, insira o nome do projeto. É possível especificar um caractere curinga (`*`) para todos os projetos.
     + Em **Workspace**, insira o nome do workspace. É possível especificar um caractere curinga (`*`) para todos os workspaces.
     + Em **Fase de execução**, insira o nome da fase de execução. É possível especificar um caractere curinga (`*`) para todas as fases de execução.

1. (Opcional) em **Condição (opcional)**, escolha **Adicionar condição** para criar condições adicionais que devem ser atendidas para que os usuários da aplicação possam usar as permissões concedidas pela função. Por exemplo, você pode adicionar uma condição que conceda acesso a recursos da AWS apenas para um determinado ID de usuário do IAM. Você também pode adicionar condições à política de confiança após a criação da função. Para obter mais informações, consulte [Atualizar a política de confiança de um perfil](id_roles_update-role-trust-policy.md).

1. Revise suas informações de OIDC e escolha **Próximo**.

1. O IAM inclui uma lista das políticas gerenciadas pela AWS e pelo cliente em sua conta. Selecione a política a ser usada para a política de permissões ou escolha **Create policy** (Criar política) para abrir uma nova guia no navegador e criar uma nova política a partir do zero. Para obter mais informações, consulte [Criação de políticas do IAM](access_policies_create-console.md#access_policies_create-start). Depois de criar a política, feche essa guia e retorne à guia original. Marque a caixa de seleção ao lado das políticas de permissões que você deseja que os usuários do OIDC tenham. Se preferir, você pode optar por não selecionar nenhuma política neste momento e anexar as políticas à função mais tarde. Por padrão, uma função não tem nenhuma permissões.

1. (Opcional) Defina um [limite de permissões](access_policies_boundaries.md). Este é um recurso avançado.

   Abra a seção **Set permissions boundary** (Definir limite de permissões) e escolha **Use a permissions boundary to control the maximum role permissions** (Usar um limite de permissões para controlar o número máximo de permissões de função). Selecione a política a ser usada para o limite de permissões.

1. Escolha **Próximo**.

1. Em **Role name** (Nome da função), insira um nome. Os nomes de função devem ser exclusivos em sua Conta da AWS. Eles não diferenciam maiúsculas e minúsculas. Por exemplo, não é possível criar duas funções denominadas **PRODROLE** e **prodrole**. Como outros recursos da AWS podem referenciar a função, não é possível editar o nome da função depois que ele é criado.

1. (Opcional) Em **Description** (Descrição), insira uma descrição para a nova função.

1. Para editar os casos de uso e as permissões da função, escolha **Edit** (Editar) nas seções **Etapa 1: selecionar entidades confiáveis** ou na **Etapa 2: adicionar permissões**. 

1. (Opcional) Para adicionar metadados à função, anexe tags como pares de chave-valor. Para obter mais informações sobre como usar tags no IAM, consulte [Tags para recursos do AWS Identity and Access Management](id_tags.md).

1. Revise o perfil e escolha **Criar perfil**.

## Configurar uma função para o provedor de identidades OIDC GitHub
<a name="idp_oidc_Create_GitHub"></a>

Se você usar o GitHub como um provedor de identidades (IdP) Open ID Connect (OIDC), a prática recomendada será limitar as entidades que podem assumir o perfil associado ao IdP do IAM. Ao incluir uma instrução de condição na política de confiança, você pode limitar a função a uma organização, repositório ou ramificação específica do GitHub. É possível usar a chave de condição `token.actions.githubusercontent.com:sub` com operadores de condição de string para limitar o acesso. Recomendamos limitar a condição a um conjunto específico de repositórios ou ramificações em sua organização do GitHub. Para obter informações sobre como configurar a AWS para confiar no OIDC do GitHub como uma identidade federada, consulte [GitHub Docs - Configuring OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) ("Documentos do GitHub - Configurar o OpenID Connect na Amazon Web Services"). 

Se você usar ambientes do GitHub em fluxos de trabalho de ação ou em políticas de OIDC, é extremamente recomendável adicionar regras de proteção ao ambiente para aumentar a segurança. Use ramificações e tags de implantação para restringir quais ramificações e tags podem ser implantadas no ambiente. Para obter mais informações sobre a configuração de ambientes com regras de proteção, consulte [Ramificações de implantação e marcas](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-branches-and-tags) no artigo *Usando ambientes para implantação* do GitHub.

Quando o IdP OIDC do GitHub é a entidade principal confiável para seu perfil, o IAM verifica a condição da política de confiança do perfil para verificar se a chave de condição `token.actions.githubusercontent.com:sub` está presente e se seu valor não é apenas um caractere curinga (\$1 e ?) ou nulo. O IAM realiza essa verificação quando a política de confiança é criada ou atualizada. Se a chave de condição `token.actions.githubusercontent.com:sub` não estiver presente ou o valor da chave não satisfizer os critérios de valor mencionados, a solicitação falhará e retornará um erro.

**Importante**  
Se você não limitar a chave de condição `token.actions.githubusercontent.com:sub` a uma organização ou um repositório específico, as ações do GitHub de organizações ou repositórios fora do seu controle poderão assumir perfis associados ao IdP do IAM do GitHub na sua conta da AWS.

O exemplo de política de confiança a seguir limita o acesso à organização, repositório e ramificação definidos do GitHub. O valor da chave de condição `token.actions.githubusercontent.com:sub` no exemplo a seguir é o formato padrão do valor do assunto documentado pelo GitHub.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::012345678910:oidc-provider/token.actions.githubusercontent.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
          "token.actions.githubusercontent.com:sub": "repo:GitHubOrg/GitHubRepo:ref:refs/heads/GitHubBranch"
        }
      }
    }
  ]
}
```

------

O exemplo de condição a seguir limita o acesso à organização e ao repositório definidos do GitHub, mas concede acesso a qualquer ramificação dentro do repositório.

```
"Condition": {
  "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
  },
  "StringLike": {    
    "token.actions.githubusercontent.com:sub": "repo:GitHubOrg/GitHubRepo:*"
  }
}
```

O exemplo de condição a seguir limita o acesso a qualquer repositório ou ramificação dentro da organização do GitHub definida. Recomendamos limitar a chave de condição `token.actions.githubusercontent.com:sub` a um valor específico que limita o acesso ao GitHub Actions de dentro da sua organização do GitHub.

```
"Condition": {
  "StringEquals": {
          "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
  },
  "StringLike": {    
    "token.actions.githubusercontent.com:sub": "repo:GitHubOrg/*"
  }
}
```

Para obter mais informações sobre chaves de federação OIDC disponíveis para verificação de condições nas políticas, consulte [Chaves disponíveis para federação OIDC da AWS](reference_policies_iam-condition-keys.md#condition-keys-wif).

# Criar um perfil para uma federação do SAML 2.0 (console)
<a name="id_roles_create_for-idp_saml"></a>

 Você pode usar a federação do SAML 2.0 em vez de criar usuários do IAM na sua Conta da AWS. Com um provedor de identidade (IdP), você pode gerenciar as identidades de usuários fora da AWS e fornecer a essas identidades de usuários externos permissões para acessar recursos da AWS na sua conta. Para obter mais informações sobre federação e provedores de identidade, consulte [Federação e provedores de identidade na AWS](id_roles_providers.md).

**nota**  
Para melhorar a resiliência da federação, recomendamos que você configure seu IdP e sua  federação da AWS para oferecer suporte a vários endpoints de login do SAML. Para obter detalhes, consulte o artigo do AWS Security Blog [How to use regional SAML endpoints for failover](https://aws.amazon.com/blogs//security/how-to-use-regional-saml-endpoints-for-failover).

## Pré-requisitos para a criação de uma função para o SAML
<a name="idp_saml_Prerequisites"></a>

Para criar uma função para a federação SAML 2.0, você primeiro deve concluir as etapas obrigatórias a seguir.<a name="saml-prereqs"></a>

**Para se preparar para uma função para a federação do SAML 2.0**

1. <a name="idpsamlstep1"></a>Antes de criar uma função para federação baseada em SAML, você deve criar um provedor SAML no IAM. Para obter mais informações, consulte [Criar um provedor de identidades SAML no IAM](id_roles_providers_create_saml.md).

1. Prepare as políticas para a função que os usuários autenticados pelo SAML 2.0 assumirão. Assim como com qualquer função, uma função para a federação do SAML inclui duas políticas. Uma é a política de confiança da função que especifica quem pode assumir a função. A outra é a política de permissões do IAM que especifica as ações e os recursos da AWS aos quais a entidade principal federada SAML tem ou não permissão para acessar.

   Quando você criar a política de confiança para sua função, deverá usar três valores para garantir que a função só possa ser assumida por sua aplicação:
   + No elemento `Action`, use a ação `sts:AssumeRoleWithSAML`.
   + No elemento `Principal`, use a string `{"Federated":ARNofIdentityProvider}`. Substitua `ARNofIdentityProvider` pelo nome de recurso da Amazon (ARN) do [provedor de identidade SAML](id_roles_providers_saml.md) que você criou em [Step 1](#idpsamlstep1).
   + Para o elemento `Condition`, use uma condição `StringEquals` para verificar se o atributo `saml:aud` da resposta SAML corresponde ao URL exibido pelo seu navegador durante o início de sessão no console. Essa URL do endpoint de início de sessão é o atributo de destinatário SAML do seu provedor de identidade. É possível incluir URLs de início de sessão em determinadas regiões. A AWS recomenda usar endpoints regionais em vez do endpoint global para melhorar a resiliência da federação. Para obter uma lista dos possíveis valores de *region-code* (região-código), consulte a coluna **Region** (Região) em [AWS Sign-In endpoints](https://docs.aws.amazon.com/general/latest/gr/signin-service.html) (Endpoints de login da ).

     Se a criptografia SAML for necessária, o URL de início de sessão deverá incluir o identificador exclusivo que a AWS atribui ao seu provedor SAML. É possível visualizar o identificador exclusivo selecionando o provedor de identidade no console do IAM para exibir a página de detalhes.

     `https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID`

   A política de confiança de exemplo a seguir foi projetada para um usuário federado do SAML:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRoleWithSAML",
           "Principal": {
               "Federated": "arn:aws:iam::111122223333:saml-provider/PROVIDER-NAME"
           },
           "Condition": {
               "StringEquals": {
                   "SAML:aud": "https://region-code.signin.aws.amazon.com/saml"
               }
           }
       }
   }
   ```

------

   Substitua o ARN da entidade de segurança pelo ARN real do provedor SAML que você criou no IAM. Ele terá seu próprio ID de conta e nome de provedor. 

## Criar uma função para o SAML
<a name="idp_saml_Create"></a>

Depois de concluir as etapas obrigatórias, você pode criar a função para federação baseada no SAML. 

**Para criar uma função para a federação baseada em SAML**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console do IAM, escolha **Roles (Funções)** e **Criar função (Create role)**.

1. Escolha o tipo de função **Federação SAML 2.0**.

1. Em **SAML Provider** (Provedor SAML), escolha o provedor para a função. 

1. Escolha o método de nível de acesso SAML 2.0. 
   + Escolha **Allow programmatic access only (Permitir acesso programático apenas)** para criar uma função que possa ser assumida programaticamente na API da AWS ou na AWS CLI.
   + Escolha **Allow programmatic and Console de gerenciamento da AWS access** (Permitir acesso programático e do console) para criar uma função que possa ser assumida de forma programática e no Console de gerenciamento da AWS.

   As funções criadas por ambos são semelhantes, mas a função que também pode ser assumida no console inclui uma política de confiança com uma determinada condição. Essa condição garante explicitamente que o público de SAML (atributo `SAML:aud`) seja definido como o endpoint de início de sessão da AWS para seu provedor SAML.

1. O procedimento para definir atributos varia em função do tipo de acesso.
   + Se estiver criando uma função para acesso programático, escolha um atributo na lista **Atributo**. Em seguida, na caixa **Value** (Valor), insira um valor a ser incluído na função. Isso restringe o acesso à função a usuários do provedor de identidade cuja resposta de autenticação SAML (declaração) inclua os atributos especificados. Você deve especificar pelo menos um atributo para garantir que sua função seja limitada a um subconjunto de usuários em sua organização. 
   + Se você estiver criando um perfil para acesso programático e via Console de gerenciamento da AWS, a seção **Endpoints de início de sessão** define o URL que seu navegador exibe durante o início de sessão no console. Esse endpoint é o atributo de destinatário SAML do seu provedor de identidade, que é mapeado na chave de contexto [`saml:aud`](reference_policies_iam-condition-keys.md#condition-keys-saml). Para obter mais informações, consulte [Configurar declarações SAML para a resposta de autenticação](id_roles_providers_create_saml_assertions.md).

     1. Escolha **Endpoints regionais** ou **Endpoint não regional**. Recomendamos o uso de vários endpoints de início de sessão SAML regionais para melhorar a resiliência da federação.

     1. Em **Regiões**, escolha as regiões às quais seu provedor de SAML oferece suporte para início de sessão na AWS.

     1.  Em **URLs de início de sessão devem incluir identificadores exclusivos**, selecione se os endpoints de início de sessão incluem os identificadores exclusivos que a AWS atribui ao seu provedor de identidade SAML. Essa opção é necessária para asserções SAML criptografadas. Para obter mais informações, consulte [Federação SAML 2.0](id_roles_providers_saml.md).

1. Para adicionar à política de confiança mais condições relacionadas a atributos, escolha **Condition (optional)** (Adicionar condições [opcional]), selecione a condição adicional e especifique um valor. 
**nota**  
A lista inclui os atributos do SAML usados com mais frequência. O IAM oferece suporte a atributos adicionais que você pode usar para criar condições. Para obter uma lista dos atributos com suporte, consulte [Chaves disponíveis para a federação do SAML](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#condition-keys-saml) Se precisar de uma condição para um atributo do SAML compatível que não esteja na lista, você poderá adicionar essa condição manualmente. Para fazer isso, edite a política de confiança depois de criar a função.

1.  Revise as informações de confiança do SAML 2.0 e, em seguida, escolha **Next** (Avançar). 

1. O IAM inclui uma lista das políticas gerenciadas pela AWS e pelo cliente em sua conta. Selecione a política a ser usada para a política de permissões ou escolha **Create policy** (Criar política) para abrir uma nova guia no navegador e criar uma nova política a partir do zero. Para obter mais informações, consulte [Criação de políticas do IAM](access_policies_create-console.md#access_policies_create-start). Depois de criar a política, feche essa guia e retorne à guia original. Marque a caixa de seleção ao lado das políticas de permissões que deseja que os usuários federados SAML tenham. Se preferir, você pode optar por não selecionar nenhuma política neste momento e anexar as políticas à função mais tarde. Por padrão, uma função não tem nenhuma permissões.

1. (Opcional) Defina um [limite de permissões](access_policies_boundaries.md). Este é um recurso avançado.

   Abra a seção **Set permissions boundary** (Definir limite de permissões) e escolha **Use a permissions boundary to control the maximum role permissions** (Usar um limite de permissões para controlar o número máximo de permissões de função). Selecione a política a ser usada para o limite de permissões.

1. Escolha **Próximo**.

1. Escolha **Próximo: revisar**.

1. Em **Role name** (Nome da função), insira um nome. Os nomes de função devem ser exclusivos em sua Conta da AWS. Eles não são diferenciados por letras maiúsculas e minúsculas. Por exemplo, não é possível criar perfis denominados **PRODROLE** e **prodrole**. Como outros recursos de AWS podem fazer referência à função, não é possível editar o nome da função depois de ela ser criada. 

1. (Opcional) Em **Description** (Descrição), insira uma descrição para a nova função.

1. Escolha **Edit** (Editar) nas seções **Etapa 1: selecionar entidades confiáveis** ou na **Etapa 2: adicionar permissões** para editar os casos de uso e as permissões para a função. 

1. (Opcional) Adicione metadados à função anexando tags como pares de chave-valor. Para obter mais informações sobre como usar tags no IAM, consulte [Tags para recursos do AWS Identity and Access Management](id_tags.md).

1. Revise o perfil e escolha **Criar perfil**.

Depois de criar a função, você conclui a confiança do SAML configurando o software do provedor de identidade com informações sobre a AWS. Essas informações incluem as funções que você deseja que seus usuários federados SAML usem. Isso é chamado de configuração da confiança da parte confiável entre seu IdP e a AWS. Para obter mais informações, consulte [Configurar o IdP SAML 2.0 com objeto de confiança de terceira parte confiável e adição de declarações](id_roles_providers_create_saml_relying-party.md). 

# Criar um perfil usando políticas de confiança personalizadas
<a name="id_roles_create_for-custom"></a>

Você pode criar uma política de confiança personalizada para delegar acesso e permitir que outras pessoas realizem ações na sua Conta da AWS. Para obter mais informações, consulte [Criação de políticas do IAM](access_policies_create-console.md#access_policies_create-start).

Para obter informações sobre como usar funções para delegar permissões, consulte [Termos e conceitos das funções](id_roles.md#id_roles_terms-and-concepts).

## Criar um perfil do IAM usando políticas de confiança personalizada (console)
<a name="roles-creatingrole-custom-trust-policy-console"></a>

Você pode usar o Console de gerenciamento da AWS para criar uma função que um usuário do IAM pode assumir. Por exemplo, suponha que sua organização tem várias Contas da AWS para isolar um ambiente de desenvolvimento de um ambiente de produção. Para obter informações de alto nível sobre a criação de uma função que permita que os usuários na conta de desenvolvimento acessem recursos na conta de produção, consulte [Cenário de exemplo que usa contas separadas de desenvolvimento e produção](id_roles_common-scenarios_aws-accounts.md#id_roles_common-scenarios_aws-accounts-example).

**Para criar uma função usando uma política de confiança personalizadas (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM, em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console, escolha **Roles** (Perfis) e, em seguida, clique em **Create role** (Criar perfil).

1. Selecione o tipo de função **Custom trust policy** (Política de confiança personalizada).

1. Na seção **Custom trust policy** (Política de confiança personalizada), insira ou cole a política de confiança personalizada para a função. Para obter mais informações, consulte [Criação de políticas do IAM](access_policies_create-console.md#access_policies_create-start).

1. Resolva os avisos de segurança, erros ou avisos gerais gerados durante a [validação de política](access_policies_policy-validator.md) e depois escolha **Next** (Avançar).

1. (Opcional) Defina um [limite de permissões](access_policies_boundaries.md). Esse é um atributo avançado que está disponível para perfis de serviço, mas não para perfis vinculados ao serviço.

   Abra a seção **Set permissions boundary** (Definir limite de permissões) e escolha **Use a permissions boundary to control the maximum role permissions** (Usar um limite de permissões para controlar o número máximo de permissões de função). O IAM inclui uma lista das políticas gerenciadas pela AWS e pelo cliente em sua conta. Selecione a política a ser usada para o limite de permissões.

1. Escolha **Próximo**.

1. Para **Nome do perfil**, o grau de personalização do nome do perfil é definido pelo serviço. Se o serviço definir o nome da função, essa opção não será editável. Em outros casos, o serviço pode definir um prefixo para a função e permitir que você informe um sufixo opcional. Alguns serviços permitem que você especifique todo o nome de sua função.

   Se possível, insira um nome de função ou um sufixo de nome de função. Os nomes de função devem ser exclusivos em sua Conta da AWS. Eles não são diferenciados por letras maiúsculas e minúsculas. Por exemplo, não é possível criar perfis denominados **PRODROLE** e **prodrole**. Como outros recursos de AWS podem fazer referência à função, não é possível editar o nome da função depois de ela ser criada.

1. (Opcional) Em **Description** (Descrição), insira uma descrição para a nova função.

1. (Opcional) Escolha **Editar** nas seções **Etapa 1: selecionar entidades confiáveis** ou **Etapa 2: adicionar permissões** para editar a política personalizada e as permissões do perfil. 

1. (Opcional) Adicione metadados à função anexando tags como pares de chave-valor. Para obter mais informações sobre como usar tags no IAM, consulte [Tags para recursos do AWS Identity and Access Management](id_tags.md).

1. Revise o perfil e escolha **Criar perfil**.

# Exemplos de políticas para delegação de acesso
<a name="id_roles_create_policy-examples"></a>

Os exemplos a seguir mostram como você pode permitir ou conceder acesso para uma Conta da AWS aos recursos em outra Conta da AWS. Para saber como criar uma política do IAM usando esses exemplos de documentos de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

**Topics**
+ [

## Uso de perfis para delegar acesso aos recursos de outra Conta da AWS
](#example-delegate-xaccount-rolesapi)
+ [

## Uso de uma política para delegar acesso a serviços
](#id_roles_create_policy-examples-access-to-services)
+ [

## Uso de uma política baseada em recurso para delegar acesso a um bucket do Amazon S3 em outra conta
](#example-delegate-xaccount-S3)
+ [

## Uso de uma política baseada em recurso para delegar acesso a uma fila do Amazon SQS em outra conta
](#example-delegate-xaccount-SQS)
+ [

## Não é possível delegar acesso quando o acesso à conta é negado
](#example-delegate-xaccount-SQS-denied)

## Uso de perfis para delegar acesso aos recursos de outra Conta da AWS
<a name="example-delegate-xaccount-rolesapi"></a>

 Para obter um tutorial que mostra como usar funções do IAM para conceder aos usuários em uma conta acesso a recursos da AWS que estão em outra conta, consulte [Tutorial do IAM: Delegar acesso entre contas da AWS usando funções do IAM](tutorial_cross-account-with-roles.md). 

**Importante**  
Você pode incluir o ARN de uma função ou usuário específico no elemento `Principal` de uma política de confiança de função. Quando você salva a política, o AWS transforma o ARN em um ID principal exclusivo. Isso ajuda a reduzir o risco de alguém elevar seus privilégios ao remover e recriar a função ou usuário. Normalmente, você não vê esse ID no console, porque há também uma transformação reversa de volta para o ARN quando a política de confiança é exibida. No entanto, se você excluir a função ou usuário, o relacionamento é interrompido. A política não se aplica mais, mesmo se você recriar o usuário ou a função, pois ela não corresponde ao ID principal armazenado na política de confiança. Quando isso acontece, o ID principal é exibido no console, pois a AWS não pode mais mapeá-lo de volta para um ARN. O resultado é que, se você excluir e recriar um usuário ou uma função referenciados no elemento `Principal` de uma política de confiança, você deverá editar a função para substituir o nome de recurso da Amazon (ARN). Ele é transformado no novo ID principal quando você salva a política.

## Uso de uma política para delegar acesso a serviços
<a name="id_roles_create_policy-examples-access-to-services"></a>

O exemplo a seguir mostra uma política que pode ser anexada a uma função. A política permite que dois serviços, Amazon EMR e AWS Data Pipeline, assumam a função. Os serviços podem então realizar qualquer tarefa concedida pela política de permissões atribuída à função (não exibida). Para especificar vários principais de serviço, você não especifica dois elementos `Service`; pode ter apenas um. Em vez disso, você usa uma variedade de principais de serviços múltiplas como o valor de um único elemento `Service`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "elasticmapreduce.amazonaws.com",
          "datapipeline.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

## Uso de uma política baseada em recurso para delegar acesso a um bucket do Amazon S3 em outra conta
<a name="example-delegate-xaccount-S3"></a>

Neste exemplo, a conta A usa uma política baseada em recurso (uma [política de bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucketPolicies.html) do Amazon S3) para conceder à conta B o acesso total ao bucket do S3 da conta A. Em seguida, a conta B cria uma política de usuário do IAM para delegar esse acesso ao bucket da conta A a um dos usuários na conta B. 

A política de bucket do S3 na conta A pode se parecer com a seguinte política. Neste exemplo, o bucket do S3 da conta A é denominado *amzn-s3-demo-bucket* e o número da conta B é 111122223333. Ele não especifica quaisquer usuários individuais ou grupos na conta B, apenas a conta em si.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "AccountBAccess1",
    "Effect": "Allow",
    "Principal": {"AWS": "111122223333"},
    "Action": "s3:*",
    "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket",
      "arn:aws:s3:::amzn-s3-demo-bucket/*"
    ]
  }
}
```

------

Como alternativa, a conta A pode usar as [Listas de controle de acesso (ACLs)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3_ACLs_UsingACLs.html) do Amazon S3 para conceder à conta B acesso ao bucket do S3 ou a um único objeto de um bucket. Nesse caso, a única coisa que muda é como a conta A concede acesso à conta B. A conta B ainda usa uma política para delegar acesso a um grupo do IAM na conta B, conforme descrito na próxima parte deste exemplo. Para mais informações sobre como controlar o acesso em objetos e buckets do S3, acesse [Controle de acesso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingAuthAccess.html) no *Guia do usuário do Amazon Simple Storage Service*. 

O administrador da conta B pode criar a seguinte política de exemplo. A política concede acesso de leitura a um grupo ou usuário na conta B. A política anterior concede acesso à conta B. No entanto, grupos e usuários individuais na conta B não podem acessar o recurso até que uma política de grupo ou usuário explicitamente conceda permissões ao recurso. As permissões nesta política podem ser apenas um subconjunto das permissões anteriores de políticas entre contas. A conta B não pode conceder mais permissões para seus grupos e usuários do que a conta A concedeu para a conta B na primeira política. Nesta política, o elemento `Action` é explicitamente definido para permitir apenas ações `List` e o elemento `Resource` desta política corresponde ao `Resource` para a política de bucket implantada pela conta A.

Para implementar essa política, a conta B usa o IAM para anexá-la ao usuário (ou grupo) apropriado na conta B. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:List*",
    "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket",
      "arn:aws:s3:::amzn-s3-demo-bucket/*"
    ]
  }
}
```

------

## Uso de uma política baseada em recurso para delegar acesso a uma fila do Amazon SQS em outra conta
<a name="example-delegate-xaccount-SQS"></a>

No exemplo a seguir, a conta A tem uma fila do Amazon SQS que usa uma política baseada em recurso anexada à fila para conceder acesso à fila para a conta B. Em seguida, a conta B usa uma política de grupo do IAM para delegar acesso a um grupo na conta B. 

O seguinte exemplo de política de fila concede à conta B permissão para realizar as ações `SendMessage` e `ReceiveMessage` na fila da conta A chamada *queue1*, mas apenas entre o meio-dia e 15:00 em 30 de novembro de 2014. O número de conta da conta B é 1111-2222-3333. A conta A usa o Amazon SQS para implementar esta política. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Principal": {"AWS": "111122223333"},
    "Action": [
      "sqs:SendMessage",
      "sqs:ReceiveMessage"
    ],
    "Resource": ["arn:aws:sqs:*:123456789012:queue1"],
    "Condition": {
      "DateGreaterThan": {"aws:CurrentTime": "2014-11-30T12:00Z"},
      "DateLessThan": {"aws:CurrentTime": "2014-11-30T15:00Z"}
    }
  }
}
```

------

A política da conta B para delegar acesso a um grupo na conta B pode se parecer com o exemplo a seguir. A conta B usa o IAM para anexar essa política a um grupo (ou usuário). 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "sqs:*",
    "Resource": "arn:aws:sqs:*:123456789012:queue1"
  }
}
```

------

No exemplo de política de usuário do IAM anterior, a conta B usa um caractere curinga para conceder a seu usuário acesso a todas as ações do Amazon SQS na fila da conta A. No entanto, a conta B pode delegar acesso somente na medida em que o acesso foi concedido a ela. O grupo da conta B que tem a segunda política pode acessar a fila apenas entre meio-dia e 15:00 em 30 de novembro de 2014. O usuário só pode executar as ações `SendMessage` e `ReceiveMessage`, conforme definido na política de fila do Amazon SQS da conta A. 

## Não é possível delegar acesso quando o acesso à conta é negado
<a name="example-delegate-xaccount-SQS-denied"></a>

Uma Conta da AWS não pode delegar acesso aos recursos de outra conta se a outra conta tiver explicitamente negado o acesso à conta pai do usuário. A negação se propaga para os usuários daquela conta, independentemente de terem ou não políticas existentes que concedam acesso a eles.

Por exemplo, a conta A grava uma política de bucket no bucket do S3 da conta A que explicitamente nega o acesso da conta B ao bucket da conta A. Mas a conta B escreve uma política de usuário do IAM que concede a um usuário na conta B acesso ao bucket da conta A. A negação explícita aplicada ao bucket do S3 da conta A se propaga para os usuários da conta B e substitui a política de usuário do IAM que concede acesso ao usuário da conta B. (Para obter informações detalhadas sobre como as permissões são avaliadas, consulte [Lógica da avaliação de política](reference_policies_evaluation-logic.md).) 

A política de bucket da conta A pode se parecer com a seguinte política. Neste exemplo, o bucket do S3 da conta A é denominado *amzn-s3-demo-bucket* e o número da conta B é 1111-2222-3333.. A conta A usa o Amazon S3 para implementar esta política. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "AccountBDeny",
    "Effect": "Deny",
    "Principal": {"AWS": "111122223333"},
    "Action": "s3:*",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
  }
}
```

------

Esta negação explícita substitui todas as políticas na conta B que concedem permissão para acessar o bucket do S3 na conta A. 

# Gerenciamento de perfis do IAM
<a name="id_roles_manage"></a>

Para que um usuário, uma aplicação ou um serviço possa usar um perfil que você criou, você deverá conceder permissões para alternar para esse perfil. É possível usar qualquer política anexada a grupos ou usuários para conceder as permissões necessárias. Esta seção descreve como conceder aos usuários permissão para usar uma função. Ela também explica como o usuário pode alternar para uma função no Console de gerenciamento da AWS, no Tools for Windows PowerShell, no AWS Command Line Interface (AWS CLI) e na API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html).

**Importante**  
Ao criar uma função de forma programática, em vez de no console do IAM, você tem a opção de adicionar um `Path` de até 512 caracteres além do `RoleName`, que pode ter até 64 caracteres. No entanto, se você pretende usar uma função com o recurso **Switch Role** (Alternar função) no Console de gerenciamento da AWS, o `Path` e o `RoleName` combinados não podem exceder 64 caracteres.

**Topics**
+ [

## Visualizar acesso à função
](#roles-modify_prerequisites)
+ [

## Gerar uma política com base em informações de acesso
](#roles-modify_gen-policy)
+ [

# Conceder permissões a um usuário para alternar perfis
](id_roles_use_permissions-to-switch.md)
+ [

# Conceda permissões a um usuário para passar um perfil para um serviço da AWS
](id_roles_use_passrole.md)
+ [

# Revogar as credenciais de segurança temporárias do perfil do IAM
](id_roles_use_revoke-sessions.md)
+ [

# Atualizar um perfil vinculado ao serviço
](id_roles_update-service-linked-role.md)
+ [

# Atualizar a política de confiança de um perfil
](id_roles_update-role-trust-policy.md)
+ [

# Atualizar permissões para um perfil
](id_roles_update-role-permissions.md)
+ [

# Atualizar as configurações de um perfil
](id_roles_update-role-settings.md)
+ [

# Excluir perfis ou perfis de instância
](id_roles_manage_delete.md)

## Visualizar acesso à função
<a name="roles-modify_prerequisites"></a>

Antes de alterar as permissões de uma função, você deve revisar a atividade no nível de serviço recente. Isso é importante porque você não deseja remover acesso de uma entidade principal (pessoa ou aplicativo) que está usando. Para obter mais informações sobre como visualizar as informações acessadas por último, consulte [Refinar permissões na AWS usando informações do último acesso](access_policies_last-accessed.md).

## Gerar uma política com base em informações de acesso
<a name="roles-modify_gen-policy"></a>

Às vezes, você pode conceder permissões a uma entidade do IAM (usuário ou função) além do que é exigido. Para ajudar você a refinar as permissões concedidas, você pode gerar uma política do IAM baseada na atividade de acesso para uma entidade. O IAM Access Analyzer revisa seus logs do AWS CloudTrail e gera um modelo de política que contém as permissões que foram usadas pela entidade no intervalo de datas especificado. Você pode usar o modelo para criar uma política gerenciada com permissões refinadas e anexá-la à entidade do IAM. Dessa forma, você concede apenas as permissões de que o usuário ou a função precisa para interagir com os recursos da AWS para seu caso de uso específico. Para saber mais, consulte [Geração de políticas do IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html).

# Conceder permissões a um usuário para alternar perfis
<a name="id_roles_use_permissions-to-switch"></a>

Ao [criar um perfil para acesso entre contas](id_roles_create_for-user.md), o administrador estabelece confiança entre a conta que possui perfil, os recursos (conta de confiança) e a conta que contém os usuários (conta confiável). Para fazer isso, o administrador da conta confiável especifica o número da conta de confiança como `Principal` na política de confiança da função. Isso *potencialmente* permite que qualquer usuário na conta confiável assuma o perfil. Para concluir a configuração, o administrador da conta confiável deve conceder a grupos ou usuários específicos nessa conta permissão para alternar para a função.

**Para conceder permissão para alternar para um perfil**

1. Como administrador da conta confiável, crie uma nova política para o usuário ou edite uma política existente adicionando os elementos necessários. Para obter detalhes, consulte [Criação ou edição da política](#roles-usingrole-createpolicy).

1. Em seguida, escolha como deseja compartilhar as informações do perfil: 
   + **Link do perfil:** envie aos usuários um link que os leve para a página **Switch Role** (Alternar perfil) com todos os detalhes já preenchidos. 
   + **Account ID or alias** (ID ou alias da conta): forneça a cada usuário o nome do perfil com o número de ID da conta ou o alias da conta. Em seguida, o usuário acessa a página **Alternar função** e adiciona os detalhes manualmente. 

   Para obter detalhes, consulte [Fornecer informações ao usuário](#roles-usingrole-giveuser).

Observe que você só pode alternar funções quando fizer login como um usuário do IAM, uma função federada SAML ou uma função federada de identidade da web. Você não pode mudar de funções quando se conecta como o Usuário raiz da conta da AWS.

**Importante**  
Não é possível alternar perfis no Console de gerenciamento da AWS para um perfil que exija um valor [ExternalId](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id). Você só pode alternar para tal perfil chamando a API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html), que é compatível com o parâmetro `ExternalId`.

**Observações**  
Este tópico aborda políticas para um *usuário*, porque, em última análise, você está concedendo permissões a um usuário para realizar uma tarefa. Porém, não recomendamos conceder permissões diretamente a um usuário individual. Ao assumir um perfil, o usuário recebe as permissões associadas a esse perfil.
Quando você muda de funções no Console de gerenciamento da AWS, o console sempre usa suas credenciais originais para autorizar a mudança. Isso se aplica se você fizer login como usuário do IAM, como função federada SAML ou como função federada de identidade da Web. Por exemplo, se você mudar para RoleA, o IAM utilizará o usuário original ou as credenciais de perfil federado para determinar se você tem permissão para assumir o RoleA. Se você tentar mudar para a FunçãoB *enquanto estiver usando a FunçãoA*, o usuário **original** ou as credenciais de função federada serão usadas para autorizar sua tentativa. As credenciais para RoleA não são usadas para essa ação.

**Topics**
+ [

## Criação ou edição da política
](#roles-usingrole-createpolicy)
+ [

## Fornecer informações ao usuário
](#roles-usingrole-giveuser)

## Criação ou edição da política
<a name="roles-usingrole-createpolicy"></a>

Uma política que conceda a um usuário permissão para assumir uma função deve incluir uma instrução com o efeito `Allow` sobre o seguinte: 
+ A ação `sts:AssumeRole`
+ O Amazon Resource Name (ARN – Nome de recurso da Amazon) da função em um elemento `Resource`

Os usuários que obtêm a política têm permissão para alternar perfis no recurso listado (por meio da associação do grupo ou anexado diretamente).

**nota**  
Se `Resource` for definido como `*`, o usuário poderá assumir qualquer função em qualquer conta que confie na conta do usuário. (Em outras palavras, a política de confiança da função especifica a conta do usuário como `Principal`). Como melhor prática, recomendamos que você siga o [princípio do menor privilégio](http://en.wikipedia.org/wiki/Principle_of_least_privilege) e especifique o ARN completo apenas para as funções de que o usuário precisa.

O exemplo a seguir mostra uma política que permite que o usuário assuma funções em apenas uma conta. Além disso, a política usa um curinga (\$1) para especificar que o usuário só pode alternar para uma função caso o nome da função comece com as letras `Test`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111122223333:role/Test*"
    }
}
```

------

**nota**  
As permissões que a função concede ao usuário não são adicionadas às permissões já concedidas ao usuário. Quando um usuário alterna para uma função, ele desiste temporariamente de suas permissões originais em troca das concedidas pela função. Quando o usuário sai da função, as permissões originais do usuário são restauradas automaticamente. Por exemplo, digamos que as permissões do usuário permitam trabalhar com instâncias do Amazon EC2, mas a política de permissões da função não conceda essas permissões. Nesse caso, enquanto usa a função, o usuário não pode trabalhar com instâncias do Amazon EC2 no console. Além disso, as credenciais temporárias obtidas por meio de `AssumeRole` não funcionam com instâncias do Amazon EC2 de maneira programática.

## Fornecer informações ao usuário
<a name="roles-usingrole-giveuser"></a>

Depois de criar uma função e conceder ao usuário permissões a fim de alternar para ela, você deverá fornecer ao usuário o seguinte:
+ O nome da função
+ O ID ou o alias da conta que contém a função

Você pode simplificar o acesso para seus usuários enviando a eles um link pré-configurado com o ID da conta e o nome do perfil. Você pode ver o link do perfil depois de concluir o assistente de **Criar perfil** selecionando o banner **Exibir perfil** ou na página **Resumo do perfil** para qualquer perfil habilitado para várias contas.

Você também pode usar o seguinte formato para construir manualmente o link. Substitua o ID ou o alias da conta e o nome da função para os dois parâmetros no exemplo a seguir.

`https://signin.aws.amazon.com/switchrole?account=your_account_ID_or_alias&roleName=optional_path/role_name`

Recomendamos direcionar seus usuários a [Mudar de um usuário para um perfil do IAM (console)](id_roles_use_switch-role-console.md) para orientá-los durante o processo. Para solucionar problemas comuns que você pode encontrar ao assumir um perfil, consulte [Não consigo assumir uma função](troubleshoot_roles.md#troubleshoot_roles_cant-assume-role).

**Considerações**
+ Se você criar o perfil de forma programática, poderá criá-lo com um caminho e um nome. Se você fizer isso, deverá fornecer o caminho completo e o nome da função aos usuários para que eles possam inseri-los na página **Switch Role** (Alternar função) do Console de gerenciamento da AWS. Por exemplo: `division_abc/subdivision_efg/role_XYZ`.
+ Se você criar um perfil de forma programática, poderá adicionar um `Path` de até 512 caracteres e um `RoleName`. O nome da função pode ter até 64 caracteres. No entanto, para usar uma função com o recurso **Switch Role** (Alternar função) no Console de gerenciamento da AWS, o `Path` e o `RoleName` combinados não podem exceder 64 caracteres.
+ Por motivos de segurança, você pode [revisar logs do AWS CloudTrail](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) para saber quem executou uma ação na AWS. Você pode usar a chave de condição `sts:SourceIdentity` na política de confiança da função para exigir que os usuários especifiquem uma identidade quando assumirem uma função. Por exemplo, você pode exigir que os usuários do IAM especifiquem seu próprio nome de usuário como a identidade-fonte. Isso pode ajudar você a determinar qual usuário executou uma ação específica na AWS. Para obter mais informações, consulte [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity). Você também pode usar [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname) para exigir que os usuários especifiquem um nome de sessão quando assumirem uma função. Isso pode ajudar você a diferenciar as sessões de função quando uma função é usada por diferentes entidades de segurança.

# Conceda permissões a um usuário para passar um perfil para um serviço da AWS
<a name="id_roles_use_passrole"></a>

Para configurar muitos produtos da AWS é necessário *passar* uma função do IAM para o serviço. Isso permite que o serviço assuma a função posteriormente e realize ações em seu nome. Para a maioria dos serviços, você só precisa passar a função para o serviço uma vez durante a configuração, não toda vez que o serviço assumir a função. Por exemplo, suponha que você tenha uma aplicação em execução em uma instância do Amazon EC2. Esse aplicativo requer credenciais temporárias para autenticação, além de permissões para autorizar o aplicativo a executar ações na AWS. Ao configurar a aplicação, você deve passar uma função para o Amazon EC2 usar com a instância que fornece essas credenciais. Defina as permissões para as aplicações em execução na instância anexando uma política do IAM à função. O aplicativo assume a função sempre que necessário para executar as ações que são permitidas pela função.

Para transmitir uma função (e suas permissões) para um serviço da AWS, um usuário deve ter permissões para *transmitir a função* para o serviço. Isso ajuda os administradores a garantir que apenas usuários aprovados possam configurar um serviço com uma função que concede permissões. Para permitir que um usuário passe uma função para um produto da AWS, você deve conceder a permissão `PassRole` ao usuário, à função ou ao grupo do IAM do usuário.

**Atenção**  
A permissão `PassRole` só pode ser usada para passar um perfil do IAM para um serviço que compartilha a mesma conta da AWS. Para passar um perfil na Conta A para um serviço na Conta B, primeiro é necessário criar um perfil do IAM na Conta B que possa assumir o perfil da Conta A. Em seguida, o perfil na Conta B pode ser passado para o serviço. Para obter detalhes, consulte [Acesso a recursos entre contas no IAM](access_policies-cross-account-resource-access.md).
Não tente controlar quem pode passar por uma função marcando a função e, em seguida, usando a chave de condição `ResourceTag` em uma política com a ação `iam:PassRole`. Os resultados dessa abordagem não são confiáveis.

Ao definir a permissão `PassRole`, é necessário garantir que um usuário não passe um perfil em que o perfil tenha mais permissões do que você deseja que o usuário tenha. Por exemplo, Alice pode não ter permissão para realizar nenhuma ação do Amazon S3. Se Alice pudesse passar um perfil para um serviço que permite ações do Amazon S3, o serviço poderia realizar ações do Amazon S3 em nome de Alice ao executar o trabalho.

Ao especificar um perfil vinculado ao serviço, você também precisa ter permissão para atribuir o perfil ao serviço. Alguns serviços criam automaticamente uma função vinculada ao serviço na sua conta quando você executa uma ação nesse serviço. Por exemplo, o Amazon EC2 Auto Scaling cria a função vinculada ao serviço `AWSServiceRoleForAutoScaling` quando você cria um grupo do Auto Scaling pela primeira vez. Se tentar especificar o perfil vinculado ao serviço ao criar um grupo do Auto Scaling e não tiver a permissão `iam:PassRole`, você receberá um erro. Se você não especificar explicitamente o perfil, a permissão `iam:PassRole` não será necessária, e o padrão é usar o perfil `AWSServiceRoleForAutoScaling` para todas as operações executadas no grupo. Para saber quais serviços dão suporte a funções vinculadas ao serviço, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md). Para saber quais serviços criam automaticamente uma função vinculada quando você executa uma ação no serviço, escolha o link **Sim** e visualize a documentação das funções vinculadas a serviços para o serviço.

Um usuário pode transmitir um ARN da função como um parâmetro em qualquer operação da API que usa a função para atribuir permissões ao serviço. Em seguida, o serviço verifica se esse usuário tem a permissão `iam:PassRole`. Para limitar o usuário a passar apenas as funções aprovadas, filtre a permissão `iam:PassRole` com o elemento `Resources` da instrução de política do IAM. 

Você pode usar o elemento `Condition` em uma política JSON para testar o valor das chaves incluídas no contexto de solicitação de todas as solicitações da AWS. Para saber mais sobre como usar chaves de condição em uma política, consulte [Elementos de política JSON do IAM: Condition](reference_policies_elements_condition.md). A chave de condição `iam:PassedToService` pode ser usada para especificar o principal de serviço do serviço para o qual uma função pode ser passada. Para saber mais sobre como usar a chave de `iam:PassedToService` condição em uma política, consulte [iam:PassedToService](reference_policies_iam-condition-keys.md#ck_PassedToService).

**Exemplo 1**  
Suponha que você deseja conceder a um usuário a capacidade de transmitir qualquer função de um conjunto de funções aprovadas para o serviço Amazon EC2 ao executar uma instância. Três elementos são necessários:
+ Uma *política de permissões* do IAM anexada à função que determina o que a função pode fazer. Defina as permissões para apenas as ações que a função deve realizar e os recursos que a função precisa para essas ações. Você pode usar a política de permissões do IAM gerenciada pela AWS ou criada para o cliente.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": {
          "Effect": "Allow",
          "Action": [ "A list of the permissions the role is allowed to use" ],
          "Resource": [ "A list of the resources the role is allowed to access" ]
      }
  }
  ```

------
+ Uma* política de confiança* para a função que permite que o serviço assuma a função. Por exemplo, você pode anexar a seguinte política de confiança à função com a ação `UpdateAssumeRolePolicy`. Essa política de confiança permite que o Amazon EC2 use a função e as permissões anexadas à função.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": {
          "Sid": "TrustPolicyStatementThatAllowsEC2ServiceToAssumeTheAttachedRole",
          "Effect": "Allow",
          "Principal": { "Service": "ec2.amazonaws.com" },
         "Action": "sts:AssumeRole"
      }
  }
  ```

------
+ Uma *política de permissões* do IAM anexada ao usuário do IAM que permite que o usuário transmita apenas as funções aprovadas. Geralmente `iam:GetRole` é adicionada a `iam:PassRole` para que o usuário possa obter os detalhes da função a ser transmitida. Neste exemplo, o usuário pode transmitir apenas funções que existam na conta especificada com nomes começando com `EC2-roles-for-XYZ-`:

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iam:GetRole",
                  "iam:PassRole"
              ],
              "Resource": "arn:aws:iam::111122223333:role/EC2-roles-for-XYZ-*"
          }
      ]
  }
  ```

------

Agora o usuário pode iniciar uma instância do Amazon EC2 com uma função atribuída. Os aplicativos em execução na instância podem acessar credenciais temporárias para a função por meio de metadados do perfil da instância. As políticas de permissões anexadas à função determinam o que a instância pode fazer. 

**Exemplo 2**  
O Amazon Relational Database Service (Amazon RDS) é compatível com um recurso chamado **Monitoramento aprimorado**. Este recurso permite que o Amazon RDS monitore uma instância de banco de dados usando um agente. Ele também permite que o Amazon RDS registre métricas de log no Amazon CloudWatch Logs. Para habilitar esse recurso, você deve criar uma função de serviço para conceder ao Amazon RDS permissões para monitorar e gravar métricas em seus logs. 

**Para criar uma função para o monitoramento aprimorado do Amazon RDS**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Selecione **Funções** e, depois, **Criar função**.

1. Escolha o tipo de perfil **Serviço da AWS** e, em **Casos de uso para outros Serviços da AWS**, escolha o serviço **RDS**. Escolha **RDS – Enhanced Monitoring** (RDS: monitoramento aprimorado) e, em seguida **Next** (Avançar).

1. Escolha a política de permissões **AmazonRDSEnhancedMonitoringRole**.

1. Escolha **Próximo**.

1. Em **Role name** (Nome da função), insira um nome de função que ajude a identificar a finalidade da função. Os nomes de função devem ser exclusivos em sua Conta da AWS. Ao ser usado em uma política ou como parte de um ARN, o nome de perfil diferencia maiúsculas de minúsculas. Quando exibida para os clientes no console, por exemplo, como durante o processo de login, o nome de função não diferencia maiúsculas de minúsculas. Como várias entidades podem fazer referência à função, não é possível editar o nome da função depois de criada.

1. (Opcional) Em **Description** (Descrição), insira uma descrição para o nova função.

1. (Opcional) Adicione metadados ao usuário anexando tags como pares de chave-valor. Para obter mais informações sobre como usar tags no IAM, consulte [Tags para recursos do AWS Identity and Access Management](id_tags.md).

1. Revise o perfil e escolha **Criar perfil**.

A função obtém, automaticamente, uma política de confiança que concede as permissões de serviço `monitoring.rds.amazonaws.com` para assumir a função. Depois disso, o Amazon RDS pode executar todas as ações que a política `AmazonRDSEnhancedMonitoringRole` permite.

O usuário que você deseja que acesse o monitoramento aprimorado precisa de uma política com uma declaração que permita que o usuário liste os perfis do RDS e uma declaração que permita ao usuário transmitir a função, como apresentado a seguir. Use o número da sua conta e substitua o nome do perfil pelo nome fornecido na etapa 6.

```
    {
      "Sid": "PolicyStatementToAllowUserToListRoles",
      "Effect": "Allow",
      "Action": ["iam:ListRoles"],
      "Resource": "*"
    },
    {
        "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole",
        "Effect": "Allow",
        "Action": [ "iam:PassRole" ],
        "Resource": "arn:aws:iam::account-id:role/RDS-Monitoring-Role"
    }
```

Você pode combinar esta instrução com instruções em outra política ou colocá-la em sua própria política. Em vez de especificar que o usuário pode passar qualquer função que comece com `RDS-`, é possível substituir o nome da função no ARN do recurso por um curinga, por exemplo:

```
        "Resource": "arn:aws:iam::account-id:role/RDS-*"
```

## Ações `iam:PassRole` em logs do AWS CloudTrail
<a name="id_roles_use_passrole_logs"></a>

 `PassRole` não é uma chamada de API. `PassRole` é uma permissão, o que significa que nenhum log do CloudTrail é gerado para o `PassRole` do IAM. Para analisar quais perfis são transferidos para quais Serviços da AWS no CloudTrail, é necessário analisar o log do CloudTrail que criou ou modificou o recurso da AWS que recebeu o perfil. Por exemplo, um perfil é transferido para uma função do AWS Lambda ao ser criado. O log da ação `CreateFunction` mostra um registro do perfil que foi transferido para a função. 

# Revogar as credenciais de segurança temporárias do perfil do IAM
<a name="id_roles_use_revoke-sessions"></a>

**Atenção**  
Se você seguir as etapas nesta página, todos os usuários com sessões atuais criadas ao assumiram a função terão o acesso negado a todas as ações e recursos da AWS. Como resultado, os usuários poderão perder trabalho não salvo.

Ao permitir que os usuários acessem o Console de gerenciamento da AWS com um tempo de duração de sessão longo (como 12 horas), suas respectivas credenciais temporárias não expiram com tanta rapidez. Se os usuários expuserem inadvertidamente suas credenciais a um terceiro não autorizado, este terá acesso durante toda a sessão. No entanto, se necessário, você poderá revogar imediatamente todas as permissões para as credenciais da função emitidas antes de um determinado momento. Todas as credenciais temporárias para essa função emitidas antes do tempo especificado se tornam inválidas. Isso força todos os usuários a refazerem a autenticação e solicitar novas credenciais.

 

**nota**  
Você não pode revogar a sessão para uma *[função vinculada a serviço](id_roles.md#iam-term-service-linked-role)*.

Quando você revoga permissões para uma função usando o procedimento neste tópico, a AWS anexa uma nova política em linha à função que nega todas as permissões para todas as ações. Ele incluirá uma condição aplicável às restrições somente se o usuário tiver assumido a função *antes* do momento em que você revogar as permissões. Se o usuário assumir a função *depois* que você revogar as permissões, a política de negação não se aplicará a esse usuário.

Para obter mais informações sobre acesso negado, consulte [Desabilitar permissões de credenciais de segurança temporárias](id_credentials_temp_control-access_disable-perms.md).

**Importante**  
Essa política de negação se aplica a todos os usuários da função especificada, não apenas às sessões do console com maior duração.

## Permissões mínimas para revogar as permissões de sessão de uma função
<a name="revoke-session-permissions"></a>

Para revogar permissões de sessão de uma função com êxito, você deve ter a permissão `PutRolePolicy` para a função. Isso permite que você anexe a política em linha `AWSRevokeOlderSessions` à função.

## Revogar permissões de uma sessão
<a name="revoke-session"></a>

Você pode revogar as permissões de sessão de um perfil para negar todas as permissões de qualquer usuário que tenha assumido esse perfil.

**nota**  
Não é possível editar perfis no IAM que foram criados a partir de conjuntos de permissões do Centro de Identidade do IAM. É necessário revogar a sessão ativa do conjunto de permissões de um usuário no Centro de Identidade do IAM. Para obter mais informações, consulte [Revogar sessões ativas de perfil do IAM criadas por conjuntos de permissões](https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html#revoke-user-permissions), no *Guia do usuário do Centro de Identidade do IAM*.

**Para negar imediatamente todas as permissões para qualquer usuário atual de credenciais de função**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Perfis** e selecione o nome (não a caixa de seleção) da função cujas permissões você deseja revogar.

1. Na página **Resumo** para a função selecionada, escolha a guia **Revogar sessões**.

1. Na guia **Revogar sessões**, selecione **Revogar sessões ativas**.

1. AWSA pede que você confirme a ação. Marque a caixa de seleção **Confirmo que estou revogando todas as sessões ativas para essa função** e escolha **Revogar sessões ativas**.

   O IAM então anexa uma política chamada `AWSRevokeOlderSessions` ao perfil. Depois de escolher **Revogar sessões ativas**, a política nega todo o acesso aos usuários que assumiram o perfil no passado, bem como em aproximadamente 30 segundos no futuro. Essa escolha de horário futuro leva em consideração o atraso de propagação da política para lidar com uma nova sessão que foi adquirida ou renovada antes que a política atualizada entrasse em vigor em uma determinada região. Os usuários que assumirem o perfil em mais de aproximadamente 30 segundos após você escolher a opção Revogar sessões ativas não serão afetados. Para saber por que as mudanças nem sempre são imediatamente visíveis, consulte [As alterações que eu faço nem sempre ficam imediatamente visíveis](troubleshoot.md#troubleshoot_general_eventual-consistency). 

**nota**  
Se, posteriormente, você escolher **Revogar sessões ativas** novamente, a marca de data e hora da política será atualizada e ela voltará a negar todas as permissões a todos os usuários que assumiram o perfil antes da nova hora especificada.

Os usuários válidos cujas sessões são revogadas dessa forma devem adquirir credenciais temporárias para uma nova sessão para continuar a trabalhar. A AWS CLI armazena em cache as credenciais até que elas expirem. Para forçar a CLI a excluir e atualizar credenciais de cache que não são mais válidas, execute um dos seguintes comandos:

**Linux, macOS ou Unix**

```
$ rm -r ~/.aws/cli/cache
```

**Windows**

```
C:\> del /s /q %UserProfile%\.aws\cli\cache
```

## Revogar as permissões da sessão antes de uma hora especificada
<a name="revoke-session-policy"></a>

 Também é possível revogar as permissões da sessão a qualquer momento usando a AWS CLI ou o SDK para especificar um valor para a chave `aws:TokenIssueTime` no elemento Condição de uma política. 

Essa política nega todas as permissões quando o valor de `aws:TokenIssueTime` é anterior à data e hora especificadas. O valor do `aws:TokenIssueTime` corresponde ao tempo exato em que as credenciais de segurança temporárias foram criadas. O valor `aws:TokenIssueTime` está presente apenas no contexto de solicitações da AWS assinadas com credenciais de segurança temporárias. Portanto, a instrução Negar na política não afeta as solicitações assinadas com as credenciais de longo prazo do usuário do IAM.

Essa política também pode ser anexada a um perfil. Neste caso, a política afeta somente as credenciais de segurança temporárias que foram criadas pela função antes da data e hora especificadas.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "DateLessThan": {"aws:TokenIssueTime": "2014-05-07T23:47:00Z"}
    }
  }
}
```

------

Os usuários válidos cujas sessões são revogadas dessa forma devem adquirir credenciais temporárias para uma nova sessão para continuar a trabalhar. A AWS CLI armazena em cache as credenciais até que elas expirem. Para forçar a CLI a excluir e atualizar credenciais de cache que não são mais válidas, execute um dos seguintes comandos:

**Linux, macOS ou Unix**

```
$ rm -r ~/.aws/cli/cache
```

**Windows**

```
C:\> del /s /q %UserProfile%\.aws\cli\cache
```

# Atualizar um perfil vinculado ao serviço
<a name="id_roles_update-service-linked-role"></a>

O método que você usa para editar uma função vinculada ao serviço depende do serviço. Alguns serviços podem permitir que você edite as permissões para uma função vinculada ao serviço no console, API ou CLI do serviço. Contudo, depois que você cria uma função vinculada ao serviço, você não pode mudar o nome da função porque várias entidades podem fazer referência à função. Você pode editar a descrição de qualquer função do console, da API ou da CLI do IAM.

Para obter informações sobre quais serviços oferecem suporte a funções vinculadas a serviços, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md) e procure os serviços que têm **Sim **na coluna **Função vinculada ao serviço**. Para saber se o serviço oferece suporte a edição da função vinculada ao serviço, escolha o link **Sim** para visualizar a documentação da função vinculada desse serviço.

## Editar a descrição de uma função vinculada ao serviço (console)
<a name="edit-service-linked-role-iam-console"></a>

Você pode usar o console do IAM para editar a descrição de uma função vinculada ao serviço.

**Para editar a descrição de uma função vinculada ao serviço (console)**

1. No painel de navegação do console do IAM, escolha **Perfis**.

1. Escolha o nome da função a ser modificada.

1. No extremo direito da **Descrição da função**, escolha **Editar**. 

1. Insira uma nova descrição na caixa e escolha **Salvar**.

## Editar a descrição de uma função vinculada ao serviço (AWS CLI)
<a name="edit-service-linked-role-iam-cli"></a>

Você pode usar comandos do IAM na AWS CLI para editar a descrição de uma função vinculada ao serviço.

**Para alterar a descrição de uma função vinculada ao serviço (AWS CLI)**

1. (Opcional) Para visualizar a descrição atual de uma função, execute os comandos a seguir:

   ```
   aws iam [get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html) --role-name ROLE-NAME
   ```

   Use o nome da função, não o nome de recurso da Amazon (ARN), para fazer referência às funções com os comandos da CLI. Por exemplo, se uma função tiver o seguinte nome de recurso da Amazon (ARN): `arn:aws:iam::123456789012:role/myrole`, você fará referência à função como **myrole**.

1. Para atualizar a descrição de uma função vinculada ao serviço, execute um dos seguintes comandos:

   ```
   aws iam [update-role](https://docs.aws.amazon.com/cli/latest/reference/iam/update-role.html) --role-name ROLE-NAME --description OPTIONAL-DESCRIPTION
   ```

## Editar a descrição de uma função vinculada ao serviço (API da AWS)
<a name="edit-service-linked-role-iam-api"></a>

Você pode usar a API do AWS para editar a descrição de uma função vinculada ao serviço.

**Para alterar a descrição de uma função (AWS API)**

1. (Opcional) Para visualizar a descrição atual de a uma função, chame a seguinte operação e especifique o nome da função:

   API do AWS: [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) 

1. Para atualizar a descrição de uma função, chame a seguinte operação e especifique o nome (e a descrição opcional) da função: 

   API da AWS: [UpdateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRole.html) 

# Atualizar a política de confiança de um perfil
<a name="id_roles_update-role-trust-policy"></a>

Para alterar quem pode assumir uma função, você deve modificar a política de confiança da função. Você não pode modificar a política de confiança para uma *[função vinculada a serviço](id_roles.md#iam-term-service-linked-role)*.

**Observações**  
Se um usuário for listado como principal em uma política de confiança da função, mas não puder assumir a função, verifique o [limite de permissões](access_policies_boundaries.md) do usuário. Se um limite de permissões for definido para o usuário, ele deverá permitir a ação `sts:AssumeRole`.
Para permitir que os usuários assumam novamente o perfil atual em uma sessão de perfil, especifique o ARN do perfil ou o ARN da Conta da AWS como entidade principal na política de confiança do perfil. Os Serviços da AWS que fornecem recursos computacionais, como o Amazon EC2, Amazon ECS, Amazon EKS e Lambda, fornecem credenciais temporárias e atualizam automaticamente essas credenciais. Isso garante que você tenha sempre um conjunto de credenciais válido. Nesses serviços, não é necessário assumir novamente a função atual para obter credenciais temporárias. Porém, se pretender passar [tags de sessão](id_session-tags.md) ou uma [política de sessão](access_policies.md#policies_session), você precisará assumir novamente a função atual.


## Atualizar a política de confiança de um perfil (console)
<a name="id_roles_update-trust-policy-console"></a>

**Para alterar a política de confiança de um perfil no Console de gerenciamento da AWS**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console do IAM, escolha **Perfis**.

1. Na lista de funções em sua conta, escolha o nome da função que deseja modificar.

1. Escolha a guia **Relacionamentos de confiança** e, em seguida, escolha **Editar política de confiança**.

1. Edite a política de confiança, conforme necessário. Para adicionar outras entidades principais que podem assumir a função, especifique-as no elemento `Principal`. Por exemplo, o fragmento de política a seguir mostra como fazer referência a duas Contas da AWS no elemento `Principal`:

   ```
   "Principal": {
     "AWS": [
       "arn:aws:iam::111122223333:root",
       "arn:aws:iam::444455556666:root"
     ]
   },
   ```

   Se você especificar um principal em outra conta, adicionar uma conta à política de confiança de uma função é apenas metade da tarefa de estabelecer o relacionamento de confiança entre contas. Por padrão, nenhum usuário nas contas confiáveis pode assumir a função. O administrador da conta confiável recém-criada deve conceder aos usuários a permissão para assumir a função. Para fazer isso, o administrador deve criar ou editar uma política que está anexada ao usuário para permitir acesso ao usuário à ação `sts:AssumeRole`. Para obter mais informações, consulte o procedimento a seguir ou [Conceder permissões a um usuário para alternar perfis](id_roles_use_permissions-to-switch.md).

   O trecho da política a seguir mostra como referenciar dois produtos da AWS no elemento `Principal`:

   ```
   "Principal": {
     "Service": [
       "opsworks.amazonaws.com",
       "ec2.amazonaws.com"
     ]
   },
   ```

1. Ao concluir a edição da política de confiança, escolha **Update policy**(Atualizar política) para salvar as alterações.

   Para obter mais informações sobre a estrutura e a sintaxe da política, consulte [Políticas e permissões no AWS Identity and Access Management](access_policies.md) e [Referência de elemento de política JSON do IAM](reference_policies_elements.md).

**Para permitir que os usuários em uma conta externa confiável usem a função (console)**

Para obter mais informações e detalhes sobre esse procedimento, consulte [Conceder permissões a um usuário para alternar perfis](id_roles_use_permissions-to-switch.md).

1. Faz login na Conta da AWS externa confiável. 

1. Decida se deseja anexar as permissões a um usuário ou a um grupo. No painel de navegação do console do IAM, escolha **Users** (Usuários) ou **Groups** (Grupos) conforme o caso.

1. Escolha o nome do usuário ou do grupo ao qual você deseja conceder acesso e, em seguida, selecione a guia **Permissões**.

1. Execute um destes procedimentos:
   + Para editar uma política gerenciada pelo cliente, escolha o nome da política, escolha **Editar política** e, em seguida, selecione a guia **JSON**. Você não pode editar uma política AWS gerenciada. As políticas AWS gerenciadas são exibidas com o ícone da AWS (![\[Orange cube icon indicating a policy is managed by AWS.\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/policy_icon.png)). Para obter mais informações sobre a diferença entre políticas gerenciadas pela AWS e pelo cliente, consulte [Políticas gerenciadas e em linha](access_policies_managed-vs-inline.md).
   + Para editar uma política em linha, escolha a seta próxima ao nome da política e escolha **Editar política**.

1. No editor de políticas, adicione um novo elemento `Statement` que especifica o seguinte:

   ```
   {
     "Effect": "Allow",
     "Action": "sts:AssumeRole",
     "Resource": "arn:aws:iam::ACCOUNT-ID:role/ROLE-NAME"
   }
   ```

   Substitua o ARN na instrução pelo ARN da função que o usuário pode assumir.

1. Siga os prompts na tela para terminar de editar a política. 

## Atualizar a política de confiança de um perfil (AWS CLI)
<a name="id_roles-update-trust-policy-cli"></a>

Você pode usar a AWS CLI para alterar quem pode assumir um perfil.

**Como modificar uma política de confiança da função (AWS CLI)**

1. (Opcional) Se você não souber o nome da função que deseja modificar, execute o seguinte comando para listar as funções em sua conta:
   + [aws iam list-roles](https://docs.aws.amazon.com/cli/latest/reference/iam/list-roles.html)

1. (Opcional) Para visualizar a política de confiança atual de uma função, execute o seguinte comando:
   + [aws iam get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)

1. Para modificar as entidades principais confiáveis que podem acessar a função, crie um arquivo de texto com a política de confiança atualizada. É possível usar qualquer editor de texto para construir a política.

   Por exemplo, a seguinte política de confiança mostra como fazer referência a duas Contas da AWS no elemento `Principal`. Isso permite que os usuários de duas Contas da AWS separadas assumam esse perfil.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"AWS": [
               "arn:aws:iam::111122223333:root",
               "arn:aws:iam::444455556666:root"
           ]},
           "Action": "sts:AssumeRole"
       }
   }
   ```

------

   Se você especificar um principal em outra conta, adicionar uma conta à política de confiança de uma função é apenas metade da tarefa de estabelecer o relacionamento de confiança entre contas. Por padrão, nenhum usuário nas contas confiáveis pode assumir a função. O administrador da conta confiável recém-criada deve conceder aos usuários a permissão para assumir a função. Para fazer isso, o administrador deve criar ou editar uma política que está anexada ao usuário para permitir acesso ao usuário à ação `sts:AssumeRole`. Para obter mais informações, consulte o procedimento a seguir ou [Conceder permissões a um usuário para alternar perfis](id_roles_use_permissions-to-switch.md).

1. Para usar o arquivo que você acabou de criar para atualizar a política de confiança, execute o seguinte comando:
   + [aws iam update-assume-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/update-assume-role-policy.html)

**Para permitir que os usuários em uma conta externa confiável usem a função (AWS CLI)**

Para obter mais informações e detalhes sobre esse procedimento, consulte [Conceder permissões a um usuário para alternar perfis](id_roles_use_permissions-to-switch.md).

1. Crie um arquivo JSON que contenha uma política de permissões que concede permissões para assumir a função. Por exemplo, a seguinte política contém as permissões necessárias mínimas:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": "arn:aws:iam::111122223333:role/ROLE-NAME"
       }
   }
   ```

------

   Substitua o ARN na instrução pelo ARN da função que o usuário pode assumir.

1. Execute o seguinte comando para carregar o arquivo JSON que contém a política de confiança para o IAM:
   + [aws iam create-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html)

   O resultado desse comando inclui o ARN da política. Anote esse ARN, pois você precisará dele em uma etapa posterior. 

1. Decida qual usuário ou grupo ao qual anexar a política. Se você não souber o nome do usuário ou do grupo pretendido, use um dos seguintes comandos para listar os usuários ou os grupos em sua conta:
   + [aws iam list-users](https://docs.aws.amazon.com/cli/latest/reference/iam/list-users.html)
   + [aws iam list-groups](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups.html)

1. Use um dos seguintes comandos para anexar a política criada na etapa anterior ao usuário ou ao grupo:
   + [aws iam attach-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-user-policy.html)
   + [aws iam attach-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-group-policy.html)

## Atualizar a política de confiança de um perfil (API da AWS)
<a name="id_roles-update-trust-policy-api"></a>

Você pode usar a API da AWS para alterar quem pode assumir um perfil.

**Como modificar a política de confiança de uma função (API da AWS)**

1. (Opcional) Se você não souber o nome da função que deseja modificar, chame a seguinte operação para listar as funções em sua conta:
   + [ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html)

1. (Opcional) Para visualizar a política de confiança atual de uma função, chame a seguinte operação:
   + [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)

1. Para modificar as entidades principais confiáveis que podem acessar a função, crie um arquivo de texto com a política de confiança atualizada. É possível usar qualquer editor de texto para construir a política.

   Por exemplo, a seguinte política de confiança mostra como fazer referência a duas Contas da AWS no elemento `Principal`. Isso permite que os usuários de duas Contas da AWS separadas assumam esse perfil.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"AWS": [
               "arn:aws:iam::111122223333:root",
               "arn:aws:iam::444455556666:root"
           ]},
           "Action": "sts:AssumeRole"
       }
   }
   ```

------

   Se você especificar um principal em outra conta, adicionar uma conta à política de confiança de uma função é apenas metade da tarefa de estabelecer o relacionamento de confiança entre contas. Por padrão, nenhum usuário nas contas confiáveis pode assumir a função. O administrador da conta confiável recém-criada deve conceder aos usuários a permissão para assumir a função. Para fazer isso, o administrador deve criar ou editar uma política que está anexada ao usuário para permitir acesso ao usuário à ação `sts:AssumeRole`. Para obter mais informações, consulte o procedimento a seguir ou [Conceder permissões a um usuário para alternar perfis](id_roles_use_permissions-to-switch.md).

1. Para usar o arquivo que você acabou de criar para atualizar a política de confiança, chame a seguinte operação:
   + [UpdateAssumeRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAssumeRolePolicy.html)

**Para permitir que os usuários em uma conta externa confiável usem a função (API da AWS)**

Para obter mais informações e detalhes sobre esse procedimento, consulte [Conceder permissões a um usuário para alternar perfis](id_roles_use_permissions-to-switch.md).

1. Crie um arquivo JSON que contenha uma política de permissões que concede permissões para assumir a função. Por exemplo, a seguinte política contém as permissões necessárias mínimas:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": "arn:aws:iam::111122223333:role/ROLE-NAME"
       }
   }
   ```

------

   Substitua o ARN na instrução pelo ARN da função que o usuário pode assumir.

1. Chame a seguinte operação para carregar o arquivo JSON que contém a política de confiança para o IAM:
   + [CreatePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicy.html)

   O resultado dessa operação inclui o ARN da política. Anote esse ARN, pois você precisará dele em uma etapa posterior. 

1. Decida qual usuário ou grupo ao qual anexar a política. Se você não souber o nome do usuário ou do grupo pretendido, chame uma das seguintes operações para listar os usuários ou os grupos em sua conta:
   + [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)
   + [ListGroups](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroups.html)

1. Chame uma das seguintes operações para anexar a política criada na etapa anterior ao usuário ou ao grupo:
   +  API: [AttachUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachUserPolicy.html)
   + [AttachGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachGroupPolicy.html)

# Atualizar permissões para um perfil
<a name="id_roles_update-role-permissions"></a>

Use os procedimentos a seguir para atualizar as políticas de permissões e os limites de permissões de um perfil.

## Pré-requisito: visualizar o acesso ao perfil
<a name="roles-modify_prerequisites"></a>

Antes de alterar as permissões de uma função, você deve revisar a atividade no nível de serviço recente. Isso é importante porque você não deseja remover acesso de uma entidade principal (pessoa ou aplicativo) que está usando. Para obter mais informações sobre como visualizar as informações acessadas por último, consulte [Refinar permissões na AWS usando informações do último acesso](access_policies_last-accessed.md).

## Atualizar a política de permissões para um perfil
<a name="id_roles_update-role-permissions-policy"></a>

Para alterar as permissões permitidas pela função, modifique a política de permissões da função (ou políticas). Você não pode modificar a política de permissões para uma *[função vinculada ao serviço](id_roles.md#iam-term-service-linked-role)* no IAM. Pode ser possível modificar a política de permissões no serviço que depende da função. Para verificar se um serviço oferece suporte a este recurso, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md) e procure os serviços que têm **Sim **na coluna **Funções vinculadas ao serviço**. Escolha um **Sim** com um link para visualizar a documentação do perfil vinculado para esse serviço.

### Atualizar a política de permissões de um perfil (console)
<a name="id_roles_update-role-permissions-policy-console"></a>

**Para alterar as permissões permitidas por uma função (console)**

1. Abra o console IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console do IAM, escolha **Perfis**.

1. Escolha o nome da função que você deseja modificar e, em seguida, escolha a guia **Permissões**.

1. Execute um destes procedimentos:
   + Para editar uma política gerenciada do cliente atual, escolha o nome da política e escolha **Editar política**.
**nota**  
Você não pode editar uma política AWS gerenciada. As políticas AWS gerenciadas são exibidas com o ícone da AWS (![\[Orange cube icon indicating a policy is managed by AWS.\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/policy_icon.png)). Para obter mais informações sobre a diferença entre políticas gerenciadas pela AWS e pelo cliente, consulte [Políticas gerenciadas e em linha](access_policies_managed-vs-inline.md). 
   + Para anexar uma política gerenciada existente à função, escolha **Add permissions** (Adicionar permissões)e, depois, escolha **Attach policies** (Anexar políticas).
   + Para editar uma política em linha existente, expanda a política e escolha **Edit** (Editar).
   + Para incorporar uma nova política em linha, escolha **Add permissions** (Adicionar permissões) e, depois, escolha **Create inline policy** (Criar política em linha). 
   + Para remover uma política existente do perfil, marque a caixa de seleção ao lado do nome da política e escolha **Remover**.

### Atualizar uma política de permissões de perfil (AWS CLI)
<a name="id_roles_update_permissions-policy-cli"></a>

Para alterar as permissões permitidas pela função, modifique a política de permissões da função (ou políticas). Você não pode modificar a política de permissões para uma *[função vinculada ao serviço](id_roles.md#iam-term-service-linked-role)* no IAM. Pode ser possível modificar a política de permissões no serviço que depende da função. Para verificar se um serviço oferece suporte a este recurso, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md) e procure os serviços que têm **Sim **na coluna **Funções vinculadas ao serviço**. Escolha um **Sim** com um link para visualizar a documentação do perfil vinculado para esse serviço.

**Para alterar as permissões permitidas por uma função (AWS CLI)**

1. (Opcional) Para visualizar as permissões atuais associadas a uma função, execute um dos comandos a seguir:

   1. [aws iam list-role-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-role-policies.html) para listar as políticas em linha

   1. [aws iam list-attached-role-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-role-policies.html) para listar as políticas gerenciadas

1. O comando para atualizar as permissões para a função será diferente se você estiver atualizando uma política gerenciada ou uma política em linha.

   Para atualizar uma política gerenciada, execute o seguinte comando para criar uma nova versão da política gerenciada:
   + [aws iam create-policy-version](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy-version.html)

   Para atualizar uma política em linha, execute o seguinte comando:
   + [aws iam put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)

### Atualizar uma política de permissões de um perfil (API da AWS)
<a name="id_roles_update_permissions-policy-api"></a>

Para alterar as permissões permitidas pela função, modifique a política de permissões da função (ou políticas). Você não pode modificar a política de permissões para uma *[função vinculada ao serviço](id_roles.md#iam-term-service-linked-role)* no IAM. Pode ser possível modificar a política de permissões no serviço que depende da função. Para verificar se um serviço oferece suporte a este recurso, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md) e procure os serviços que têm **Sim **na coluna **Funções vinculadas ao serviço**. Escolha um **Sim** com um link para visualizar a documentação do perfil vinculado para esse serviço.

**Para alterar as permissões permitidas por uma função (API da AWS)**

1. (Opcional) Para visualizar as permissões atuais associadas a uma função, chame as seguintes operações:

   1. [ListRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRolePolicies.html) para listar as políticas em linha

   1. [ListAttachedRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedRolePolicies.html) para listar as políticas gerenciadas

1. A operação para atualizar as permissões para a função será diferente se você estiver atualizando uma política gerenciada ou uma política em linha.

   Para atualizar uma política gerenciada, chame a seguinte operação para criar uma nova versão da política gerenciada:
   + [CreatePolicyVersion](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicyVersion.html)

   Para atualizar uma política em linha, chame a seguinte operação:
   + [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)

## Atualizar o limite de permissões para um perfil
<a name="id_roles_update-role-permissions-boundary"></a>

Para alterar o número máximo de permissões permitidas para uma função, modifique o [limite de permissões](access_policies_boundaries.md) da função.

### Atualizar o limite de permissões de um perfil (console)
<a name="id_roles_update-permissions-boundary-console"></a>

**Para alterar a política usada para definir o limite de permissões para uma função**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Perfis**.

1. Escolha o nome da função com o [limite de permissões](access_policies_boundaries.md) que você deseja alterar. 

1. Escolha a aba **Permissões**. Se necessário, abra a seção **Limite de permissões** e, em seguida, escolha **Alterar limite**.

1. Selecione a política que você deseja usar para o limite de permissões.

1. Escolha **Alterar limite**.

   Suas alterações não terão efeito até que alguém assuma essa função.

### Atualizar um limite de permissões de perfil (AWS CLI)
<a name="id_roles_update_permissions-boundary-cli"></a>

**Para alterar a política gerenciada usada para definir o limite de permissões para uma função (AWS CLI)**

1. (Opcional) Para visualizar a [política de permissões](access_policies_boundaries.md) atual de uma função, execute o seguinte comando: 
   + [aws iam get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)

1. Para usar uma política gerenciada diferente para atualizar o limite de permissões de uma função, execute o seguinte comando: 
   + [aws iam put-role-permissions-boundary](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-permissions-boundary.html)

   Uma função pode ter apenas um conjunto de políticas gerenciadas como um limite de permissões. Se você alterar o limite de permissões, você altera o número máximo de permissões permitidas para uma função.

### Atualizar um limite de permissões de perfil (API da AWS)
<a name="id_roles_update-permissions-boundary-api"></a>

**Para alterar a política gerenciada usada para definir o limite de permissões para uma função (API da AWS)**

1. (Opcional) Para visualizar o [limite de permissões](access_policies_boundaries.md) atual de uma função, chame a seguinte operação: 
   + [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)

1. Para usar uma política gerenciada diferente para atualizar o limite de permissões de uma função, chame a seguinte operação: 
   + [PutRolePermissionsBoundary](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePermissionsBoundary.html)

   Uma função pode ter apenas um conjunto de políticas gerenciadas como um limite de permissões. Se você alterar o limite de permissões, você altera o número máximo de permissões permitidas para uma função.

# Atualizar as configurações de um perfil
<a name="id_roles_update-role-settings"></a>

Use os procedimentos a seguir para atualizar a descrição de um perfil ou alterar a duração máxima da sessão de um perfil.

## Atualizar uma descrição de perfil
<a name="id_roles_update-description"></a>

Para alterar a descrição da função, modifique o texto da descrição.

### Atualizar a descrição de um perfil (console)
<a name="id_roles_update-description-console"></a>

**Para alterar a descrição de uma função (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console do IAM, escolha **Perfis**.

1. Escolha o nome da função a ser modificada.

1. Na seção **Summary** (Resumo), escolha **Edit** (Editar).

1. Insira uma nova descrição na caixa e escolha **Save changes** (Salvar alterações).

### Atualizar a descrição de um perfil (AWS CLI)
<a name="id_roles_update-description-cli"></a>

**Para alterar a descrição de uma função (AWS CLI)**

1. (Opcional) Para visualizar a descrição atual de uma função, execute o comando a seguir:
   + [aws iam get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)

1. Para atualizar a descrição de uma função, execute o seguinte comando com o parâmetro de descrição:
   + [aws iam update-role](https://docs.aws.amazon.com/cli/latest/reference/iam/update-role.html)

### Atualizar a descrição de um perfil (API da AWS)
<a name="id_roles_update-description-api"></a>

**Para alterar a descrição de uma função (API da AWS)**

1. (Opcional) Para visualizar a descrição atual de uma função, chame a seguinte operação:
   + [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) 

1. Para atualizar a descrição de uma função, chame a seguinte operação com o parâmetro de descrição:
   + [UpdateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRole.html)

## Atualizar a duração máxima da sessão de um perfil
<a name="id_roles_update-session-duration"></a>

Para especificar a configuração de duração máxima da sessão para funções que são assumidas usando o console, a AWS CLI ou a API da AWS, modifique o valor da configuração da duração máxima da sessão. Essa configuração pode ter um valor de 1 hora a 12 horas. Se você não especificar um valor, o padrão máximo de 1 hora será aplicado. Essa configuração não limita sessões assumidas por serviços da AWS.

### Atualizar a duração máxima da sessão de um perfil (console)
<a name="id_roles_update-session-duration-console"></a><a name="id_roles_modify_max-session"></a>

**Como alterar a configuração de duração máxima da sessão para funções que são assumidas usando o console, a AWS CLI ou a API da AWS (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console do IAM, escolha **Perfis**.

1. Escolha o nome da função a ser modificada.

1. Na seção **Summary** (Resumo), escolha **Edit** (Editar).

1. Para **Maximum session duration** (Duração máxima da sessão), escolha um valor. Ou então, escolha **Custom duration** (Duração personalizada) e insira um valor (em segundos).

1. Escolha **Salvar alterações**.

   Suas alterações não terão efeito até que alguém assuma essa função. Para saber como revogar as sessões existentes para a função, consulte [Revogar as credenciais de segurança temporárias do perfil do IAM](id_roles_use_revoke-sessions.md).

No Console de gerenciamento da AWS, as sessões de usuário do IAM são de 12 horas por padrão. Os usuários do IAM que trocam de perfis no console recebem a duração máxima da sessão da perfil ou o tempo restante na sessão do usuário, o que for menor.

Qualquer pessoa que assuma a função da AWS CLI ou da API da AWS pode solicitar uma sessão mais longa, até esse máximo. A configuração `MaxSessionDuration` determina a duração máxima da sessão da função que pode ser solicitada.
+ Para especificar a duração de uma sessão usando a AWS CLI, use o parâmetro `duration-seconds`. Para saber mais, consulte [Alterar para uma perfil do IAM (AWS CLI)](id_roles_use_switch-role-cli.md).
+ Para especificar a duração de uma sessão usando a API da AWS, use o parâmetro `DurationSeconds`. Para saber mais, consulte [Alternar para um perfil do IAM (API da AWS)](id_roles_use_switch-role-api.md). 

### Atualizar a duração máxima da sessão do perfil (AWS CLI)
<a name="id_roles_update-session-duration-cli"></a>

**nota**  
Qualquer pessoa que assuma uma função a partir da AWS CLI ou da API pode usar o parâmetro da CLI `duration-seconds` ou o parâmetro da API `DurationSeconds` para solicitar uma sessão mais longa. A configuração `MaxSessionDuration` determina a duração máxima da sessão da função que pode ser solicitada usando o parâmetro `DurationSeconds`. Se os usuários não especificarem um valor para o parâmetro `DurationSeconds`, suas credenciais de segurança serão válidas por uma hora.

**Para alterar a configuração de duração máxima da sessão para funções que são assumidas usando a AWS CLI (AWS CLI)**

1. (Opcional) Para visualizar a configuração de duração máxima da sessão atual para uma função, execute o seguinte comando:
   + [aws iam get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)

1. Para atualizar uma configuração de duração máxima da sessão da função, execute o seguinte comando com o parâmetro da CLI `max-session-duration` ou o parâmetro da API `MaxSessionDuration`:
   + [aws iam update-role](https://docs.aws.amazon.com/cli/latest/reference/iam/update-role.html)

   Suas alterações não terão efeito até que alguém assuma essa função. Para saber como revogar as sessões existentes para a função, consulte [Revogar as credenciais de segurança temporárias do perfil do IAM](id_roles_use_revoke-sessions.md).

### Atualizar a duração máxima da sessão do perfil (API da AWS)
<a name="id_roles_update-session-duration-api"></a>

**nota**  
Qualquer pessoa que assuma uma função a partir da AWS CLI ou da API pode usar o parâmetro da CLI `duration-seconds` ou o parâmetro da API `DurationSeconds` para solicitar uma sessão mais longa. A configuração `MaxSessionDuration` determina a duração máxima da sessão da função que pode ser solicitada usando o parâmetro `DurationSeconds`. Se os usuários não especificarem um valor para o parâmetro `DurationSeconds`, suas credenciais de segurança serão válidas por uma hora.

**Para alterar a configuração de duração máxima da sessão para funções que são assumidas usando a API (API da AWS)**

1. (Opcional) Para visualizar a configuração de duração máxima da sessão atual para uma função, chame a seguinte operação:
   + [GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html) 

1. Para atualizar uma configuração de duração máxima da sessão da função, chame a seguinte operação com o parâmetro da CLI `max-sessionduration` ou o parâmetro da API `MaxSessionDuration`:
   + [UpdateRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateRole.html)

   Suas alterações não terão efeito até que alguém assuma essa função. Para saber como revogar as sessões existentes para a função, consulte [Revogar as credenciais de segurança temporárias do perfil do IAM](id_roles_use_revoke-sessions.md).

# Excluir perfis ou perfis de instância
<a name="id_roles_manage_delete"></a>

Se você não precisar mais de uma função, recomendamos excluir a função e suas permissões associadas. Dessa forma, você não terá uma entidade não utilizada que não seja ativamente monitorada ou mantida. 

Se a função foi associada a uma instância do EC2, você também poderá remover a função do perfil de instância e excluir o perfil de instância.

**Atenção**  
Certifique-se de que você não tenha nenhuma instância do Amazon EC2 em execução com a função ou o perfil da instância que você está prestes a excluir. Excluir uma função ou perfil da instância associado a uma instância em execução interromperá todas as aplicações em execução na instância.

Se você preferir não excluir uma função permanentemente, poderá desabilitá-la. Para fazer isso, altere as políticas da função e revogue todas as sessões atuais. Por exemplo, você poderia adicionar uma política à função que negasse acesso a todas da AWS. Você também poderia editar a política de confiança para negar acesso a todos que tentassem assumir a função. Para obter mais informações sobre como revogar sessões, consulte [Revogar as credenciais de segurança temporárias do perfil do IAM](id_roles_use_revoke-sessions.md).

**Topics**
+ [

## Visualizar acesso a perfis
](#roles-delete_prerequisites)
+ [

## Excluir um perfil vinculado ao serviço
](#id_roles_manage_delete_slr)
+ [

## Exclusão de uma função do IAM (console)
](#roles-managingrole-deleting-console)
+ [

## Exclusão de uma função do IAM (AWS CLI)
](#roles-managingrole-deleting-cli)
+ [

## Exclusão de uma função do IAM (API da AWS)
](#roles-managingrole-deleting-api)
+ [

## Informações relacionadas
](#roles-managingrole-deleting-related-info)

## Visualizar acesso a perfis
<a name="roles-delete_prerequisites"></a>

Antes de excluir uma função, recomendamos que você revise quando a função foi usada pela última vez. Você pode fazer isso usando o Console de gerenciamento da AWS, a AWS CLI ou a API da AWS. Você deve visualizar essas informações porque não deseja remover o acesso de alguém que usa a função. 

A data das atividades mais recentes do perfil pode não corresponder à última data informada na guia **Acessados recentemente**. A guia [**Acessados recentemente**](access_policies_last-accessed-view-data.md) só informa as atividades em serviços permitidos pelas políticas de permissões do perfil. A data da última atividade da função inclui a última tentativa de acessar qualquer produto na AWS.

**nota**  
O período de rastreamento das atividades mais recentes de um perfil e os dados de Acessados recentemente são para os últimos 400 dias. Esse período pode ser mais curto se a sua Região começou a oferecer suporte a esses recursos no último ano. A função pode ter sido usada há mais de 400 dias. Para obter mais informações sobre o período de rastreamento, consulte [Onde a AWS rastreia informações acessadas por último](access_policies_last-accessed.md#last-accessed_tracking-period).

**Como visualizar quando uma função foi usada pela última vez (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Perfis**.

1. Localize a linha da função com a atividade que você deseja visualizar. É possível usar o campo de pesquisa para restringir os resultados. Exiba a coluna **Last activity (Última atividade)** para visualizar o número de dias desde que a função foi usada pela última vez. Se a função não tiver sido usada dentro do período de rastreamento, a tabela exibirá **None (Nenhum)**. 

1. Escolha o nome da função para exibir mais informações. A página **Summary** (Resumo) da função também inclui a **Last activity** (Última atividade), que exibe a data em que a função foi usada pela última vez. Se a função não tiver sido usada nos últimos 400 dias, a **Last activity (Última atividade)** exibirá **Não acessada no período de rastreamento**.

**Como visualizar quando uma função foi usada pela última vez (AWS CLI)**  
`[aws iam get-role](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role.html)` – execute este comando para receber informações sobre uma função, incluindo o objeto `RoleLastUsed`. Este objeto contém a `LastUsedDate` e a `Region` em que a função foi usada pela última vez. Se `RoleLastUsed` estiver presente, mas não contiver um valor, a função não foi usada dentro do período de rastreamento.

**Como visualizar quando uma função foi usada pela última vez (API da AWS)**  
`[GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/GetRole.html)` – chame esta operação para retornar informações sobre uma função, incluindo o objeto `RoleLastUsed`. Este objeto contém a `LastUsedDate` e a `Region` em que a função foi usada pela última vez. Se `RoleLastUsed` estiver presente, mas não contiver um valor, a função não foi usada dentro do período de rastreamento.

## Excluir um perfil vinculado ao serviço
<a name="id_roles_manage_delete_slr"></a>

O método que você usa para excluir um perfil vinculado ao serviço depende do serviço. Em alguns casos, você não precisa excluir manualmente uma função vinculada ao serviço. Por exemplo, quando você concluir uma ação específica (como a remoção de um recurso) no serviço, o serviço pode excluir a função vinculada ao serviço para você. Em outros casos, o serviço pode oferecer suporte a exclusão de uma função vinculada ao serviço manualmente usando o console, API ou a do serviço AWS CLI. 

Revise a documentação para o *[perfil vinculado ao serviço](id_roles.md#iam-term-service-linked-role)* no serviço vinculado para saber como excluir o perfil. Você pode visualizar as funções vinculadas ao serviço na sua conta acessando a página **Roles** (Funções) do IAM no console. As funções vinculadas ao serviço aparecem com **(Função vinculada ao serviço)** na coluna **Entidades confiáveis** da tabela. Um banner na página **Summary** (Resumo) da função também indica que a função é uma função vinculada ao serviço.

Se o serviço não incluir documentação para excluir a função vinculada ao serviço, você poderá usar o console do IAM, a AWS CLI ou a API para excluir a função.

## Exclusão de uma função do IAM (console)
<a name="roles-managingrole-deleting-console"></a>

Ao usar o Console de gerenciamento da AWS para excluir um perfil, o IAM desvincula automaticamente as políticas associadas ao perfil. Também exclui automaticamente as políticas em linha associadas ao perfil e todos os perfis de instâncias do Amazon EC2 que contêm o perfil. 

**Importante**  
Em alguns casos, uma função pode ser associada a um perfil de instância do Amazon EC2, e a função e o perfil de instância podem ter o mesmo nome. Neste caso, você pode usar o Console de gerenciamento da AWS para excluir a função e o perfil da instância. Essa ligação ocorre automaticamente para funções e perfis de instância criados no console. Se você criou a função da AWS CLI, do Tools for Windows PowerShell ou da API da AWS, a função e o perfil da instância poderão ter nomes diferentes. Nesse caso, você não pode usar o console para excluí-los. Em vez disso, você deve usar a AWS CLI, o Tools for Windows PowerShell ou a API da AWS para remover primeiro a função do perfil da instância. Você deve executar uma etapa separada para excluir a função.

**Para excluir uma função (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Roles (Funções)** e marque a caixa de seleção ao lado do nome da função que você deseja excluir. 

1. Na parte superior da página, escolha **Delete** (Excluir).

1. Na caixa de diálogo de confirmação, revise as informações acessadas por último, que mostram quando cada uma das funções selecionadas acessou pela última vez um serviço da AWS. Isso ajuda você a confirmar se a função está ativa no momento. Se você quiser continuar, insira o nome da função no campo de entrada de texto e escolha **Delete** (Excluir). Se você tiver certeza, prossiga com a exclusão, mesmo se as informações acessadas por último ainda estiverem sendo carregadas.

**nota**  
Você não pode usar o console para excluir um perfil de instância, a menos que ele tenha o mesmo nome da função. O perfil da instância é excluído como parte do processo de exclusão de uma função, conforme descrito no procedimento anterior. Para excluir um perfil de instância sem também excluir a função, você deve usar a AWS CLI, ou a API da AWS. Para obter mais informações, consulte as seções a seguir.

## Exclusão de uma função do IAM (AWS CLI)
<a name="roles-managingrole-deleting-cli"></a>

Ao usar a AWS CLI para excluir uma função, primeiro é necessário excluir as políticas em linha associadas à função. Também é necessário separar as políticas gerenciadas associadas ao perfil. Se quiser excluir o perfil de instância associado que contém o perfil, exclua-o separadamente.

**Para excluir uma função (AWS CLI)**

1. Se você não souber o nome da função que deseja excluir, digite o seguinte comando para listar as funções em sua conta:

   ```
   aws iam list-roles
   ```

   A lista inclui o nome de recurso da Amazon (ARN) de cada função. Use o nome da função, não o nome de recurso da Amazon (ARN), para fazer referência às funções com os comandos da CLI. Por exemplo, se uma função tiver o seguinte nome de recurso da Amazon (ARN): `arn:aws:iam::123456789012:role/myrole`, você fará referência à função como **myrole**.

1. Remova o perfil de todos os perfis de instância aos quais ele está associado.

   1. Para relacionar todos os perfis de instância aos quais a função está associada, digite o seguinte comando:

      ```
      aws iam list-instance-profiles-for-role --role-name role-name
      ```

   1. Para remover a função de um perfil de instância, digite o seguinte comando para cada perfil de instância:

      ```
      aws iam remove-role-from-instance-profile --instance-profile-name instance-profile-name --role-name role-name
      ```

1. Exclua todas as políticas associadas à função.

   1. Para listar todas as políticas em linha no perfil, digite o seguinte comando:

      ```
      aws iam list-role-policies --role-name role-name
      ```

   1. Para excluir cada política em linha do perfil, digite o comando a seguir para cada política: 

      ```
      aws iam delete-role-policy --role-name role-name --policy-name policy-name
      ```

   1. Para listar todas as políticas gerenciadas que estão associadas ao perfil, digite o seguinte comando:

      ```
      aws iam list-attached-role-policies --role-name role-name
      ```

   1. Para desassociar cada política gerenciada do perfil, digite o comando a seguir para cada política: 

      ```
      aws iam detach-role-policy --role-name role-name --policy-arn policy-arn
      ```

1. Digite o comando a seguir para excluir a função:

   ```
   aws iam delete-role --role-name role-name
   ```

1. Se você não planeja reutilizar o perfis de instância que foram associados à função, digite o seguinte comando para excluí-los:

   ```
   aws iam delete-instance-profile --instance-profile-name instance-profile-name
   ```

## Exclusão de uma função do IAM (API da AWS)
<a name="roles-managingrole-deleting-api"></a>

Ao usar a API do IAM para excluir uma função, primeiro é necessário excluir as políticas associadas à função. Também é necessário separar as políticas gerenciadas associadas ao perfil. Se quiser excluir o perfil de instância associado que contém o perfil, exclua-o separadamente.

**Para excluir uma função (API da AWS)**

1. Para listar todos os perfis de instância aos quais um perfil está associado, chame [ListInstanceProfilesForRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfilesForRole.html).

   Para remover o perfil de um perfil de instância, chame [RemoveRoleFromInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveRoleFromInstanceProfile.html). É necessário transmitir o nome do perfil e nome do perfil de instância. 

   Se você não for reutilizar um perfil de instância associado à função, chame [DeleteInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteInstanceProfile.html) para excluí-lo.

1. Para listar todas as políticas em linha para um perfil, chame [ListRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRolePolicies.html).

   Para excluir políticas em linha associadas ao perfil, chame [DeleteRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteRolePolicy.html). É necessário passar o nome do perfil e o nome da política em linha. 

1. Para listar todas as políticas gerenciadas associadas a um perfil, chame [ListAttachedRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedRolePolicies.html). 

   Para desassociar políticas gerenciadas associadas ao perfil, chame [DetachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DetachRolePolicy.html). É necessário passar o nome do perfil e o ARN da política gerenciada. 

1. Chame [DeleteRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteRole.html) para excluir a função.

## Informações relacionadas
<a name="roles-managingrole-deleting-related-info"></a>

Para obter informações gerais sobre os perfis de instância, consulte [Usar perfis de instância](id_roles_use_switch-role-ec2_instance-profiles.md).

Para obter informações gerais sobre funções vinculadas ao serviço, consulte [Criar um perfil vinculado ao serviço](id_roles_create-service-linked-role.md).

# Métodos para assumir um perfil
<a name="id_roles_manage-assume"></a>

Para que um usuário, uma aplicação ou um serviço possa usar um perfil que você criou, você deverá [conceder permissões para alternar](id_roles_use_permissions-to-switch.md) para esse perfil. É possível usar qualquer política anexada a grupos ou usuários para conceder as permissões necessárias. Depois que as permissões forem concedidas, o usuário poderá assumir um perfil do Console de gerenciamento da AWS, do Tools for Windows PowerShell, da AWS Command Line Interface (AWS CLI) e da API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html).

**Importante**  
Ao criar uma função de forma programática, em vez de no console do IAM, você tem a opção de adicionar um `Path` de até 512 caracteres além do `RoleName`, que pode ter até 64 caracteres. No entanto, se você pretende usar uma função com o recurso **Switch Role** (Alternar função) no Console de gerenciamento da AWS, o `Path` e o `RoleName` combinados não podem exceder 64 caracteres.

O método usado para assumir o perfil determina quem pode assumir a função e por quanto tempo a sessão da função pode durar. Ao usar o código `AssumeRole*` das operações da API, o perfil do IAM que você assume é o de recursos. O usuário ou perfil que chama operações da API `AssumeRole*` é a entidade principal.

A tabela a seguir compara os métodos usados para assumir perfis.


|  Método de assumir a função |  **Quem pode assumir a função**  | **Método para especificar a vida útil da credencial** |  **Vida útil da credencial (mín.\$1máx.\$1padrão)**  | 
| --- | --- | --- | --- | 
| Console de gerenciamento da AWS | Usuário ou perfis¹ (via [alternância de perfis](id_roles_use_switch-role-console.md)) | Maximum session duration (Duração máxima da sessão) na página Resumo Role (Função) | 15 min\$1Configuração de duração máxima da sessão²\$11 h | 
| Operação da CLI [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) ou da API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) |  Usuário ou perfil¹ | Parâmetro da CLI duration-seconds ou da API DurationSeconds | 15 min\$1Configuração de duração máxima da sessão²\$11 h  | 
| Operação da CLI [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html) ou da API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) | Qualquer usuário autenticado usando SAML | Parâmetro da CLI duration-seconds ou da API DurationSeconds | 15 min\$1Configuração de duração máxima da sessão²\$11 h  | 
| Operação da CLI [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) ou da API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) | Qualquer usuário autenticado usando um provedor OIDC | Parâmetro da CLI duration-seconds ou da API DurationSeconds | 15 min\$1Configuração de duração máxima da sessão²\$11 h  | 
| [URL do console](id_roles_providers_enable-console-custom-url.md) construído com AssumeRole  | Usuário ou perfil | Parâmetro HTML SessionDuration no URL | 15 min\$112 h\$11 h  | 
| [URL do console](id_roles_providers_enable-console-custom-url.md) construído com AssumeRoleWithSAML  | Qualquer usuário autenticado usando SAML | Parâmetro HTML SessionDuration no URL | 15 min\$112 h\$11 h | 
| [URL do console](id_roles_providers_enable-console-custom-url.md) construído com AssumeRoleWithWebIdentity  | Qualquer usuário autenticado usando um provedor OIDC | Parâmetro HTML SessionDuration no URL | 15 min\$112 h\$11 h  | 

¹ O uso de credenciais de um perfil para assumir um perfil diferente é chamado de [encadeamento de perfis](id_roles.md#iam-term-role-chaining). Quando você usa o encadeamento de perfis, a duração da sessão do perfil é limitada a uma hora. Isso se aplica à alternância de perfis do Console de gerenciamento da AWS, à AWS CLI e às operações de API. Essa limitação não se aplica à situação em que um perfil é assumido pela primeira vez por credenciais do usuário nem a aplicações executadas em instâncias do Amazon EC2 usando perfis de instância.

² Essa configuração pode ter um valor de 1 hora a 12 horas. Para obter detalhes sobre como modificar a configuração de duração máxima da sessão, consulte [Gerenciamento de perfis do IAM](id_roles_manage.md). Essa configuração determina a duração máxima da sessão que você pode solicitar ao obter as credenciais da função. Por exemplo, quando você usa as operações da API [AssumeRole\$1](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) para assumir uma função, você pode especificar um tamanho de sessão usando o parâmetro `DurationSeconds`. Use este parâmetro para especificar o tamanho da sessão da função de 900 segundos (15 minutos) até o valor configurado da duração máxima da sessão para a função. Os usuários do IAM que trocam de perfis no console recebem a duração máxima da sessão ou o tempo restante na sessão de usuário, o que for menor. Suponha que você defina uma duração máxima de 5 horas em uma função. Um usuário do IAM conectado ao console por 10 horas (do máximo padrão de 12) alterna para a função. A duração da sessão de função disponível é de 2 horas. Para saber como visualizar o valor máximo para sua função, consulte [Atualizar a duração máxima da sessão de um perfil](id_roles_update-role-settings.md#id_roles_update-session-duration) mais adiante nesta página.

**Observações**  
A configuração da duração máxima da sessão não limita as sessões assumidas por produtos da AWS.
As credenciais do perfil do IAM do Amazon EC2 não estão sujeitas à duração máxima da sessão configurada no perfil.
Para permitir que os usuários assumam novamente o perfil atual em uma sessão de perfil, especifique o ARN do perfil ou o ARN da Conta da AWS como entidade principal na política de confiança do perfil. Os Serviços da AWS que fornecem recursos computacionais, como o Amazon EC2, Amazon ECS, Amazon EKS e Lambda, fornecem credenciais temporárias e atualizam automaticamente essas credenciais. Isso garante que você tenha sempre um conjunto de credenciais válido. Nesses serviços, não é necessário assumir novamente a função atual para obter credenciais temporárias. Porém, se pretender passar [tags de sessão](id_session-tags.md) ou uma [política de sessão](access_policies.md#policies_session), você precisará assumir novamente a função atual. Para saber como modificar uma política de confiança de função para adicionar o ARN da função de entidade principal ou o ARN da Conta da AWS, consulte [Atualizar a política de confiança de um perfil](id_roles_update-role-trust-policy.md).

**Topics**
+ [

# Mudar de um usuário para um perfil do IAM (console)
](id_roles_use_switch-role-console.md)
+ [

# Alterar para uma perfil do IAM (AWS CLI)
](id_roles_use_switch-role-cli.md)
+ [

# Alternar para um perfil do IAM (Ferramentas para Windows PowerShell)
](id_roles_use_switch-role-twp.md)
+ [

# Alternar para um perfil do IAM (API da AWS)
](id_roles_use_switch-role-api.md)
+ [

# Use um perfil do IAM para conceder permissões a aplicações em execução em instâncias do Amazon EC2
](id_roles_use_switch-role-ec2.md)
+ [

# Usar perfis de instância
](id_roles_use_switch-role-ec2_instance-profiles.md)

# Mudar de um usuário para um perfil do IAM (console)
<a name="id_roles_use_switch-role-console"></a>

Você pode alternar perfis quando fizer login como usuário do IAM, como usuário no Centro de Identidade do IAM, como perfil federado SAML ou como perfil federado de identidade da Web. Uma *função* especifica um conjunto de permissões que você pode usar para acessar os recursos da AWS de que você precisa. No entanto, você não inicia sessão em um perfil, mas, depois de entrar como usuário do IAM, poderá mudar para um perfil do IAM. Isso separa, temporariamente, as permissões originais de usuário e, em vez disso, oferece a você as permissões atribuídas à função. O perfil pode estar em sua própria conta ou em qualquer outra Conta da AWS. Para obter mais informações sobre funções, seus benefícios e como criá-los, consulte [Perfis do IAM](id_roles.md)e [Criar um perfil do IAM](id_roles_create.md).

As permissões do seu usuário e quaisquer perfis para os quais você mudar não são cumulativos. Apenas um conjunto de permissões é ativo por vez. Quando você muda para uma função, perde, temporariamente, as permissões de usuário e trabalha com permissões atribuídas à função. Ao sair da função, suas permissões de usuário são, automaticamente, restauradas.

Quando você muda de funções no Console de gerenciamento da AWS, o console sempre usa suas credenciais originais para autorizar a mudança. Por exemplo, se você alternar para RoleA, o IAM usará suas credenciais originais para determinar se você tem permissão para assumir RoleA. Se você tentar mudar para RoleB *enquanto usa RoleA*, o AWS ainda usará suas credenciais **originais** para autorizar a mudança, e não as credenciais de RoleA.

**nota**  
Ao iniciar sessão como um usuário no Centro de Identidade do IAM, seja como um perfil federado SAML ou perfil federado de identidade da Web, você assumirá um perfil do IAM ao iniciar sua sessão. Por exemplo, quando um usuário no Centro de Identidade do IAM inicia sessão no portal de acesso do AWS, ele deve escolher um conjunto de permissões que se correlacione a uma função antes de poder acessar os recursos da AWS.

## Sessões de função
<a name="id_roles_iam_user-switch-role-sessions"></a>

Ao mudar de perfis, sua sessão do Console de gerenciamento da AWS dura 1 hora por padrão. As sessões de usuário do IAM são de 12 horas por padrão. Outros usuários podem ter durações de sessão diferentes definidas. Quando você muda de perfil no console, recebe a duração máxima da sessão ou o tempo restante na sessão de usuário, o que for menor. Ao assumir um perfil, não é possível pode estender a duração da sessão.

Por exemplo, suponha que uma duração máxima de sessão de dez horas seja definida para uma função. Você estava conectado ao console por 8 horas quando decide mudar para o perfil. Há 4 horas restantes em sua sessão de usuário. Portanto, a duração permitida da sessão de perfil é 4 horas, e não a duração máxima de 10 horas da sessão. A tabela a seguir mostra como determinar a duração da sessão de um usuário do IAM ao alternar funções no console.


| O tempo restante da sessão do usuário do IAM é de… | A duração da sessão da função é de… | 
| --- | --- | 
| Menor que a duração máxima da sessão da função | O tempo restante na sessão do usuário | 
| Maior que a duração máxima da sessão da função | Valor de duração máxima da sessão | 
| Igual à duração máxima da sessão da função | Valor máximo da duração da sessão (aproximado) | 

O uso de credenciais de um perfil para assumir um perfil diferente é chamado de [encadeamento de perfis](id_roles.md#iam-term-role-chaining). Quando você usa o encadeamento de perfis, a duração da sessão é limitada a uma hora, independentemente da configuração de duração máxima da sessão definida para perfis individuais. Isso se aplica à alternância de perfis do Console de gerenciamento da AWS, à AWS CLI e às operações de API.

**nota**  
Alguns consoles de produtos da AWS podem renovar automaticamente sua sessão de função quando ela expira sem que você execute nenhuma ação. Alguns podem solicitar que você recarregue a página do navegador para autenticar novamente sua sessão.

## Considerações
<a name="id_roles_iam_user-switch-role-considerations"></a>
+ Você não poderá mudar de perfis caso se conecte como Usuário raiz da conta da AWS. 
+ Os usuários devem receber permissão para mudar de perfil por meio de políticas. Para instruções, consulte [Conceder permissões a um usuário para alternar perfis](id_roles_use_permissions-to-switch.md).
+ Não é possível mudar de perfil no Console de gerenciamento da AWS para um perfil que exija um valor [ExternalId](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id). Você só pode alternar para tal perfil chamando a API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html), que é compatível com o parâmetro `ExternalId`.

## Para mudar para uma função
<a name="id_roles_iam_user-switch-role-console-procedure"></a>

1. Siga o procedimento de login adequado para o tipo de usuário, conforme descrito no tópico [Sign in to the Console de gerenciamento da AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) no *Início de Sessão da AWS User Guide*.

1. No Console de gerenciamento da AWS, escolha seu nome de usuário na barra de navegação no canto superior direito. Geralmente, ele é assim: ***username*@*account\$1ID\$1number\$1or\$1alias***.

1. Selecione um dos seguintes métodos para alternar perfis:
   + Selecione **Alternar perfil**.
   + Se você optou pela compatibilidade com várias sessões, escolha **Adicionar sessão** e selecione **Alternar perfil**.
**nota**  
Você pode fazer login com até cinco identidades diferentes simultaneamente em um único navegador da Web no Console de gerenciamento da AWS. Para obter detalhes, consulte [Signing in to multiple accounts](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/multisession.html) no *Guia de conceitos básicos do Console de gerenciamento da AWS*.

1. Na página **Mudar de função**, digite o número do ID da conta ou o alias da conta e o nome da função fornecida pelo administrador.
**nota**  
Se o administrador criou a função com um caminho, como `division_abc/subdivision_efg/roleToDoX`, será necessário digitar este caminho completo e o nome na caixa **Função**. Se você digitar apenas o nome da função, ou se o `Path` e o `RoleName` combinados excederem 64 caracteres, a mudança de função falhará. Este é um limite dos cookies do navegador que armazena o nome da função. Se isso acontecer, entre em contato com o administrador e peça para reduzir o tamanho do nome do caminho e da função.

1. (Opcional) É possível inserir um nome de exibição e selecionar uma cor de exibição que destacará a função na barra de navegação do console.
   + Em **Display name**, digite o texto que deseja que seja exibido na barra de navegação no lugar de seu nome de usuário quando este perfil estiver ativo. Um nome é sugerido, baseado nas informações da conta e da função, mas você poderá alterá-lo para outro com significado para você. 
   + Em **Display color**, selecione uma cor para destacar o nome de exibição.

   O nome e a cor podem ajudar a lembrá-lo quando esta função está ativa, o que muda suas permissões. Por exemplo, para uma função que oferece acesso ao ambiente de teste, você pode especificar um **Display Name** (Nome de exibição) de **Test** e selecionar verde em **Color** (Cor). Para a função que oferece acesso à produção, você pode especificar um **Display Name** (Nome de exibição) de **Production** e selecionar vermelho em **Color** (Cor).

1. Selecione **Mudar de perfil**. O nome de exibição e a cor substituem seu nome de usuário na barra de navegação e você pode começar a usar as permissões concedidas pela função.

1. Depois de concluir as tarefas que exigem o perfil do IAM, você poderá voltar para a sessão original. Isso removerá as permissões adicionais fornecidas pelo perfil e restaurará as suas permissões padrão.

   1. No console do IAM, escolha o **Display Name** (Nome de exibição) da sua função na barra de navegação no canto superior direito.

   1. Selecione **Mudar de volta**.

      Por exemplo, suponha que você tenha feito login à conta número `123456789012` usando o nome de usuário `Richard`. Depois de usar a função `admin-role`, você deseja interromper o uso da função e retornar para suas permissões originais. Para parar de usar o perfil, escolha **admin-role @ 123456789012** e, em seguida, escolha **Mudar de volta**.  
![\[Gráfico que localiza a função Mudar de volta para parar de usar um perfil do IAM e retornar ao usuário original.\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/role-stop-using.png)

**dica**  
As últimas funções que você usou aparecem no menu. Na próxima vez que você precisar mudar para um desses perfis, bastará escolher o perfil desejado. Você só precisará digitar as informações da conta e do perfil manualmente se o perfil não for exibido no menu.

## Recursos adicionais
<a name="id_roles_use_switch-role-console_additional_resources"></a>
+ [Conceder permissões a um usuário para alternar perfis](id_roles_use_permissions-to-switch.md)
+ [Conceda permissões a um usuário para passar um perfil para um serviço da AWS](id_roles_use_passrole.md)
+ [Criar um perfil para conceder permissões a um usuário do IAM](id_roles_create_for-user.md)
+ [Criar um perfil para delegar permissões a um serviço da AWS](id_roles_create_for-service.md)
+ [Solucionar problemas de perfis do IAM](troubleshoot_roles.md)

# Alterar para uma perfil do IAM (AWS CLI)
<a name="id_roles_use_switch-role-cli"></a>

Uma *função* especifica um conjunto de permissões que você pode usar para acessar os recursos da AWS de que você precisa. Nesse sentido, ela é semelhante a um [usuário do AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) (IAM). Ao fazer login como usuário, você obtém um conjunto específico de permissões. No entanto, você não faz login em uma função mas, depois de fazer login como usuário, poderá mudar para uma função. Isso separa, temporariamente, as permissões originais de usuário e, em vez disso, oferece a você as permissões atribuídas à função. O perfil pode estar em sua própria conta ou em qualquer outra Conta da AWS. Para obter mais informações sobre funções, seus benefícios e como criar e configurá-las, consulte [Perfis do IAM](id_roles.md) e [Criar um perfil do IAM](id_roles_create.md). Para saber mais sobre os diferentes métodos que você pode usar para assumir uma função, consulte [Métodos para assumir um perfil](id_roles_manage-assume.md).

**Importante**  
As permissões do usuário do IAM e quaisquer funções você venha a assumir não são cumulativas. Apenas um conjunto de permissões é ativo por vez. Quando você assume um perfil, perde temporariamente as permissões de usuário ou perfil anteriores e trabalha com as permissões atribuídas ao perfil. Ao sair da função, suas permissões de usuário são, automaticamente, restauradas.

Você poderá usar uma função para executar um comando da AWS CLI quando estiver conectado como um usuário do IAM. Você também pode usar um perfil para executar um comando da AWS CLI quando tiver se conectado como um [usuário autenticado externamente](id_roles_providers.md) ([SAML](id_roles_providers_saml.md) ou [OIDC](id_roles_providers_oidc.md)) que já esteja usando um perfil. Além disso, você pode usar uma função para executar um comando da AWS CLI de uma instância do Amazon EC2 anexada a uma função por meio do perfil da instância. Você não pode assumir um perfil quando está conectado como o Usuário raiz da conta da AWS.

[**Encadeamento de funções**](id_roles.md#iam-term-role-chaining): você também pode usar o encadeamento de funções, que usa permissões de uma função para acessar uma segunda função.

Por padrão, a sessão da função dura uma hora. Quando assume esta função usando as operações da CLI `assume-role*`, você pode especificar um valor para o parâmetro `duration-seconds`. Esse valor pode variar de 900 segundos (15 minutos) até o valor configurado de duração máxima da sessão para o perfil. Se você alternar perfis no console, a duração da sessão será limitada a, no máximo, uma hora. Para saber como visualizar o valor máximo para sua função, consulte [Atualizar a duração máxima da sessão de um perfil](id_roles_update-role-settings.md#id_roles_update-session-duration). 

Se você usar o encadeamento de funções, a duração da sessão será limitada a um máximo de uma hora. Se você usar o parâmetro `duration-seconds` para fornecer um valor maior do que uma hora, a operação falhará.

## Cenário de exemplo: alternar para uma função de produção
<a name="switch-role-cli-scenario-prod-env"></a>

Imagine que você seja um usuário do IAM para trabalhar no ambiente de desenvolvimento. Nesse cenário, ocasionalmente, é necessário trabalhar com o ambiente de produção na linha de comando com a [AWS CLI](https://aws.amazon.com/cli/). Você já tem uma credencial de chave de acesso disponível para você. Esse pode ser o par de chaves de acesso atribuído ao usuário do IAM padrão. Ou, se estiver conectado como uma entidade principal federada SAML ou OIDC, ele poderá ser o par de chaves de acesso para o perfil inicialmente atribuído a você. Se suas permissões atuais concederem a capacidade de assumir uma função específica do IAM, você poderá identificar essa função em um “perfil” nos arquivos de configuração da AWS CLI. Esse comando é executado com as permissões da função do IAM especificada, não a identidade original. Quando especifica esse perfil em um comando da AWS CLI, você está usando a nova função. Nesta situação, você não pode usar as permissões originais na conta de desenvolvimento ao mesmo tempo. Isso porque apenas um conjunto de permissões pode ser ativado por vez.

**nota**  
Por motivos de segurança, os administradores podem [revisar logs do AWS CloudTrail](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) para saber quem executou uma ação na AWS. Seu administrador pode exigir que você especifique uma identidade-fonte ou um nome de sessão de função ao assumir a função. Para obter mais informações, consulte [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity) e [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname).

**Para alternar para uma função de produção (AWS CLI)**

1. <a name="step-configure-default"></a>Se você nunca usou a AWS CLI, é necessário, primeiro, configurar seu perfil CLI padrão. Abra um prompt de comando e configure sua instalação da AWS CLI para usar a chave de acesso de seu usuário do IAM ou de sua função federada. Para obter mais informações, consulte [Configuração da AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-quick-configuration) no *Guia do usuário da AWS Command Line Interface*.

   Execute o comando [aws configure](https://docs.aws.amazon.com/cli/latest/reference/configure/) da seguinte forma:

   ```
   aws configure
   ```

   Quando solicitado, forneça as seguintes informações:

   ```
   AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
   AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   Default region name [None]: us-east-2
   Default output format [None]: json
   ```

1. Crie um novo perfil para a função no arquivo `.aws/config` no Unix ou Linux ou o arquivo `C:\Users\USERNAME\.aws\config` no Windows. O exemplo a seguir cria um perfil chamado `prodaccess` que muda para a função `ProductionAccessRole` na conta `123456789012`. Você obtém o ARN da função do administrador da conta que criou a função. Quando este perfil é invocado, a AWS CLI usa as credenciais do `source_profile` para solicitar credenciais para a função. Por isso, a identidade mencionada como `source_profile` deve ter `sts:AssumeRole` permissões para a função especificada no `role_arn`.

   ```
   [profile prodaccess]
       role_arn = arn:aws:iam::123456789012:role/ProductionAccessRole
       source_profile = default
   ```

1. Depois de criar o novo perfil, qualquer comando da AWS CLI que especifique o parâmetro `--profile prodaccess` será executado sob as permissões anexadas à função `ProductionAccessRole` do IAM, em vez do usuário padrão.

   ```
   aws iam list-users --profile prodaccess
   ```

   Este comando funciona se as permissões atribuídas ao `ProductionAccessRole` permitem a listagem dos usuários na conta da AWS atual.

1. Para retornar para as permissões concedidas por suas credenciais originais, execute comandos sem o parâmetro `--profile`. A AWS CLI reverte para usar as credenciais em seu perfil padrão, que você configurou em [Step 1](#step-configure-default).

Para obter mais informações, consulte [Assumir uma função](https://docs.aws.amazon.com/cli/latest/userguide/cli-roles.html) no *Guia do usuário do AWS Command Line Interface*.

## Cenário de exemplo: permitir que uma função de perfil da instância alterne para uma função em outra conta
<a name="switch-role-cli-scenario-ec2-instance"></a>

Imagine que você esteja usando duas Contas da AWS e queira permitir que uma aplicação em execução em uma instância do Amazon EC2 execute comandos da [AWS CLI](https://aws.amazon.com/cli/) nas duas contas. Vamos supor que a instância do EC2 exista na conta `111111111111`. Essa instância inclui a função de perfil da instância `abcd` que permite que a aplicação execute tarefas somente leitura do Amazon S3 no bucket `amzn-s3-demo-bucket1` dentro da mesma conta `111111111111`. No entanto, o aplicativo também deve ter permissão para assumir a função entre contas `efgh` para executar tarefas na conta `222222222222`. Para fazer isso, a função de perfil de instância do EC2 `abcd` deve ter a seguinte política de permissões:

***Política de permissões da função `abcd` da conta 111111111111***

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAccountLevelS3Actions",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowListAndReadS3ActionOnMyBucket",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1/*",
                "arn:aws:s3:::amzn-s3-demo-bucket1"
            ]
        },
        {
            "Sid": "AllowIPToAssumeCrossAccountRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::222222222222:role/efgh"
        }
    ]
}
```

------

Vamos supor que a função entre contas `efgh` permita tarefas somente leitura do Amazon S3 no bucket `amzn-s3-demo-bucket2` na mesma conta `222222222222`. Para fazer isso, a função entre contas `efgh` deve ter a seguinte política de permissões:

***Política de permissões da função `efgh` da conta 222222222222***

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAccountLevelS3Actions",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowListAndReadS3ActionOnMyBucket",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket2/*",
                "arn:aws:s3:::amzn-s3-demo-bucket2"
            ]
        }
    ]
}
```

------

A função `efgh` deve permitir que a função do perfil de instância `abcd` a assuma. Para fazer isso, a função `efgh` deve ter a seguinte política de confiança:

***Política de confiança da função `efgh` da conta 222222222222***

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "efghTrustPolicy",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {"AWS": "arn:aws:iam::111111111111:role/abcd"}
        }
    ]
}
```

------

Para executar comandos da AWS CLI na conta `222222222222`, você deve atualizar o arquivo de configuração da CLI. Identifique a função `efgh` como "perfil" e a função do perfil de instância do EC2 `abcd` como a “fonte de credencial” no arquivo de configuração da AWS CLI. Os comandos da CLI são executados com as permissões da função `efgh`, e não a função `abcd` original.

**nota**  
Para fins de segurança, você pode usar o AWS CloudTrail para auditar o uso de funções na conta. Para diferenciar sessões de função quando uma função é usada por diferentes entidades de segurança nos logs do CloudTrail, use o nome da sessão da função. Quando a AWS CLI assume uma função em nome de um usuário, como descrito neste tópico, um nome de sessão da função é automaticamente criado como `AWS-CLI-session-nnnnnnnn`. O valor *nnnnnnnn* é um número inteiro que representa o tempo no formato de [horário epoch Unix](http://wikipedia.org/wiki/Unix_time) (o número de segundos desde a meia-noite de 1º de janeiro de 1970, em UTC). Para obter mais informações, consulte [Referência de eventos do CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/eventreference.html) no *Guia do usuário do AWS CloudTrail*.

**Para permitir que uma função de perfil de instância do EC2 alterne para uma função entre contas (AWS CLI)**

1. Você não precisa configurar um perfil de CLI padrão. Em vez disso, você pode carregar credenciais dos metadados de perfil da instância do EC2. Crie um novo perfil para a função no arquivo `.aws/config`. O exemplo a seguir cria um perfil `instancecrossaccount` que muda para a função `efgh` na conta `222222222222`. Quando esse perfil é invocado, a AWS CLI usa as credenciais dos metadados de perfil da instância do EC2 para solicitar credenciais para a função. Por isso, a função de perfil de instância do EC2 deve ter permissões `sts:AssumeRole` para a função especificada no `role_arn`.

   ```
   [profile instancecrossaccount]
   role_arn = arn:aws:iam::222222222222:role/efgh
   credential_source = Ec2InstanceMetadata
   ```

1. Depois de criar o novo perfil, qualquer comando da AWS CLI que especifique o parâmetro `--profile instancecrossaccount` é executado sob as permissões anexadas à função `efgh` na conta `222222222222`.

   ```
   aws s3 ls amzn-s3-demo-bucket2 --profile instancecrossaccount
   ```

   Esse comando funciona se as permissões atribuídas ao perfil `efgh` permitem a listagem dos usuários na Conta da AWS atual.

1. Para retornar para as permissões originais do perfil de instância do EC2 na conta `111111111111`, execute os comandos da CLI sem o parâmetro `--profile`.

Para obter mais informações, consulte [Assumir uma função](https://docs.aws.amazon.com/cli/latest/userguide/cli-roles.html) no *Guia do usuário do AWS Command Line Interface*.

# Alternar para um perfil do IAM (Ferramentas para Windows PowerShell)
<a name="id_roles_use_switch-role-twp"></a>

Uma *função* especifica um conjunto de permissões que você pode usar para acessar os recursos da AWS de que você precisa. Nesse sentido, ela é semelhante a um [usuário do AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) (IAM). Ao fazer login como usuário, você obtém um conjunto específico de permissões. No entanto, você não faz login em uma função, mas uma vez que fez login, pode mudar para uma função. Isso separa, temporariamente, as permissões originais de usuário e, em vez disso, oferece a você as permissões atribuídas à função. O perfil pode estar em sua própria conta ou em qualquer outra Conta da AWS. Para obter mais informações sobre funções, seus benefícios e como criar e configurá-las, consulte [Perfis do IAM](id_roles.md) e [Criar um perfil do IAM](id_roles_create.md).

**Importante**  
As permissões do seu usuário do IAM e quaisquer funções para as quais você mude não são cumulativas. Apenas um conjunto de permissões é ativo por vez. Quando você muda para uma função, perde, temporariamente, as permissões de usuário e trabalha com permissões atribuídas à função. Ao sair da função, suas permissões de usuário são, automaticamente, restauradas.

Esta seção descreve como alternar entre funções ao trabalhar na linha de comando com o AWS Tools for Windows PowerShell.

Imagine que você tenha uma conta no ambiente de desenvolvimento e, ocasionalmente, precise trabalhar com o ambiente de produção na linha de comando usando o [Tools for Windows PowerShell](https://aws.amazon.com/powershell/). Você já tem um conjunto de credenciais de chave de acesso disponível para você. Elas podem ser um par de chaves de acesso atribuído ao seu usuário padrão do IAM. Ou, se você tiver feito login como uma entidade principal federada SAML ou OIDC, elas poderão ser o par de chaves de acesso para o perfil inicialmente atribuído a você. Você pode usar essas credenciais para executar o cmdlet `Use-STSRole` que transmite o ARN de uma nova função como um parâmetro. O comando retorna credenciais de segurança temporárias para a função solicitada. Em seguida, você pode usar essas credenciais em comandos subsequentes do PowerShell com as permissões da função para acessar recursos na produção. Enquanto você usa a função, não pode usar suas permissões de usuário na conta de desenvolvimento, pois apenas um conjunto de permissões pode estar ativado por vez.

**nota**  
Por motivos de segurança, os administradores podem [revisar logs do AWS CloudTrail](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) para saber quem executou uma ação na AWS. Seu administrador pode exigir que você especifique uma identidade-fonte ou um nome de sessão de função ao assumir a função. Para obter mais informações, consulte [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity) e [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname).

Todas as chaves de acesso e tokens são apenas exemplos e não podem ser usados da forma que são mostrados. Substitua pelos valores apropriados do seu ambiente real.

**Para alternar para uma função (Tools for Windows PowerShell)**

1. Abra um prompt de comando do PowerShell e configure o perfil padrão para usar a chave de acesso do usuário do IAM ou de sua função federada. Se você já tive usado o Tools for Windows PowerShell, isso provavelmente já foi feito. Será possível alternar entre perfis somente se você estiver conectado como um usuário do IAM, e não como Usuário raiz da conta da AWS.

   ```
   PS C:\> Set-AWSCredentials -AccessKey AKIAIOSFODNN7EXAMPLE -SecretKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY -StoreAs MyMainUserProfile
   PS C:\> Initialize-AWSDefaults -ProfileName MyMainUserProfile -Region us-east-2
   ```

   Para obter mais informações, consulte [Uso de credenciais da AWS](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html) no *Guia do usuário do Ferramentas da AWS para PowerShell*.

1. Para recuperar credenciais para a nova função, execute o comando a seguir para alternar para a função `RoleName` na conta 123456789012. Você obtém o ARN da função do administrador da conta que criou a função. O comando exige que você também forneça um nome de sessão. Você pode escolher qualquer texto para isso. O comando a seguir solicita as credenciais e, em seguida, captura o objeto de propriedade `Credentials` do objeto de resultados retornados e o armazena na variável `$Creds`.

   ```
   PS C:\> $Creds = (Use-STSRole -RoleArn "arn:aws:iam::123456789012:role/RoleName" -RoleSessionName "MyRoleSessionName").Credentials
   ```

   `$Creds` é um objeto que agora contém os elementos `AccessKeyId`, `SecretAccessKey` e `SessionToken` de que você precisa nas etapas a seguir. Os seguintes comandos de exemplo ilustram valores comuns:

   ```
   PS C:\> $Creds.AccessKeyId
   AKIAIOSFODNN7EXAMPLE
   
   PS C:\> $Creds.SecretAccessKey
   wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   
   PS C:\> $Creds.SessionToken
   AQoDYXdzEGcaEXAMPLE2gsYULo+Im5ZEXAMPLEeYjs1M2FUIgIJx9tQqNMBEXAMPLECvSRyh0FW7jEXAMPLEW+vE/7s1HRp
   XviG7b+qYf4nD00EXAMPLEmj4wxS04L/uZEXAMPLECihzFB5lTYLto9dyBgSDyEXAMPLE9/g7QRUhZp4bqbEXAMPLENwGPy
   Oj59pFA4lNKCIkVgkREXAMPLEjlzxQ7y52gekeVEXAMPLEDiB9ST3UuysgsKdEXAMPLE1TVastU1A0SKFEXAMPLEiywCC/C
   s8EXAMPLEpZgOs+6hz4AP4KEXAMPLERbASP+4eZScEXAMPLEsnf87eNhyDHq6ikBQ==
   
   PS C:\> $Creds.Expiration
   Thursday, June 18, 2018 2:28:31 PM
   ```

1. Para usar essas credenciais para qualquer comando subsequente, inclua-as com o parâmetro `-Credential`. Por exemplo, o comando a seguir usa as credenciais da função e só funcionará se for concedida a permissão `iam:ListRoles` à função e o cmdlet `Get-IAMRoles` puder ser executado:

   ```
           PS C:\> get-iamroles -Credential $Creds
   ```

1. Para retornar para as suas credenciais originais, basta parar de usar o parâmetro `-Credentials $Creds` e permitir que o PowerShell reverta para as credenciais que estão armazenadas no perfil padrão.

# Alternar para um perfil do IAM (API da AWS)
<a name="id_roles_use_switch-role-api"></a>

Uma *função* especifica um conjunto de permissões que você pode usar para acessar os recursos da AWS. Nesse sentido, ela é semelhante a um [usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html). Um principal (pessoa ou aplicativo) assume uma função para receber permissões temporárias para executar as tarefas necessárias e interagir com recursos do AWS. O perfil pode estar em sua própria conta ou em qualquer outra Conta da AWS. Para obter mais informações sobre funções, seus benefícios e como criar e configurá-las, consulte [Perfis do IAM](id_roles.md) e [Criar um perfil do IAM](id_roles_create.md). Para saber mais sobre os diferentes métodos que você pode usar para assumir uma função, consulte [Métodos para assumir um perfil](id_roles_manage-assume.md).

**Importante**  
As permissões do usuário do IAM e quaisquer funções você venha a assumir não são cumulativas. Apenas um conjunto de permissões é ativo por vez. Quando você assume um perfil, perde temporariamente as permissões de usuário ou perfil anteriores e trabalha com as permissões atribuídas ao perfil. Ao sair da função, suas permissões originais serão, automaticamente, restauradas.

Para assumir uma função, um aplicativo chama a operação de API AWS STS[`AssumeRole` do ](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) e transmite o ARN da função a ser usada. A operação cria uma nova sessão com credenciais temporárias. Esta sessão tem as mesmas permissões que as políticas baseadas em identidade para essa função. 

Quando você chamar [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html), poderá transmitir as políticas de [políticas de sessão](access_policies.md#policies_session) gerenciadas ou em linha. As políticas de sessão são políticas avançadas que você transmite como um parâmetro quando cria de forma programática uma sessão de credencial temporária para um perfil ou sessão de usuário federado. É possível passar um único documento de política JSON de sessão em linha usando o parâmetro `Policy`. É possível usar o parâmetro `PolicyArns` para especificar até 10 políticas de sessão gerenciadas. As permissões da sessão resultam da interseção das políticas baseadas em identidade da entidade e das políticas de sessão. As políticas de sessão são úteis quando você precisa fornecer as credenciais temporárias da função para outra pessoa. A outra pessoa pode usar as credenciais temporárias da função em chamadas subsequentes à API da AWS para acessar recursos na conta que possui a função. Você não pode usar políticas de sessão para conceder mais permissões do que as permitidas pela política baseada em identidade. Para saber mais sobre como a AWS determina as permissões efetivas de uma função, consulte [Lógica da avaliação de política](reference_policies_evaluation-logic.md). 

![\[PermissionsWhenPassingRoles_Diagram\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/role_passed_policy_permissions.png)


Você pode chamar `AssumeRole` quando estiver conectado como um usuário do IAM ou como um [usuário autenticado externamente](id_roles_providers.md) ([SAML](id_roles_providers_saml.md) ou [OIDC](id_roles_providers_oidc.md)) que já esteja usando um perfil. Você também pode usar o [*encadeamento de funções*](id_roles.md#iam-term-role-chaining), que é o uso de uma função para assumir uma segunda função. Você não pode assumir um perfil quando está conectado como o Usuário raiz da conta da AWS.

Por padrão, a sessão do perfil dura uma hora. Quando assume esta função usando as operações de API AWS STS[`AssumeRole*` do ](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html), você pode especificar uma valor para o parâmetro `DurationSeconds`. Esse valor pode variar de 900 segundos (15 minutos) até o valor configurado de duração máxima da sessão para o perfil. Para saber como visualizar o valor máximo para sua função, consulte [Atualizar a duração máxima da sessão de um perfil](id_roles_update-role-settings.md#id_roles_update-session-duration). 

Se você usar o encadeamento de funções, a sessão será limitada a uma duração máxima de uma hora. Se você usar o parâmetro `DurationSeconds` para fornecer um valor maior do que uma hora, a operação falhará.

**nota**  
Por motivos de segurança, os administradores podem [revisar logs do AWS CloudTrail](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds) para saber quem executou uma ação na AWS. Seu administrador pode exigir que você especifique uma identidade-fonte ou um nome de sessão de função ao assumir a função. Para obter mais informações, consulte [`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity) e [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname).

Os exemplos de código a seguir mostram como criar um usuário e assumir um perfil.

**Atenção**  
Para evitar riscos de segurança, não use usuários do IAM para autenticação ao desenvolver software com propósito específico ou trabalhar com dados reais. Em vez disso, use federação com um provedor de identidade, como [Centro de Identidade do AWS IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html).
+ Crie um usuário sem permissões.
+ Crie uma função que conceda permissão para listar os buckets do Amazon S3 para a conta.
+ Adicione uma política para permitir que o usuário assuma a função.
+ Assuma o perfil e liste buckets do S3 usando credenciais temporárias, depois limpe os recursos.

------
#### [ .NET ]

**SDK para .NET**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/dotnetv3/IAM#code-examples). 

```
global using Amazon.IdentityManagement;
global using Amazon.S3;
global using Amazon.SecurityToken;
global using IAMActions;
global using IamScenariosCommon;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.Hosting;
global using Microsoft.Extensions.Logging;
global using Microsoft.Extensions.Logging.Console;
global using Microsoft.Extensions.Logging.Debug;


namespace IAMActions;

public class IAMWrapper
{
    private readonly IAmazonIdentityManagementService _IAMService;

    /// <summary>
    /// Constructor for the IAMWrapper class.
    /// </summary>
    /// <param name="IAMService">An IAM client object.</param>
    public IAMWrapper(IAmazonIdentityManagementService IAMService)
    {
        _IAMService = IAMService;
    }

    /// <summary>
    /// Attach an IAM policy to a role.
    /// </summary>
    /// <param name="policyArn">The policy to attach.</param>
    /// <param name="roleName">The role that the policy will be attached to.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> AttachRolePolicyAsync(string policyArn, string roleName)
    {
        var response = await _IAMService.AttachRolePolicyAsync(new AttachRolePolicyRequest
        {
            PolicyArn = policyArn,
            RoleName = roleName,
        });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Create an IAM access key for a user.
    /// </summary>
    /// <param name="userName">The username for which to create the IAM access
    /// key.</param>
    /// <returns>The AccessKey.</returns>
    public async Task<AccessKey> CreateAccessKeyAsync(string userName)
    {
        var response = await _IAMService.CreateAccessKeyAsync(new CreateAccessKeyRequest
        {
            UserName = userName,
        });

        return response.AccessKey;

    }


    /// <summary>
    /// Create an IAM policy.
    /// </summary>
    /// <param name="policyName">The name to give the new IAM policy.</param>
    /// <param name="policyDocument">The policy document for the new policy.</param>
    /// <returns>The new IAM policy object.</returns>
    public async Task<ManagedPolicy> CreatePolicyAsync(string policyName, string policyDocument)
    {
        var response = await _IAMService.CreatePolicyAsync(new CreatePolicyRequest
        {
            PolicyDocument = policyDocument,
            PolicyName = policyName,
        });

        return response.Policy;
    }


    /// <summary>
    /// Create a new IAM role.
    /// </summary>
    /// <param name="roleName">The name of the IAM role.</param>
    /// <param name="rolePolicyDocument">The name of the IAM policy document
    /// for the new role.</param>
    /// <returns>The Amazon Resource Name (ARN) of the role.</returns>
    public async Task<string> CreateRoleAsync(string roleName, string rolePolicyDocument)
    {
        var request = new CreateRoleRequest
        {
            RoleName = roleName,
            AssumeRolePolicyDocument = rolePolicyDocument,
        };

        var response = await _IAMService.CreateRoleAsync(request);
        return response.Role.Arn;
    }


    /// <summary>
    /// Create an IAM service-linked role.
    /// </summary>
    /// <param name="serviceName">The name of the AWS Service.</param>
    /// <param name="description">A description of the IAM service-linked role.</param>
    /// <returns>The IAM role that was created.</returns>
    public async Task<Role> CreateServiceLinkedRoleAsync(string serviceName, string description)
    {
        var request = new CreateServiceLinkedRoleRequest
        {
            AWSServiceName = serviceName,
            Description = description
        };

        var response = await _IAMService.CreateServiceLinkedRoleAsync(request);
        return response.Role;
    }


    /// <summary>
    /// Create an IAM user.
    /// </summary>
    /// <param name="userName">The username for the new IAM user.</param>
    /// <returns>The IAM user that was created.</returns>
    public async Task<User> CreateUserAsync(string userName)
    {
        var response = await _IAMService.CreateUserAsync(new CreateUserRequest { UserName = userName });
        return response.User;
    }


    /// <summary>
    /// Delete an IAM user's access key.
    /// </summary>
    /// <param name="accessKeyId">The Id for the IAM access key.</param>
    /// <param name="userName">The username of the user that owns the IAM
    /// access key.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteAccessKeyAsync(string accessKeyId, string userName)
    {
        var response = await _IAMService.DeleteAccessKeyAsync(new DeleteAccessKeyRequest
        {
            AccessKeyId = accessKeyId,
            UserName = userName,
        });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Delete an IAM policy.
    /// </summary>
    /// <param name="policyArn">The Amazon Resource Name (ARN) of the policy to
    /// delete.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeletePolicyAsync(string policyArn)
    {
        var response = await _IAMService.DeletePolicyAsync(new DeletePolicyRequest { PolicyArn = policyArn });
        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Delete an IAM role.
    /// </summary>
    /// <param name="roleName">The name of the IAM role to delete.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteRoleAsync(string roleName)
    {
        var response = await _IAMService.DeleteRoleAsync(new DeleteRoleRequest { RoleName = roleName });
        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Delete an IAM role policy.
    /// </summary>
    /// <param name="roleName">The name of the IAM role.</param>
    /// <param name="policyName">The name of the IAM role policy to delete.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteRolePolicyAsync(string roleName, string policyName)
    {
        var response = await _IAMService.DeleteRolePolicyAsync(new DeleteRolePolicyRequest
        {
            PolicyName = policyName,
            RoleName = roleName,
        });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Delete an IAM user.
    /// </summary>
    /// <param name="userName">The username of the IAM user to delete.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteUserAsync(string userName)
    {
        var response = await _IAMService.DeleteUserAsync(new DeleteUserRequest { UserName = userName });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Delete an IAM user policy.
    /// </summary>
    /// <param name="policyName">The name of the IAM policy to delete.</param>
    /// <param name="userName">The username of the IAM user.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteUserPolicyAsync(string policyName, string userName)
    {
        var response = await _IAMService.DeleteUserPolicyAsync(new DeleteUserPolicyRequest { PolicyName = policyName, UserName = userName });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Detach an IAM policy from an IAM role.
    /// </summary>
    /// <param name="policyArn">The Amazon Resource Name (ARN) of the IAM policy.</param>
    /// <param name="roleName">The name of the IAM role.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DetachRolePolicyAsync(string policyArn, string roleName)
    {
        var response = await _IAMService.DetachRolePolicyAsync(new DetachRolePolicyRequest
        {
            PolicyArn = policyArn,
            RoleName = roleName,
        });

        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }


    /// <summary>
    /// Gets the IAM password policy for an AWS account.
    /// </summary>
    /// <returns>The PasswordPolicy for the AWS account.</returns>
    public async Task<PasswordPolicy> GetAccountPasswordPolicyAsync()
    {
        var response = await _IAMService.GetAccountPasswordPolicyAsync(new GetAccountPasswordPolicyRequest());
        return response.PasswordPolicy;
    }


    /// <summary>
    /// Get information about an IAM policy.
    /// </summary>
    /// <param name="policyArn">The IAM policy to retrieve information for.</param>
    /// <returns>The IAM policy.</returns>
    public async Task<ManagedPolicy> GetPolicyAsync(string policyArn)
    {

        var response = await _IAMService.GetPolicyAsync(new GetPolicyRequest { PolicyArn = policyArn });
        return response.Policy;
    }


    /// <summary>
    /// Get information about an IAM role.
    /// </summary>
    /// <param name="roleName">The name of the IAM role to retrieve information
    /// for.</param>
    /// <returns>The IAM role that was retrieved.</returns>
    public async Task<Role> GetRoleAsync(string roleName)
    {
        var response = await _IAMService.GetRoleAsync(new GetRoleRequest
        {
            RoleName = roleName,
        });

        return response.Role;
    }


    /// <summary>
    /// Get information about an IAM user.
    /// </summary>
    /// <param name="userName">The username of the user.</param>
    /// <returns>An IAM user object.</returns>
    public async Task<User> GetUserAsync(string userName)
    {
        var response = await _IAMService.GetUserAsync(new GetUserRequest { UserName = userName });
        return response.User;
    }


    /// <summary>
    /// List the IAM role policies that are attached to an IAM role.
    /// </summary>
    /// <param name="roleName">The IAM role to list IAM policies for.</param>
    /// <returns>A list of the IAM policies attached to the IAM role.</returns>
    public async Task<List<AttachedPolicyType>> ListAttachedRolePoliciesAsync(string roleName)
    {
        var attachedPolicies = new List<AttachedPolicyType>();
        var attachedRolePoliciesPaginator = _IAMService.Paginators.ListAttachedRolePolicies(new ListAttachedRolePoliciesRequest { RoleName = roleName });

        await foreach (var response in attachedRolePoliciesPaginator.Responses)
        {
            attachedPolicies.AddRange(response.AttachedPolicies);
        }

        return attachedPolicies;
    }


    /// <summary>
    /// List IAM groups.
    /// </summary>
    /// <returns>A list of IAM groups.</returns>
    public async Task<List<Group>> ListGroupsAsync()
    {
        var groupsPaginator = _IAMService.Paginators.ListGroups(new ListGroupsRequest());
        var groups = new List<Group>();

        await foreach (var response in groupsPaginator.Responses)
        {
            groups.AddRange(response.Groups);
        }

        return groups;
    }


    /// <summary>
    /// List IAM policies.
    /// </summary>
    /// <returns>A list of the IAM policies.</returns>
    public async Task<List<ManagedPolicy>> ListPoliciesAsync()
    {
        var listPoliciesPaginator = _IAMService.Paginators.ListPolicies(new ListPoliciesRequest());
        var policies = new List<ManagedPolicy>();

        await foreach (var response in listPoliciesPaginator.Responses)
        {
            policies.AddRange(response.Policies);
        }

        return policies;
    }


    /// <summary>
    /// List IAM role policies.
    /// </summary>
    /// <param name="roleName">The IAM role for which to list IAM policies.</param>
    /// <returns>A list of IAM policy names.</returns>
    public async Task<List<string>> ListRolePoliciesAsync(string roleName)
    {
        var listRolePoliciesPaginator = _IAMService.Paginators.ListRolePolicies(new ListRolePoliciesRequest { RoleName = roleName });
        var policyNames = new List<string>();

        await foreach (var response in listRolePoliciesPaginator.Responses)
        {
            policyNames.AddRange(response.PolicyNames);
        }

        return policyNames;
    }


    /// <summary>
    /// List IAM roles.
    /// </summary>
    /// <returns>A list of IAM roles.</returns>
    public async Task<List<Role>> ListRolesAsync()
    {
        var listRolesPaginator = _IAMService.Paginators.ListRoles(new ListRolesRequest());
        var roles = new List<Role>();

        await foreach (var response in listRolesPaginator.Responses)
        {
            roles.AddRange(response.Roles);
        }

        return roles;
    }


    /// <summary>
    /// List SAML authentication providers.
    /// </summary>
    /// <returns>A list of SAML providers.</returns>
    public async Task<List<SAMLProviderListEntry>> ListSAMLProvidersAsync()
    {
        var response = await _IAMService.ListSAMLProvidersAsync(new ListSAMLProvidersRequest());
        return response.SAMLProviderList;
    }


    /// <summary>
    /// List IAM users.
    /// </summary>
    /// <returns>A list of IAM users.</returns>
    public async Task<List<User>> ListUsersAsync()
    {
        var listUsersPaginator = _IAMService.Paginators.ListUsers(new ListUsersRequest());
        var users = new List<User>();

        await foreach (var response in listUsersPaginator.Responses)
        {
            users.AddRange(response.Users);
        }

        return users;
    }


    /// <summary>
    /// Update the inline policy document embedded in a role.
    /// </summary>
    /// <param name="policyName">The name of the policy to embed.</param>
    /// <param name="roleName">The name of the role to update.</param>
    /// <param name="policyDocument">The policy document that defines the role.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> PutRolePolicyAsync(string policyName, string roleName, string policyDocument)
    {
        var request = new PutRolePolicyRequest
        {
            PolicyName = policyName,
            RoleName = roleName,
            PolicyDocument = policyDocument
        };

        var response = await _IAMService.PutRolePolicyAsync(request);
        return response.HttpStatusCode == HttpStatusCode.OK;
    }


    /// <summary>
    /// Add or update an inline policy document that is embedded in an IAM user.
    /// </summary>
    /// <param name="userName">The name of the IAM user.</param>
    /// <param name="policyName">The name of the IAM policy.</param>
    /// <param name="policyDocument">The policy document defining the IAM policy.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> PutUserPolicyAsync(string userName, string policyName, string policyDocument)
    {
        var request = new PutUserPolicyRequest
        {
            UserName = userName,
            PolicyName = policyName,
            PolicyDocument = policyDocument
        };

        var response = await _IAMService.PutUserPolicyAsync(request);
        return response.HttpStatusCode == System.Net.HttpStatusCode.OK;
    }

    /// <summary>
    /// Wait for a new access key to be ready to use.
    /// </summary>
    /// <param name="accessKeyId">The Id of the access key.</param>
    /// <returns>A boolean value indicating the success of the action.</returns>
    public async Task<bool> WaitUntilAccessKeyIsReady(string accessKeyId)
    {
        var keyReady = false;

        do
        {
            try
            {
                var response = await _IAMService.GetAccessKeyLastUsedAsync(
                    new GetAccessKeyLastUsedRequest { AccessKeyId = accessKeyId });
                if (response.UserName is not null)
                {
                    keyReady = true;
                }
            }
            catch (NoSuchEntityException)
            {
                keyReady = false;
            }
        } while (!keyReady);

        return keyReady;
    }
}



using Microsoft.Extensions.Configuration;

namespace IAMBasics;

public class IAMBasics
{
    private static ILogger logger = null!;

    static async Task Main(string[] args)
    {
        // Set up dependency injection for the AWS service.
        using var host = Host.CreateDefaultBuilder(args)
            .ConfigureLogging(logging =>
                logging.AddFilter("System", LogLevel.Debug)
                    .AddFilter<DebugLoggerProvider>("Microsoft", LogLevel.Information)
                    .AddFilter<ConsoleLoggerProvider>("Microsoft", LogLevel.Trace))
            .ConfigureServices((_, services) =>
            services.AddAWSService<IAmazonIdentityManagementService>()
            .AddTransient<IAMWrapper>()
            .AddTransient<UIWrapper>()
            )
            .Build();

        logger = LoggerFactory.Create(builder => { builder.AddConsole(); })
            .CreateLogger<IAMBasics>();


        IConfiguration configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("settings.json") // Load test settings from .json file.
            .AddJsonFile("settings.local.json",
                true) // Optionally load local settings.
            .Build();

        // Values needed for user, role, and policies.
        string userName = configuration["UserName"]!;
        string s3PolicyName = configuration["S3PolicyName"]!;
        string roleName = configuration["RoleName"]!;


        var iamWrapper = host.Services.GetRequiredService<IAMWrapper>();
        var uiWrapper = host.Services.GetRequiredService<UIWrapper>();

        uiWrapper.DisplayBasicsOverview();
        uiWrapper.PressEnter();

        // First create a user. By default, the new user has
        // no permissions.
        uiWrapper.DisplayTitle("Create User");
        Console.WriteLine($"Creating a new user with user name: {userName}.");
        var user = await iamWrapper.CreateUserAsync(userName);
        var userArn = user.Arn;

        Console.WriteLine($"Successfully created user: {userName} with ARN: {userArn}.");
        uiWrapper.WaitABit(15, "Now let's wait for the user to be ready for use.");

        // Define a role policy document that allows the new user
        // to assume the role.
        string assumeRolePolicyDocument = "{" +
          "\"Version\": \"2012-10-17\"," +
          "\"Statement\": [{" +
              "\"Effect\": \"Allow\"," +
              "\"Principal\": {" +
              $"	\"AWS\": \"{userArn}\"" +
              "}," +
              "\"Action\": \"sts:AssumeRole\"" +
          "}]" +
        "}";

        // Permissions to list all buckets.
        string policyDocument = "{" +
            "\"Version\": \"2012-10-17\"," +
            "	\"Statement\" : [{" +
                "	\"Action\" : [\"s3:ListAllMyBuckets\"]," +
                "	\"Effect\" : \"Allow\"," +
                "	\"Resource\" : \"*\"" +
            "}]" +
        "}";

        // Create an AccessKey for the user.
        uiWrapper.DisplayTitle("Create access key");
        Console.WriteLine("Now let's create an access key for the new user.");
        var accessKey = await iamWrapper.CreateAccessKeyAsync(userName);

        var accessKeyId = accessKey.AccessKeyId;
        var secretAccessKey = accessKey.SecretAccessKey;

        Console.WriteLine($"We have created the access key with Access key id: {accessKeyId}.");

        Console.WriteLine("Now let's wait until the IAM access key is ready to use.");
        var keyReady = await iamWrapper.WaitUntilAccessKeyIsReady(accessKeyId);

        // Now try listing the Amazon Simple Storage Service (Amazon S3)
        // buckets. This should fail at this point because the user doesn't
        // have permissions to perform this task.
        uiWrapper.DisplayTitle("Try to display Amazon S3 buckets");
        Console.WriteLine("Now let's try to display a list of the user's Amazon S3 buckets.");
        var s3Client1 = new AmazonS3Client(accessKeyId, secretAccessKey);
        var stsClient1 = new AmazonSecurityTokenServiceClient(accessKeyId, secretAccessKey);

        var s3Wrapper = new S3Wrapper(s3Client1, stsClient1);
        var buckets = await s3Wrapper.ListMyBucketsAsync();

        Console.WriteLine(buckets is null
            ? "As expected, the call to list the buckets has returned a null list."
            : "Something went wrong. This shouldn't have worked.");

        uiWrapper.PressEnter();

        uiWrapper.DisplayTitle("Create IAM role");
        Console.WriteLine($"Creating the role: {roleName}");

        // Creating an IAM role to allow listing the S3 buckets. A role name
        // is not case sensitive and must be unique to the account for which it
        // is created.
        var roleArn = await iamWrapper.CreateRoleAsync(roleName, assumeRolePolicyDocument);

        uiWrapper.PressEnter();

        // Create a policy with permissions to list S3 buckets.
        uiWrapper.DisplayTitle("Create IAM policy");
        Console.WriteLine($"Creating the policy: {s3PolicyName}");
        Console.WriteLine("with permissions to list the Amazon S3 buckets for the account.");
        var policy = await iamWrapper.CreatePolicyAsync(s3PolicyName, policyDocument);

        // Wait 15 seconds for the IAM policy to be available.
        uiWrapper.WaitABit(15, "Waiting for the policy to be available.");

        // Attach the policy to the role you created earlier.
        uiWrapper.DisplayTitle("Attach new IAM policy");
        Console.WriteLine("Now let's attach the policy to the role.");
        await iamWrapper.AttachRolePolicyAsync(policy.Arn, roleName);

        // Wait 15 seconds for the role to be updated.
        Console.WriteLine();
        uiWrapper.WaitABit(15, "Waiting for the policy to be attached.");

        // Use the AWS Security Token Service (AWS STS) to have the user
        // assume the role we created.
        var stsClient2 = new AmazonSecurityTokenServiceClient(accessKeyId, secretAccessKey);

        // Wait for the new credentials to become valid.
        uiWrapper.WaitABit(10, "Waiting for the credentials to be valid.");

        var assumedRoleCredentials = await s3Wrapper.AssumeS3RoleAsync("temporary-session", roleArn);

        // Try again to list the buckets using the client created with
        // the new user's credentials. This time, it should work.
        var s3Client2 = new AmazonS3Client(assumedRoleCredentials);

        s3Wrapper.UpdateClients(s3Client2, stsClient2);

        buckets = await s3Wrapper.ListMyBucketsAsync();

        uiWrapper.DisplayTitle("List Amazon S3 buckets");
        Console.WriteLine("This time we should have buckets to list.");
        if (buckets is not null)
        {
            buckets.ForEach(bucket =>
            {
                Console.WriteLine($"{bucket.BucketName} created: {bucket.CreationDate}");
            });
        }

        uiWrapper.PressEnter();

        // Now clean up all the resources used in the example.
        uiWrapper.DisplayTitle("Clean up resources");
        Console.WriteLine("Thank you for watching. The IAM Basics demo is complete.");
        Console.WriteLine("Please wait while we clean up the resources we created.");

        await iamWrapper.DetachRolePolicyAsync(policy.Arn, roleName);

        await iamWrapper.DeletePolicyAsync(policy.Arn);

        await iamWrapper.DeleteRoleAsync(roleName);

        await iamWrapper.DeleteAccessKeyAsync(accessKeyId, userName);

        await iamWrapper.DeleteUserAsync(userName);

        uiWrapper.PressEnter();

        Console.WriteLine("All done cleaning up our resources. Thank you for your patience.");
    }
}


namespace IamScenariosCommon;

using System.Net;

/// <summary>
/// A class to perform Amazon Simple Storage Service (Amazon S3) actions for
/// the IAM Basics scenario.
/// </summary>
public class S3Wrapper
{
    private IAmazonS3 _s3Service;
    private IAmazonSecurityTokenService _stsService;

    /// <summary>
    /// Constructor for the S3Wrapper class.
    /// </summary>
    /// <param name="s3Service">An Amazon S3 client object.</param>
    /// <param name="stsService">An AWS Security Token Service (AWS STS)
    /// client object.</param>
    public S3Wrapper(IAmazonS3 s3Service, IAmazonSecurityTokenService stsService)
    {
        _s3Service = s3Service;
        _stsService = stsService;
    }

    /// <summary>
    /// Assumes an AWS Identity and Access Management (IAM) role that allows
    /// Amazon S3 access for the current session.
    /// </summary>
    /// <param name="roleSession">A string representing the current session.</param>
    /// <param name="roleToAssume">The name of the IAM role to assume.</param>
    /// <returns>Credentials for the newly assumed IAM role.</returns>
    public async Task<Credentials> AssumeS3RoleAsync(string roleSession, string roleToAssume)
    {
        // Create the request to use with the AssumeRoleAsync call.
        var request = new AssumeRoleRequest()
        {
            RoleSessionName = roleSession,
            RoleArn = roleToAssume,
        };

        var response = await _stsService.AssumeRoleAsync(request);

        return response.Credentials;
    }


    /// <summary>
    /// Delete an S3 bucket.
    /// </summary>
    /// <param name="bucketName">Name of the S3 bucket to delete.</param>
    /// <returns>A Boolean value indicating the success of the action.</returns>
    public async Task<bool> DeleteBucketAsync(string bucketName)
    {
        var result = await _s3Service.DeleteBucketAsync(new DeleteBucketRequest { BucketName = bucketName });
        return result.HttpStatusCode == HttpStatusCode.OK;
    }

    /// <summary>
    /// List the buckets that are owned by the user's account.
    /// </summary>
    /// <returns>Async Task.</returns>
    public async Task<List<S3Bucket>?> ListMyBucketsAsync()
    {
        try
        {
            // Get the list of buckets accessible by the new user.
            var response = await _s3Service.ListBucketsAsync();

            return response.Buckets;
        }
        catch (AmazonS3Exception ex)
        {
            // Something else went wrong. Display the error message.
            Console.WriteLine($"Error: {ex.Message}");
            return null;
        }
    }

    /// <summary>
    /// Create a new S3 bucket.
    /// </summary>
    /// <param name="bucketName">The name for the new bucket.</param>
    /// <returns>A Boolean value indicating whether the action completed
    /// successfully.</returns>
    public async Task<bool> PutBucketAsync(string bucketName)
    {
        var response = await _s3Service.PutBucketAsync(new PutBucketRequest { BucketName = bucketName });
        return response.HttpStatusCode == HttpStatusCode.OK;
    }

    /// <summary>
    /// Update the client objects with new client objects. This is available
    /// because the scenario uses the methods of this class without and then
    /// with the proper permissions to list S3 buckets.
    /// </summary>
    /// <param name="s3Service">The Amazon S3 client object.</param>
    /// <param name="stsService">The AWS STS client object.</param>
    public void UpdateClients(IAmazonS3 s3Service, IAmazonSecurityTokenService stsService)
    {
        _s3Service = s3Service;
        _stsService = stsService;
    }
}


namespace IamScenariosCommon;

public class UIWrapper
{
    public readonly string SepBar = new('-', Console.WindowWidth);

    /// <summary>
    /// Show information about the IAM Groups scenario.
    /// </summary>
    public void DisplayGroupsOverview()
    {
        Console.Clear();

        DisplayTitle("Welcome to the IAM Groups Demo");
        Console.WriteLine("This example application does the following:");
        Console.WriteLine("\t1. Creates an Amazon Identity and Access Management (IAM) group.");
        Console.WriteLine("\t2. Adds an IAM policy to the IAM group giving it full access to Amazon S3.");
        Console.WriteLine("\t3. Creates a new IAM user.");
        Console.WriteLine("\t4. Creates an IAM access key for the user.");
        Console.WriteLine("\t5. Adds the user to the IAM group.");
        Console.WriteLine("\t6. Lists the buckets on the account.");
        Console.WriteLine("\t7. Proves that the user has full Amazon S3 access by creating a bucket.");
        Console.WriteLine("\t8. List the buckets again to show the new bucket.");
        Console.WriteLine("\t9. Cleans up all the resources created.");
    }

    /// <summary>
    /// Show information about the IAM Basics scenario.
    /// </summary>
    public void DisplayBasicsOverview()
    {
        Console.Clear();

        DisplayTitle("Welcome to IAM Basics");
        Console.WriteLine("This example application does the following:");
        Console.WriteLine("\t1. Creates a user with no permissions.");
        Console.WriteLine("\t2. Creates a role and policy that grant s3:ListAllMyBuckets permission.");
        Console.WriteLine("\t3. Grants the user permission to assume the role.");
        Console.WriteLine("\t4. Creates an S3 client object as the user and tries to list buckets (this will fail).");
        Console.WriteLine("\t5. Gets temporary credentials by assuming the role.");
        Console.WriteLine("\t6. Creates a new S3 client object with the temporary credentials and lists the buckets (this will succeed).");
        Console.WriteLine("\t7. Deletes all the resources.");
    }

    /// <summary>
    /// Display a message and wait until the user presses enter.
    /// </summary>
    public void PressEnter()
    {
        Console.Write("\nPress <Enter> to continue. ");
        _ = Console.ReadLine();
        Console.WriteLine();
    }

    /// <summary>
    /// Pad a string with spaces to center it on the console display.
    /// </summary>
    /// <param name="strToCenter">The string to be centered.</param>
    /// <returns>The padded string.</returns>
    public string CenterString(string strToCenter)
    {
        var padAmount = (Console.WindowWidth - strToCenter.Length) / 2;
        var leftPad = new string(' ', padAmount);
        return $"{leftPad}{strToCenter}";
    }

    /// <summary>
    /// Display a line of hyphens, the centered text of the title, and another
    /// line of hyphens.
    /// </summary>
    /// <param name="strTitle">The string to be displayed.</param>
    public void DisplayTitle(string strTitle)
    {
        Console.WriteLine(SepBar);
        Console.WriteLine(CenterString(strTitle));
        Console.WriteLine(SepBar);
    }

    /// <summary>
    /// Display a countdown and wait for a number of seconds.
    /// </summary>
    /// <param name="numSeconds">The number of seconds to wait.</param>
    public void WaitABit(int numSeconds, string msg)
    {
        Console.WriteLine(msg);

        // Wait for the requested number of seconds.
        for (int i = numSeconds; i > 0; i--)
        {
            System.Threading.Thread.Sleep(1000);
            Console.Write($"{i}...");
        }

        PressEnter();
    }
}
```
+ Para obter detalhes da API, consulte os tópicos a seguir na *Referência da API AWS SDK para .NET*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/DotNetSDKV3/iam-2010-05-08/PutUserPolicy)

------
#### [ Bash ]

**AWS CLI com script Bash**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli/bash-linux/iam#code-examples). 

```
###############################################################################
# function iam_create_user_assume_role
#
# Scenario to create an IAM user, create an IAM role, and apply the role to the user.
#
#     "IAM access" permissions are needed to run this code.
#     "STS assume role" permissions are needed to run this code. (Note: It might be necessary to
#           create a custom policy).
#
# Returns:
#       0 - If successful.
#       1 - If an error occurred.
###############################################################################
function iam_create_user_assume_role() {
  {
    if [ "$IAM_OPERATIONS_SOURCED" != "True" ]; then

      source ./iam_operations.sh
    fi
  }

  echo_repeat "*" 88
  echo "Welcome to the IAM create user and assume role demo."
  echo
  echo "This demo will create an IAM user, create an IAM role, and apply the role to the user."
  echo_repeat "*" 88
  echo

  echo -n "Enter a name for a new IAM user: "
  get_input
  user_name=$get_input_result

  local user_arn
  user_arn=$(iam_create_user -u "$user_name")

  # shellcheck disable=SC2181
  if [[ ${?} == 0 ]]; then
    echo "Created demo IAM user named $user_name"
  else
    errecho "$user_arn"
    errecho "The user failed to create. This demo will exit."
    return 1
  fi

  local access_key_response
  access_key_response=$(iam_create_user_access_key -u "$user_name")
  # shellcheck disable=SC2181
  if [[ ${?} != 0 ]]; then
    errecho "The access key failed to create. This demo will exit."
    clean_up "$user_name"
    return 1
  fi

  IFS=$'\t ' read -r -a access_key_values <<<"$access_key_response"
  local key_name=${access_key_values[0]}
  local key_secret=${access_key_values[1]}

  echo "Created access key named $key_name"

  echo "Wait 10 seconds for the user to be ready."
  sleep 10
  echo_repeat "*" 88
  echo

  local iam_role_name
  iam_role_name=$(generate_random_name "test-role")
  echo "Creating a role named $iam_role_name with user $user_name as the principal."

  local assume_role_policy_document="{
    \"Version\": \"2012-10-17\",
    \"Statement\": [{
        \"Effect\": \"Allow\",
        \"Principal\": {\"AWS\": \"$user_arn\"},
        \"Action\": \"sts:AssumeRole\"
        }]
    }"

  local role_arn
  role_arn=$(iam_create_role -n "$iam_role_name" -p "$assume_role_policy_document")

  # shellcheck disable=SC2181
  if [ ${?} == 0 ]; then
    echo "Created IAM role named $iam_role_name"
  else
    errecho "The role failed to create. This demo will exit."
    clean_up "$user_name" "$key_name"
    return 1
  fi

  local policy_name
  policy_name=$(generate_random_name "test-policy")
  local policy_document="{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"s3:ListAllMyBuckets\",
                    \"Resource\": \"arn:aws:s3:::*\"}]}"

  local policy_arn
  policy_arn=$(iam_create_policy -n "$policy_name" -p "$policy_document")
  # shellcheck disable=SC2181
  if [[ ${?} == 0 ]]; then
    echo "Created  IAM policy named $policy_name"
  else
    errecho "The policy failed to create."
    clean_up "$user_name" "$key_name" "$iam_role_name"
    return 1
  fi

  if (iam_attach_role_policy -n "$iam_role_name" -p "$policy_arn"); then
    echo "Attached policy $policy_arn to role $iam_role_name"
  else
    errecho "The policy failed to attach."
    clean_up "$user_name" "$key_name" "$iam_role_name" "$policy_arn"
    return 1
  fi

  local assume_role_policy_document="{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"sts:AssumeRole\",
                    \"Resource\": \"$role_arn\"}]}"

  local assume_role_policy_name
  assume_role_policy_name=$(generate_random_name "test-assume-role-")

  # shellcheck disable=SC2181
  local assume_role_policy_arn
  assume_role_policy_arn=$(iam_create_policy -n "$assume_role_policy_name" -p "$assume_role_policy_document")
  # shellcheck disable=SC2181
  if [ ${?} == 0 ]; then
    echo "Created  IAM policy named $assume_role_policy_name for sts assume role"
  else
    errecho "The policy failed to create."
    clean_up "$user_name" "$key_name" "$iam_role_name" "$policy_arn" "$policy_arn"
    return 1
  fi

  echo "Wait 10 seconds to give AWS time to propagate these new resources and connections."
  sleep 10
  echo_repeat "*" 88
  echo

  echo "Try to list buckets without the new user assuming the role."
  echo_repeat "*" 88
  echo

  # Set the environment variables for the created user.
  # bashsupport disable=BP2001
  export AWS_ACCESS_KEY_ID=$key_name
  # bashsupport disable=BP2001
  export AWS_SECRET_ACCESS_KEY=$key_secret

  local buckets
  buckets=$(s3_list_buckets)

  # shellcheck disable=SC2181
  if [ ${?} == 0 ]; then
    local bucket_count
    bucket_count=$(echo "$buckets" | wc -w | xargs)
    echo "There are $bucket_count buckets in the account. This should not have happened."
  else
    errecho "Because the role with permissions has not been assumed, listing buckets failed."
  fi

  echo
  echo_repeat "*" 88
  echo "Now assume the role $iam_role_name and list the buckets."
  echo_repeat "*" 88
  echo

  local credentials

  credentials=$(sts_assume_role -r "$role_arn" -n "AssumeRoleDemoSession")
  # shellcheck disable=SC2181
  if [ ${?} == 0 ]; then
    echo "Assumed role $iam_role_name"
  else
    errecho "Failed to assume role."
    export AWS_ACCESS_KEY_ID=""
    export AWS_SECRET_ACCESS_KEY=""
    clean_up "$user_name" "$key_name" "$iam_role_name" "$policy_arn" "$policy_arn" "$assume_role_policy_arn"
    return 1
  fi

  IFS=$'\t ' read -r -a credentials <<<"$credentials"

  export AWS_ACCESS_KEY_ID=${credentials[0]}
  export AWS_SECRET_ACCESS_KEY=${credentials[1]}
  # bashsupport disable=BP2001
  export AWS_SESSION_TOKEN=${credentials[2]}

  buckets=$(s3_list_buckets)

  # shellcheck disable=SC2181
  if [ ${?} == 0 ]; then
    local bucket_count
    bucket_count=$(echo "$buckets" | wc -w | xargs)
    echo "There are $bucket_count buckets in the account. Listing buckets succeeded because of "
    echo "the assumed role."
  else
    errecho "Failed to list buckets. This should not happen."
    export AWS_ACCESS_KEY_ID=""
    export AWS_SECRET_ACCESS_KEY=""
    export AWS_SESSION_TOKEN=""
    clean_up "$user_name" "$key_name" "$iam_role_name" "$policy_arn" "$policy_arn" "$assume_role_policy_arn"
    return 1
  fi

  local result=0
  export AWS_ACCESS_KEY_ID=""
  export AWS_SECRET_ACCESS_KEY=""

  echo
  echo_repeat "*" 88
  echo "The created resources will now be deleted."
  echo_repeat "*" 88
  echo

  clean_up "$user_name" "$key_name" "$iam_role_name" "$policy_arn" "$policy_arn" "$assume_role_policy_arn"

  # shellcheck disable=SC2181
  if [[ ${?} -ne 0 ]]; then
    result=1
  fi

  return $result
}
```
As funções do IAM usadas neste cenário.  

```
###############################################################################
# function iam_user_exists
#
# This function checks to see if the specified AWS Identity and Access Management (IAM) user already exists.
#
# Parameters:
#       $1 - The name of the IAM user to check.
#
# Returns:
#       0 - If the user already exists.
#       1 - If the user doesn't exist.
###############################################################################
function iam_user_exists() {
  local user_name
  user_name=$1

  # Check whether the IAM user already exists.
  # We suppress all output - we're interested only in the return code.

  local errors
  errors=$(aws iam get-user \
    --user-name "$user_name" 2>&1 >/dev/null)

  local error_code=${?}

  if [[ $error_code -eq 0 ]]; then
    return 0 # 0 in Bash script means true.
  else
    if [[ $errors != *"error"*"(NoSuchEntity)"* ]]; then
      aws_cli_error_log $error_code
      errecho "Error calling iam get-user $errors"
    fi

    return 1 # 1 in Bash script means false.
  fi
}

###############################################################################
# function iam_create_user
#
# This function creates the specified IAM user, unless
# it already exists.
#
# Parameters:
#       -u user_name  -- The name of the user to create.
#
# Returns:
#       The ARN of the user.
#     And:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_create_user() {
  local user_name response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_create_user"
    echo "Creates an AWS Identity and Access Management (IAM) user. You must supply a username:"
    echo "  -u user_name    The name of the user. It must be unique within the account."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "u:h" option; do
    case "${option}" in
      u) user_name="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$user_name" ]]; then
    errecho "ERROR: You must provide a username with the -u parameter."
    usage
    return 1
  fi

  iecho "Parameters:\n"
  iecho "    User name:   $user_name"
  iecho ""

  # If the user already exists, we don't want to try to create it.
  if (iam_user_exists "$user_name"); then
    errecho "ERROR: A user with that name already exists in the account."
    return 1
  fi

  response=$(aws iam create-user --user-name "$user_name" \
    --output text \
    --query 'User.Arn')

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-user operation failed.$response"
    return 1
  fi

  echo "$response"

  return 0
}

###############################################################################
# function iam_create_user_access_key
#
# This function creates an IAM access key for the specified user.
#
# Parameters:
#       -u user_name -- The name of the IAM user.
#       [-f file_name] -- The optional file name for the access key output.
#
# Returns:
#       [access_key_id access_key_secret]
#     And:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_create_user_access_key() {
  local user_name file_name response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_create_user_access_key"
    echo "Creates an AWS Identity and Access Management (IAM) key pair."
    echo "  -u user_name   The name of the IAM user."
    echo "  [-f file_name]   Optional file name for the access key output."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "u:f:h" option; do
    case "${option}" in
      u) user_name="${OPTARG}" ;;
      f) file_name="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$user_name" ]]; then
    errecho "ERROR: You must provide a username with the -u parameter."
    usage
    return 1
  fi

  response=$(aws iam create-access-key \
    --user-name "$user_name" \
    --output text)

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-access-key operation failed.$response"
    return 1
  fi

  if [[ -n "$file_name" ]]; then
    echo "$response" >"$file_name"
  fi

  local key_id key_secret
  # shellcheck disable=SC2086
  key_id=$(echo $response | cut -f 2 -d ' ')
  # shellcheck disable=SC2086
  key_secret=$(echo $response | cut -f 4 -d ' ')

  echo "$key_id $key_secret"

  return 0
}

###############################################################################
# function iam_create_role
#
# This function creates an IAM role.
#
# Parameters:
#       -n role_name -- The name of the IAM role.
#       -p policy_json -- The assume role policy document.
#
# Returns:
#       The ARN of the role.
#     And:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_create_role() {
  local role_name policy_document response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_create_user_access_key"
    echo "Creates an AWS Identity and Access Management (IAM) role."
    echo "  -n role_name   The name of the IAM role."
    echo "  -p policy_json -- The assume role policy document."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:p:h" option; do
    case "${option}" in
      n) role_name="${OPTARG}" ;;
      p) policy_document="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$role_name" ]]; then
    errecho "ERROR: You must provide a role name with the -n parameter."
    usage
    return 1
  fi

  if [[ -z "$policy_document" ]]; then
    errecho "ERROR: You must provide a policy document with the -p parameter."
    usage
    return 1
  fi

  response=$(aws iam create-role \
    --role-name "$role_name" \
    --assume-role-policy-document "$policy_document" \
    --output text \
    --query Role.Arn)

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-role operation failed.\n$response"
    return 1
  fi

  echo "$response"

  return 0
}

###############################################################################
# function iam_create_policy
#
# This function creates an IAM policy.
#
# Parameters:
#       -n policy_name -- The name of the IAM policy.
#       -p policy_json -- The policy document.
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_create_policy() {
  local policy_name policy_document response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_create_policy"
    echo "Creates an AWS Identity and Access Management (IAM) policy."
    echo "  -n policy_name   The name of the IAM policy."
    echo "  -p policy_json -- The policy document."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:p:h" option; do
    case "${option}" in
      n) policy_name="${OPTARG}" ;;
      p) policy_document="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$policy_name" ]]; then
    errecho "ERROR: You must provide a policy name with the -n parameter."
    usage
    return 1
  fi

  if [[ -z "$policy_document" ]]; then
    errecho "ERROR: You must provide a policy document with the -p parameter."
    usage
    return 1
  fi

  response=$(aws iam create-policy \
    --policy-name "$policy_name" \
    --policy-document "$policy_document" \
    --output text \
    --query Policy.Arn)

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports create-policy operation failed.\n$response"
    return 1
  fi

  echo "$response"
}

###############################################################################
# function iam_attach_role_policy
#
# This function attaches an IAM policy to a tole.
#
# Parameters:
#       -n role_name -- The name of the IAM role.
#       -p policy_ARN -- The IAM policy document ARN..
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_attach_role_policy() {
  local role_name policy_arn response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_attach_role_policy"
    echo "Attaches an AWS Identity and Access Management (IAM) policy to an IAM role."
    echo "  -n role_name   The name of the IAM role."
    echo "  -p policy_ARN -- The IAM policy document ARN."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:p:h" option; do
    case "${option}" in
      n) role_name="${OPTARG}" ;;
      p) policy_arn="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$role_name" ]]; then
    errecho "ERROR: You must provide a role name with the -n parameter."
    usage
    return 1
  fi

  if [[ -z "$policy_arn" ]]; then
    errecho "ERROR: You must provide a policy ARN with the -p parameter."
    usage
    return 1
  fi

  response=$(aws iam attach-role-policy \
    --role-name "$role_name" \
    --policy-arn "$policy_arn")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports attach-role-policy operation failed.\n$response"
    return 1
  fi

  echo "$response"

  return 0
}

###############################################################################
# function iam_detach_role_policy
#
# This function detaches an IAM policy to a tole.
#
# Parameters:
#       -n role_name -- The name of the IAM role.
#       -p policy_ARN -- The IAM policy document ARN..
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_detach_role_policy() {
  local role_name policy_arn response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_detach_role_policy"
    echo "Detaches an AWS Identity and Access Management (IAM) policy to an IAM role."
    echo "  -n role_name   The name of the IAM role."
    echo "  -p policy_ARN -- The IAM policy document ARN."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:p:h" option; do
    case "${option}" in
      n) role_name="${OPTARG}" ;;
      p) policy_arn="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$role_name" ]]; then
    errecho "ERROR: You must provide a role name with the -n parameter."
    usage
    return 1
  fi

  if [[ -z "$policy_arn" ]]; then
    errecho "ERROR: You must provide a policy ARN with the -p parameter."
    usage
    return 1
  fi

  response=$(aws iam detach-role-policy \
    --role-name "$role_name" \
    --policy-arn "$policy_arn")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports detach-role-policy operation failed.\n$response"
    return 1
  fi

  echo "$response"

  return 0
}

###############################################################################
# function iam_delete_policy
#
# This function deletes an IAM policy.
#
# Parameters:
#       -n policy_arn -- The name of the IAM policy arn.
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_delete_policy() {
  local policy_arn response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_delete_policy"
    echo "Deletes an AWS Identity and Access Management (IAM) policy"
    echo "  -n policy_arn -- The name of the IAM policy arn."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:h" option; do
    case "${option}" in
      n) policy_arn="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$policy_arn" ]]; then
    errecho "ERROR: You must provide a policy arn with the -n parameter."
    usage
    return 1
  fi

  iecho "Parameters:\n"
  iecho "    Policy arn:  $policy_arn"
  iecho ""

  response=$(aws iam delete-policy \
    --policy-arn "$policy_arn")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports delete-policy operation failed.\n$response"
    return 1
  fi

  iecho "delete-policy response:$response"
  iecho

  return 0
}

###############################################################################
# function iam_delete_role
#
# This function deletes an IAM role.
#
# Parameters:
#       -n role_name -- The name of the IAM role.
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_delete_role() {
  local role_name response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_delete_role"
    echo "Deletes an AWS Identity and Access Management (IAM) role"
    echo "  -n role_name -- The name of the IAM role."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "n:h" option; do
    case "${option}" in
      n) role_name="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  echo "role_name:$role_name"
  if [[ -z "$role_name" ]]; then
    errecho "ERROR: You must provide a role name with the -n parameter."
    usage
    return 1
  fi

  iecho "Parameters:\n"
  iecho "    Role name:  $role_name"
  iecho ""

  response=$(aws iam delete-role \
    --role-name "$role_name")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports delete-role operation failed.\n$response"
    return 1
  fi

  iecho "delete-role response:$response"
  iecho

  return 0
}

###############################################################################
# function iam_delete_access_key
#
# This function deletes an IAM access key for the specified IAM user.
#
# Parameters:
#       -u user_name  -- The name of the user.
#       -k access_key -- The access key to delete.
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_delete_access_key() {
  local user_name access_key response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_delete_access_key"
    echo "Deletes an AWS Identity and Access Management (IAM) access key for the specified IAM user"
    echo "  -u user_name    The name of the user."
    echo "  -k access_key   The access key to delete."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "u:k:h" option; do
    case "${option}" in
      u) user_name="${OPTARG}" ;;
      k) access_key="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$user_name" ]]; then
    errecho "ERROR: You must provide a username with the -u parameter."
    usage
    return 1
  fi

  if [[ -z "$access_key" ]]; then
    errecho "ERROR: You must provide an access key with the -k parameter."
    usage
    return 1
  fi

  iecho "Parameters:\n"
  iecho "    Username:   $user_name"
  iecho "    Access key:   $access_key"
  iecho ""

  response=$(aws iam delete-access-key \
    --user-name "$user_name" \
    --access-key-id "$access_key")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports delete-access-key operation failed.\n$response"
    return 1
  fi

  iecho "delete-access-key response:$response"
  iecho

  return 0
}

###############################################################################
# function iam_delete_user
#
# This function deletes the specified IAM user.
#
# Parameters:
#       -u user_name  -- The name of the user to create.
#
# Returns:
#       0 - If successful.
#       1 - If it fails.
###############################################################################
function iam_delete_user() {
  local user_name response
  local option OPTARG # Required to use getopts command in a function.

  # bashsupport disable=BP5008
  function usage() {
    echo "function iam_delete_user"
    echo "Deletes an AWS Identity and Access Management (IAM) user. You must supply a username:"
    echo "  -u user_name    The name of the user."
    echo ""
  }

  # Retrieve the calling parameters.
  while getopts "u:h" option; do
    case "${option}" in
      u) user_name="${OPTARG}" ;;
      h)
        usage
        return 0
        ;;
      \?)
        echo "Invalid parameter"
        usage
        return 1
        ;;
    esac
  done
  export OPTIND=1

  if [[ -z "$user_name" ]]; then
    errecho "ERROR: You must provide a username with the -u parameter."
    usage
    return 1
  fi

  iecho "Parameters:\n"
  iecho "    User name:   $user_name"
  iecho ""

  # If the user does not exist, we don't want to try to delete it.
  if (! iam_user_exists "$user_name"); then
    errecho "ERROR: A user with that name does not exist in the account."
    return 1
  fi

  response=$(aws iam delete-user \
    --user-name "$user_name")

  local error_code=${?}

  if [[ $error_code -ne 0 ]]; then
    aws_cli_error_log $error_code
    errecho "ERROR: AWS reports delete-user operation failed.$response"
    return 1
  fi

  iecho "delete-user response:$response"
  iecho

  return 0
}
```
+ Consulte detalhes da API nos tópicos a seguir na *Referência de comandos da AWS CLI*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/aws-cli/iam-2010-05-08/PutUserPolicy)

------
#### [ C\$1\$1 ]

**SDK para C\$1\$1**  
 Há mais no GitHub. Encontre o exemplo completo e veja como configurar e executar no [repositório de exemplos de código da AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/iam#code-examples). 

```
namespace AwsDoc {
    namespace IAM {
  
        //! Cleanup by deleting created entities.
        /*!
          \sa DeleteCreatedEntities
          \param client: IAM client.
          \param role: IAM role.
          \param user: IAM user.
          \param policy: IAM policy.
        */
        static bool DeleteCreatedEntities(const Aws::IAM::IAMClient &client,
                                          const Aws::IAM::Model::Role &role,
                                          const Aws::IAM::Model::User &user,
                                          const Aws::IAM::Model::Policy &policy);
    }

    static const int LIST_BUCKETS_WAIT_SEC = 20;

    static const char ALLOCATION_TAG[] = "example_code";
}

//! Scenario to create an IAM user, create an IAM role, and apply the role to the user.
// "IAM access" permissions are needed to run this code.
// "STS assume role" permissions are needed to run this code. (Note: It might be necessary to
//    create a custom policy).
/*!
  \sa iamCreateUserAssumeRoleScenario
  \param clientConfig: Aws client configuration.
  \return bool: Successful completion.
*/
bool AwsDoc::IAM::iamCreateUserAssumeRoleScenario(
        const Aws::Client::ClientConfiguration &clientConfig) {

    Aws::IAM::IAMClient client(clientConfig);
    Aws::IAM::Model::User user;
    Aws::IAM::Model::Role role;
    Aws::IAM::Model::Policy policy;

    // 1. Create a user.
    {
        Aws::IAM::Model::CreateUserRequest request;
        Aws::String uuid = Aws::Utils::UUID::RandomUUID();
        Aws::String userName = "iam-demo-user-" +
                               Aws::Utils::StringUtils::ToLower(uuid.c_str());
        request.SetUserName(userName);

        Aws::IAM::Model::CreateUserOutcome outcome = client.CreateUser(request);
        if (!outcome.IsSuccess()) {
            std::cout << "Error creating IAM user " << userName << ":" <<
                      outcome.GetError().GetMessage() << std::endl;
            return false;
        }
        else {
            std::cout << "Successfully created IAM user " << userName << std::endl;
        }

        user = outcome.GetResult().GetUser();
    }

    // 2. Create a role.
    {
        // Get the IAM user for the current client in order to access its ARN.
        Aws::String iamUserArn;
        {
            Aws::IAM::Model::GetUserRequest request;
            Aws::IAM::Model::GetUserOutcome outcome = client.GetUser(request);
            if (!outcome.IsSuccess()) {
                std::cerr << "Error getting Iam user. " <<
                          outcome.GetError().GetMessage() << std::endl;

                DeleteCreatedEntities(client, role, user, policy);
                return false;
            }
            else {
                std::cout << "Successfully retrieved Iam user "
                          << outcome.GetResult().GetUser().GetUserName()
                          << std::endl;
            }

            iamUserArn = outcome.GetResult().GetUser().GetArn();
        }

        Aws::IAM::Model::CreateRoleRequest request;

        Aws::String uuid = Aws::Utils::UUID::RandomUUID();
        Aws::String roleName = "iam-demo-role-" +
                               Aws::Utils::StringUtils::ToLower(uuid.c_str());
        request.SetRoleName(roleName);

        // Build policy document for role.
        Aws::Utils::Document jsonStatement;
        jsonStatement.WithString("Effect", "Allow");

        Aws::Utils::Document jsonPrincipal;
        jsonPrincipal.WithString("AWS", iamUserArn);
        jsonStatement.WithObject("Principal", jsonPrincipal);
        jsonStatement.WithString("Action", "sts:AssumeRole");
        jsonStatement.WithObject("Condition", Aws::Utils::Document());

        Aws::Utils::Document policyDocument;
        policyDocument.WithString("Version", "2012-10-17");

        Aws::Utils::Array<Aws::Utils::Document> statements(1);
        statements[0] = jsonStatement;
        policyDocument.WithArray("Statement", statements);

        std::cout << "Setting policy for role\n   "
                  << policyDocument.View().WriteCompact() << std::endl;

        // Set role policy document as JSON string.
        request.SetAssumeRolePolicyDocument(policyDocument.View().WriteCompact());

        Aws::IAM::Model::CreateRoleOutcome outcome = client.CreateRole(request);
        if (!outcome.IsSuccess()) {
            std::cerr << "Error creating role. " <<
                      outcome.GetError().GetMessage() << std::endl;

            DeleteCreatedEntities(client, role, user, policy);
            return false;
        }
        else {
            std::cout << "Successfully created a role with name " << roleName
                      << std::endl;
        }

        role = outcome.GetResult().GetRole();
    }

    // 3. Create an IAM policy.
    {
        Aws::IAM::Model::CreatePolicyRequest request;
        Aws::String uuid = Aws::Utils::UUID::RandomUUID();
        Aws::String policyName = "iam-demo-policy-" +
                                 Aws::Utils::StringUtils::ToLower(uuid.c_str());
        request.SetPolicyName(policyName);

        // Build IAM policy document.
        Aws::Utils::Document jsonStatement;
        jsonStatement.WithString("Effect", "Allow");
        jsonStatement.WithString("Action", "s3:ListAllMyBuckets");
        jsonStatement.WithString("Resource", "arn:aws:s3:::*");

        Aws::Utils::Document policyDocument;
        policyDocument.WithString("Version", "2012-10-17");

        Aws::Utils::Array<Aws::Utils::Document> statements(1);
        statements[0] = jsonStatement;
        policyDocument.WithArray("Statement", statements);

        std::cout << "Creating a policy.\n   " << policyDocument.View().WriteCompact()
                  << std::endl;

        // Set IAM policy document as JSON string.
        request.SetPolicyDocument(policyDocument.View().WriteCompact());

        Aws::IAM::Model::CreatePolicyOutcome outcome = client.CreatePolicy(request);
        if (!outcome.IsSuccess()) {
            std::cerr << "Error creating policy. " <<
                      outcome.GetError().GetMessage() << std::endl;

            DeleteCreatedEntities(client, role, user, policy);
            return false;
        }
        else {
            std::cout << "Successfully created a policy with name, " << policyName <<
                      "." << std::endl;
        }

        policy = outcome.GetResult().GetPolicy();
    }

    // 4. Assume the new role using the AWS Security Token Service (STS).
    Aws::STS::Model::Credentials credentials;
    {
        Aws::STS::STSClient stsClient(clientConfig);

        Aws::STS::Model::AssumeRoleRequest request;
        request.SetRoleArn(role.GetArn());
        Aws::String uuid = Aws::Utils::UUID::RandomUUID();
        Aws::String roleSessionName = "iam-demo-role-session-" +
                                      Aws::Utils::StringUtils::ToLower(uuid.c_str());
        request.SetRoleSessionName(roleSessionName);

        Aws::STS::Model::AssumeRoleOutcome assumeRoleOutcome;

        // Repeatedly call AssumeRole, because there is often a delay
        // before the role is available to be assumed.
        // Repeat at most 20 times when access is denied.
        int count = 0;
        while (true) {
            assumeRoleOutcome = stsClient.AssumeRole(request);
            if (!assumeRoleOutcome.IsSuccess()) {
                if (count > 20 ||
                    assumeRoleOutcome.GetError().GetErrorType() !=
                    Aws::STS::STSErrors::ACCESS_DENIED) {
                    std::cerr << "Error assuming role after 20 tries. " <<
                              assumeRoleOutcome.GetError().GetMessage() << std::endl;

                    DeleteCreatedEntities(client, role, user, policy);
                    return false;
                }
                std::this_thread::sleep_for(std::chrono::seconds(1));
            }
            else {
                std::cout << "Successfully assumed the role after " << count
                          << " seconds." << std::endl;
                break;
            }
            count++;
        }

        credentials = assumeRoleOutcome.GetResult().GetCredentials();
    }


    // 5. List objects in the bucket (This should fail).
    {
        Aws::S3::S3Client s3Client(
                Aws::Auth::AWSCredentials(credentials.GetAccessKeyId(),
                                          credentials.GetSecretAccessKey(),
                                          credentials.GetSessionToken()),
                Aws::MakeShared<Aws::S3::S3EndpointProvider>(ALLOCATION_TAG),
                clientConfig);
        Aws::S3::Model::ListBucketsOutcome listBucketsOutcome = s3Client.ListBuckets();
        if (!listBucketsOutcome.IsSuccess()) {
            if (listBucketsOutcome.GetError().GetErrorType() !=
                Aws::S3::S3Errors::ACCESS_DENIED) {
                std::cerr << "Could not lists buckets. " <<
                          listBucketsOutcome.GetError().GetMessage() << std::endl;
            }
            else {
                std::cout
                        << "Access to list buckets denied because privileges have not been applied."
                        << std::endl;
            }
        }
        else {
            std::cerr
                    << "Successfully retrieved bucket lists when this should not happen."
                    << std::endl;
        }
    }

    // 6. Attach the policy to the role.
    {
        Aws::IAM::Model::AttachRolePolicyRequest request;
        request.SetRoleName(role.GetRoleName());
        request.WithPolicyArn(policy.GetArn());

        Aws::IAM::Model::AttachRolePolicyOutcome outcome = client.AttachRolePolicy(
                request);
        if (!outcome.IsSuccess()) {
            std::cerr << "Error creating policy. " <<
                      outcome.GetError().GetMessage() << std::endl;

            DeleteCreatedEntities(client, role, user, policy);
            return false;
        }
        else {
            std::cout << "Successfully attached the policy with name, "
                      << policy.GetPolicyName() <<
                      ", to the role, " << role.GetRoleName() << "." << std::endl;
        }
    }

    int count = 0;
    // 7. List objects in the bucket (this should succeed).
    // Repeatedly call ListBuckets, because there is often a delay
    // before the policy with ListBucket permissions has been applied to the role.
    // Repeat at most LIST_BUCKETS_WAIT_SEC times when access is denied.
    while (true) {
        Aws::S3::S3Client s3Client(
                Aws::Auth::AWSCredentials(credentials.GetAccessKeyId(),
                                          credentials.GetSecretAccessKey(),
                                          credentials.GetSessionToken()),
                Aws::MakeShared<Aws::S3::S3EndpointProvider>(ALLOCATION_TAG),
                clientConfig);
        Aws::S3::Model::ListBucketsOutcome listBucketsOutcome = s3Client.ListBuckets();
        if (!listBucketsOutcome.IsSuccess()) {
            if ((count > LIST_BUCKETS_WAIT_SEC) ||
                listBucketsOutcome.GetError().GetErrorType() !=
                Aws::S3::S3Errors::ACCESS_DENIED) {
                std::cerr << "Could not lists buckets after " << LIST_BUCKETS_WAIT_SEC << " seconds. " <<
                          listBucketsOutcome.GetError().GetMessage() << std::endl;
                DeleteCreatedEntities(client, role, user, policy);
                return false;
            }

            std::this_thread::sleep_for(std::chrono::seconds(1));
        }
        else {

            std::cout << "Successfully retrieved bucket lists after " << count
                      << " seconds." << std::endl;
            break;
        }
        count++;
    }

    // 8. Delete all the created resources.
    return DeleteCreatedEntities(client, role, user, policy);
}

bool AwsDoc::IAM::DeleteCreatedEntities(const Aws::IAM::IAMClient &client,
                                        const Aws::IAM::Model::Role &role,
                                        const Aws::IAM::Model::User &user,
                                        const Aws::IAM::Model::Policy &policy) {
    bool result = true;
    if (policy.ArnHasBeenSet()) {
        // Detach the policy from the role.
        {
            Aws::IAM::Model::DetachRolePolicyRequest request;
            request.SetPolicyArn(policy.GetArn());
            request.SetRoleName(role.GetRoleName());

            Aws::IAM::Model::DetachRolePolicyOutcome outcome = client.DetachRolePolicy(
                    request);
            if (!outcome.IsSuccess()) {
                std::cerr << "Error Detaching policy from roles. " <<
                          outcome.GetError().GetMessage() << std::endl;
                result = false;
            }
            else {
                std::cout << "Successfully detached the policy with arn "
                          << policy.GetArn()
                          << " from role " << role.GetRoleName() << "." << std::endl;
            }
        }

        // Delete the policy.
        {
            Aws::IAM::Model::DeletePolicyRequest request;
            request.WithPolicyArn(policy.GetArn());

            Aws::IAM::Model::DeletePolicyOutcome outcome = client.DeletePolicy(request);
            if (!outcome.IsSuccess()) {
                std::cerr << "Error deleting policy. " <<
                          outcome.GetError().GetMessage() << std::endl;
                result = false;
            }
            else {
                std::cout << "Successfully deleted the policy with arn "
                          << policy.GetArn() << std::endl;
            }
        }

    }

    if (role.RoleIdHasBeenSet()) {
        // Delete the role.
        Aws::IAM::Model::DeleteRoleRequest request;
        request.SetRoleName(role.GetRoleName());

        Aws::IAM::Model::DeleteRoleOutcome outcome = client.DeleteRole(request);
        if (!outcome.IsSuccess()) {
            std::cerr << "Error deleting role. " <<
                      outcome.GetError().GetMessage() << std::endl;
            result = false;
        }
        else {
            std::cout << "Successfully deleted the role with name "
                      << role.GetRoleName() << std::endl;
        }
    }

    if (user.ArnHasBeenSet()) {
        // Delete the user.
        Aws::IAM::Model::DeleteUserRequest request;
        request.WithUserName(user.GetUserName());

        Aws::IAM::Model::DeleteUserOutcome outcome = client.DeleteUser(request);
        if (!outcome.IsSuccess()) {
            std::cerr << "Error deleting user. " <<
                      outcome.GetError().GetMessage() << std::endl;
            result = false;
        }
        else {
            std::cout << "Successfully deleted the user with name "
                      << user.GetUserName() << std::endl;
        }
    }

    return result;
}
```
+ Para obter detalhes da API, consulte os tópicos a seguir na *Referência da API AWS SDK para C\$1\$1*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/SdkForCpp/iam-2010-05-08/PutUserPolicy)

------
#### [ Go ]

**SDK para Go V2**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/gov2/iam#code-examples). 
Execute um cenário interativo em um prompt de comando.  

```
import (
	"context"
	"errors"
	"fmt"
	"log"
	"math/rand"
	"strings"
	"time"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/credentials"
	"github.com/aws/aws-sdk-go-v2/service/iam"
	"github.com/aws/aws-sdk-go-v2/service/iam/types"
	"github.com/aws/aws-sdk-go-v2/service/s3"
	"github.com/aws/aws-sdk-go-v2/service/sts"
	"github.com/aws/smithy-go"
	"github.com/awsdocs/aws-doc-sdk-examples/gov2/demotools"
	"github.com/awsdocs/aws-doc-sdk-examples/gov2/iam/actions"
)

// AssumeRoleScenario shows you how to use the AWS Identity and Access Management (IAM)
// service to perform the following actions:
//
//  1. Create a user who has no permissions.
//  2. Create a role that grants permission to list Amazon Simple Storage Service
//     (Amazon S3) buckets for the account.
//  3. Add a policy to let the user assume the role.
//  4. Try and fail to list buckets without permissions.
//  5. Assume the role and list S3 buckets using temporary credentials.
//  6. Delete the policy, role, and user.
type AssumeRoleScenario struct {
	sdkConfig      aws.Config
	accountWrapper actions.AccountWrapper
	policyWrapper  actions.PolicyWrapper
	roleWrapper    actions.RoleWrapper
	userWrapper    actions.UserWrapper
	questioner     demotools.IQuestioner
	helper         IScenarioHelper
	isTestRun      bool
}

// NewAssumeRoleScenario constructs an AssumeRoleScenario instance from a configuration.
// It uses the specified config to get an IAM client and create wrappers for the actions
// used in the scenario.
func NewAssumeRoleScenario(sdkConfig aws.Config, questioner demotools.IQuestioner,
	helper IScenarioHelper) AssumeRoleScenario {
	iamClient := iam.NewFromConfig(sdkConfig)
	return AssumeRoleScenario{
		sdkConfig:      sdkConfig,
		accountWrapper: actions.AccountWrapper{IamClient: iamClient},
		policyWrapper:  actions.PolicyWrapper{IamClient: iamClient},
		roleWrapper:    actions.RoleWrapper{IamClient: iamClient},
		userWrapper:    actions.UserWrapper{IamClient: iamClient},
		questioner:     questioner,
		helper:         helper,
	}
}

// addTestOptions appends the API options specified in the original configuration to
// another configuration. This is used to attach the middleware stubber to clients
// that are constructed during the scenario, which is needed for unit testing.
func (scenario AssumeRoleScenario) addTestOptions(scenarioConfig *aws.Config) {
	if scenario.isTestRun {
		scenarioConfig.APIOptions = append(scenarioConfig.APIOptions, scenario.sdkConfig.APIOptions...)
	}
}

// Run runs the interactive scenario.
func (scenario AssumeRoleScenario) Run(ctx context.Context) {
	defer func() {
		if r := recover(); r != nil {
			log.Printf("Something went wrong with the demo.\n")
			log.Println(r)
		}
	}()

	log.Println(strings.Repeat("-", 88))
	log.Println("Welcome to the AWS Identity and Access Management (IAM) assume role demo.")
	log.Println(strings.Repeat("-", 88))

	user := scenario.CreateUser(ctx)
	accessKey := scenario.CreateAccessKey(ctx, user)
	role := scenario.CreateRoleAndPolicies(ctx, user)
	noPermsConfig := scenario.ListBucketsWithoutPermissions(ctx, accessKey)
	scenario.ListBucketsWithAssumedRole(ctx, noPermsConfig, role)
	scenario.Cleanup(ctx, user, role)

	log.Println(strings.Repeat("-", 88))
	log.Println("Thanks for watching!")
	log.Println(strings.Repeat("-", 88))
}

// CreateUser creates a new IAM user. This user has no permissions.
func (scenario AssumeRoleScenario) CreateUser(ctx context.Context) *types.User {
	log.Println("Let's create an example user with no permissions.")
	userName := scenario.questioner.Ask("Enter a name for the example user:", demotools.NotEmpty{})
	user, err := scenario.userWrapper.GetUser(ctx, userName)
	if err != nil {
		panic(err)
	}
	if user == nil {
		user, err = scenario.userWrapper.CreateUser(ctx, userName)
		if err != nil {
			panic(err)
		}
		log.Printf("Created user %v.\n", *user.UserName)
	} else {
		log.Printf("User %v already exists.\n", *user.UserName)
	}
	log.Println(strings.Repeat("-", 88))
	return user
}

// CreateAccessKey creates an access key for the user.
func (scenario AssumeRoleScenario) CreateAccessKey(ctx context.Context, user *types.User) *types.AccessKey {
	accessKey, err := scenario.userWrapper.CreateAccessKeyPair(ctx, *user.UserName)
	if err != nil {
		panic(err)
	}
	log.Printf("Created access key %v for your user.", *accessKey.AccessKeyId)
	log.Println("Waiting a few seconds for your user to be ready...")
	scenario.helper.Pause(10)
	log.Println(strings.Repeat("-", 88))
	return accessKey
}

// CreateRoleAndPolicies creates a policy that grants permission to list S3 buckets for
// the current account and attaches the policy to a newly created role. It also adds an
// inline policy to the specified user that grants the user permission to assume the role.
func (scenario AssumeRoleScenario) CreateRoleAndPolicies(ctx context.Context, user *types.User) *types.Role {
	log.Println("Let's create a role and policy that grant permission to list S3 buckets.")
	scenario.questioner.Ask("Press Enter when you're ready.")
	listBucketsRole, err := scenario.roleWrapper.CreateRole(ctx, scenario.helper.GetName(), *user.Arn)
	if err != nil {
		panic(err)
	}
	log.Printf("Created role %v.\n", *listBucketsRole.RoleName)
	listBucketsPolicy, err := scenario.policyWrapper.CreatePolicy(
		ctx, scenario.helper.GetName(), []string{"s3:ListAllMyBuckets"}, "arn:aws:s3:::*")
	if err != nil {
		panic(err)
	}
	log.Printf("Created policy %v.\n", *listBucketsPolicy.PolicyName)
	err = scenario.roleWrapper.AttachRolePolicy(ctx, *listBucketsPolicy.Arn, *listBucketsRole.RoleName)
	if err != nil {
		panic(err)
	}
	log.Printf("Attached policy %v to role %v.\n", *listBucketsPolicy.PolicyName,
		*listBucketsRole.RoleName)
	err = scenario.userWrapper.CreateUserPolicy(ctx, *user.UserName, scenario.helper.GetName(),
		[]string{"sts:AssumeRole"}, *listBucketsRole.Arn)
	if err != nil {
		panic(err)
	}
	log.Printf("Created an inline policy for user %v that lets the user assume the role.\n",
		*user.UserName)
	log.Println("Let's give AWS a few seconds to propagate these new resources and connections...")
	scenario.helper.Pause(10)
	log.Println(strings.Repeat("-", 88))
	return listBucketsRole
}

// ListBucketsWithoutPermissions creates an Amazon S3 client from the user's access key
// credentials and tries to list buckets for the account. Because the user does not have
// permission to perform this action, the action fails.
func (scenario AssumeRoleScenario) ListBucketsWithoutPermissions(ctx context.Context, accessKey *types.AccessKey) *aws.Config {
	log.Println("Let's try to list buckets without permissions. This should return an AccessDenied error.")
	scenario.questioner.Ask("Press Enter when you're ready.")
	noPermsConfig, err := config.LoadDefaultConfig(ctx,
		config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(
			*accessKey.AccessKeyId, *accessKey.SecretAccessKey, ""),
		))
	if err != nil {
		panic(err)
	}

	// Add test options if this is a test run. This is needed only for testing purposes.
	scenario.addTestOptions(&noPermsConfig)

	s3Client := s3.NewFromConfig(noPermsConfig)
	_, err = s3Client.ListBuckets(ctx, &s3.ListBucketsInput{})
	if err != nil {
		// The SDK for Go does not model the AccessDenied error, so check ErrorCode directly.
		var ae smithy.APIError
		if errors.As(err, &ae) {
			switch ae.ErrorCode() {
			case "AccessDenied":
				log.Println("Got AccessDenied error, which is the expected result because\n" +
					"the ListBuckets call was made without permissions.")
			default:
				log.Println("Expected AccessDenied, got something else.")
				panic(err)
			}
		}
	} else {
		log.Println("Expected AccessDenied error when calling ListBuckets without permissions,\n" +
			"but the call succeeded. Continuing the example anyway...")
	}
	log.Println(strings.Repeat("-", 88))
	return &noPermsConfig
}

// ListBucketsWithAssumedRole performs the following actions:
//
//  1. Creates an AWS Security Token Service (AWS STS) client from the config created from
//     the user's access key credentials.
//  2. Gets temporary credentials by assuming the role that grants permission to list the
//     buckets.
//  3. Creates an Amazon S3 client from the temporary credentials.
//  4. Lists buckets for the account. Because the temporary credentials are generated by
//     assuming the role that grants permission, the action succeeds.
func (scenario AssumeRoleScenario) ListBucketsWithAssumedRole(ctx context.Context, noPermsConfig *aws.Config, role *types.Role) {
	log.Println("Let's assume the role that grants permission to list buckets and try again.")
	scenario.questioner.Ask("Press Enter when you're ready.")
	stsClient := sts.NewFromConfig(*noPermsConfig)
	tempCredentials, err := stsClient.AssumeRole(ctx, &sts.AssumeRoleInput{
		RoleArn:         role.Arn,
		RoleSessionName: aws.String("AssumeRoleExampleSession"),
		DurationSeconds: aws.Int32(900),
	})
	if err != nil {
		log.Printf("Couldn't assume role %v.\n", *role.RoleName)
		panic(err)
	}
	log.Printf("Assumed role %v, got temporary credentials.\n", *role.RoleName)
	assumeRoleConfig, err := config.LoadDefaultConfig(ctx,
		config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(
			*tempCredentials.Credentials.AccessKeyId,
			*tempCredentials.Credentials.SecretAccessKey,
			*tempCredentials.Credentials.SessionToken),
		),
	)
	if err != nil {
		panic(err)
	}

	// Add test options if this is a test run. This is needed only for testing purposes.
	scenario.addTestOptions(&assumeRoleConfig)

	s3Client := s3.NewFromConfig(assumeRoleConfig)
	result, err := s3Client.ListBuckets(ctx, &s3.ListBucketsInput{})
	if err != nil {
		log.Println("Couldn't list buckets with assumed role credentials.")
		panic(err)
	}
	log.Println("Successfully called ListBuckets with assumed role credentials, \n" +
		"here are some of them:")
	for i := 0; i < len(result.Buckets) && i < 5; i++ {
		log.Printf("\t%v\n", *result.Buckets[i].Name)
	}
	log.Println(strings.Repeat("-", 88))
}

// Cleanup deletes all resources created for the scenario.
func (scenario AssumeRoleScenario) Cleanup(ctx context.Context, user *types.User, role *types.Role) {
	if scenario.questioner.AskBool(
		"Do you want to delete the resources created for this example? (y/n)", "y",
	) {
		policies, err := scenario.roleWrapper.ListAttachedRolePolicies(ctx, *role.RoleName)
		if err != nil {
			panic(err)
		}
		for _, policy := range policies {
			err = scenario.roleWrapper.DetachRolePolicy(ctx, *role.RoleName, *policy.PolicyArn)
			if err != nil {
				panic(err)
			}
			err = scenario.policyWrapper.DeletePolicy(ctx, *policy.PolicyArn)
			if err != nil {
				panic(err)
			}
			log.Printf("Detached policy %v from role %v and deleted the policy.\n",
				*policy.PolicyName, *role.RoleName)
		}
		err = scenario.roleWrapper.DeleteRole(ctx, *role.RoleName)
		if err != nil {
			panic(err)
		}
		log.Printf("Deleted role %v.\n", *role.RoleName)

		userPols, err := scenario.userWrapper.ListUserPolicies(ctx, *user.UserName)
		if err != nil {
			panic(err)
		}
		for _, userPol := range userPols {
			err = scenario.userWrapper.DeleteUserPolicy(ctx, *user.UserName, userPol)
			if err != nil {
				panic(err)
			}
			log.Printf("Deleted policy %v from user %v.\n", userPol, *user.UserName)
		}
		keys, err := scenario.userWrapper.ListAccessKeys(ctx, *user.UserName)
		if err != nil {
			panic(err)
		}
		for _, key := range keys {
			err = scenario.userWrapper.DeleteAccessKey(ctx, *user.UserName, *key.AccessKeyId)
			if err != nil {
				panic(err)
			}
			log.Printf("Deleted access key %v from user %v.\n", *key.AccessKeyId, *user.UserName)
		}
		err = scenario.userWrapper.DeleteUser(ctx, *user.UserName)
		if err != nil {
			panic(err)
		}
		log.Printf("Deleted user %v.\n", *user.UserName)
		log.Println(strings.Repeat("-", 88))
	}

}

// IScenarioHelper abstracts input and wait functions from a scenario so that they
// can be mocked for unit testing.
type IScenarioHelper interface {
	GetName() string
	Pause(secs int)
}

const rMax = 100000

type ScenarioHelper struct {
	Prefix string
	Random *rand.Rand
}

// GetName returns a unique name formed of a prefix and a random number.
func (helper *ScenarioHelper) GetName() string {
	return fmt.Sprintf("%v%v", helper.Prefix, helper.Random.Intn(rMax))
}

// Pause waits for the specified number of seconds.
func (helper ScenarioHelper) Pause(secs int) {
	time.Sleep(time.Duration(secs) * time.Second)
}
```
Defina um struct que encapsule as ações de conta.  

```
import (
	"context"
	"log"

	"github.com/aws/aws-sdk-go-v2/service/iam"
	"github.com/aws/aws-sdk-go-v2/service/iam/types"
)

// AccountWrapper encapsulates AWS Identity and Access Management (IAM) account actions
// used in the examples.
// It contains an IAM service client that is used to perform account actions.
type AccountWrapper struct {
	IamClient *iam.Client
}



// GetAccountPasswordPolicy gets the account password policy for the current account.
// If no policy has been set, a NoSuchEntityException is error is returned.
func (wrapper AccountWrapper) GetAccountPasswordPolicy(ctx context.Context) (*types.PasswordPolicy, error) {
	var pwPolicy *types.PasswordPolicy
	result, err := wrapper.IamClient.GetAccountPasswordPolicy(ctx,
		&iam.GetAccountPasswordPolicyInput{})
	if err != nil {
		log.Printf("Couldn't get account password policy. Here's why: %v\n", err)
	} else {
		pwPolicy = result.PasswordPolicy
	}
	return pwPolicy, err
}



// ListSAMLProviders gets the SAML providers for the account.
func (wrapper AccountWrapper) ListSAMLProviders(ctx context.Context) ([]types.SAMLProviderListEntry, error) {
	var providers []types.SAMLProviderListEntry
	result, err := wrapper.IamClient.ListSAMLProviders(ctx, &iam.ListSAMLProvidersInput{})
	if err != nil {
		log.Printf("Couldn't list SAML providers. Here's why: %v\n", err)
	} else {
		providers = result.SAMLProviderList
	}
	return providers, err
}
```
Defina um struct que encapsule as ações de política.  

```
import (
	"context"
	"encoding/json"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/service/iam"
	"github.com/aws/aws-sdk-go-v2/service/iam/types"
)

// PolicyWrapper encapsulates AWS Identity and Access Management (IAM) policy actions
// used in the examples.
// It contains an IAM service client that is used to perform policy actions.
type PolicyWrapper struct {
	IamClient *iam.Client
}



// ListPolicies gets up to maxPolicies policies.
func (wrapper PolicyWrapper) ListPolicies(ctx context.Context, maxPolicies int32) ([]types.Policy, error) {
	var policies []types.Policy
	result, err := wrapper.IamClient.ListPolicies(ctx, &iam.ListPoliciesInput{
		MaxItems: aws.Int32(maxPolicies),
	})
	if err != nil {
		log.Printf("Couldn't list policies. Here's why: %v\n", err)
	} else {
		policies = result.Policies
	}
	return policies, err
}



// PolicyDocument defines a policy document as a Go struct that can be serialized
// to JSON.
type PolicyDocument struct {
	Version   string
	Statement []PolicyStatement
}

// PolicyStatement defines a statement in a policy document.
type PolicyStatement struct {
	Effect    string
	Action    []string
	Principal map[string]string `json:",omitempty"`
	Resource  *string           `json:",omitempty"`
}

// CreatePolicy creates a policy that grants a list of actions to the specified resource.
// PolicyDocument shows how to work with a policy document as a data structure and
// serialize it to JSON by using Go's JSON marshaler.
func (wrapper PolicyWrapper) CreatePolicy(ctx context.Context, policyName string, actions []string,
	resourceArn string) (*types.Policy, error) {
	var policy *types.Policy
	policyDoc := PolicyDocument{
		Version: "2012-10-17",
		Statement: []PolicyStatement{{
			Effect:   "Allow",
			Action:   actions,
			Resource: aws.String(resourceArn),
		}},
	}
	policyBytes, err := json.Marshal(policyDoc)
	if err != nil {
		log.Printf("Couldn't create policy document for %v. Here's why: %v\n", resourceArn, err)
		return nil, err
	}
	result, err := wrapper.IamClient.CreatePolicy(ctx, &iam.CreatePolicyInput{
		PolicyDocument: aws.String(string(policyBytes)),
		PolicyName:     aws.String(policyName),
	})
	if err != nil {
		log.Printf("Couldn't create policy %v. Here's why: %v\n", policyName, err)
	} else {
		policy = result.Policy
	}
	return policy, err
}



// GetPolicy gets data about a policy.
func (wrapper PolicyWrapper) GetPolicy(ctx context.Context, policyArn string) (*types.Policy, error) {
	var policy *types.Policy
	result, err := wrapper.IamClient.GetPolicy(ctx, &iam.GetPolicyInput{
		PolicyArn: aws.String(policyArn),
	})
	if err != nil {
		log.Printf("Couldn't get policy %v. Here's why: %v\n", policyArn, err)
	} else {
		policy = result.Policy
	}
	return policy, err
}



// DeletePolicy deletes a policy.
func (wrapper PolicyWrapper) DeletePolicy(ctx context.Context, policyArn string) error {
	_, err := wrapper.IamClient.DeletePolicy(ctx, &iam.DeletePolicyInput{
		PolicyArn: aws.String(policyArn),
	})
	if err != nil {
		log.Printf("Couldn't delete policy %v. Here's why: %v\n", policyArn, err)
	}
	return err
}
```
Defina um struct que encapsule as ações de perfil.  

```
import (
	"context"
	"encoding/json"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/service/iam"
	"github.com/aws/aws-sdk-go-v2/service/iam/types"
)

// RoleWrapper encapsulates AWS Identity and Access Management (IAM) role actions
// used in the examples.
// It contains an IAM service client that is used to perform role actions.
type RoleWrapper struct {
	IamClient *iam.Client
}



// ListRoles gets up to maxRoles roles.
func (wrapper RoleWrapper) ListRoles(ctx context.Context, maxRoles int32) ([]types.Role, error) {
	var roles []types.Role
	result, err := wrapper.IamClient.ListRoles(ctx,
		&iam.ListRolesInput{MaxItems: aws.Int32(maxRoles)},
	)
	if err != nil {
		log.Printf("Couldn't list roles. Here's why: %v\n", err)
	} else {
		roles = result.Roles
	}
	return roles, err
}



// CreateRole creates a role that trusts a specified user. The trusted user can assume
// the role to acquire its permissions.
// PolicyDocument shows how to work with a policy document as a data structure and
// serialize it to JSON by using Go's JSON marshaler.
func (wrapper RoleWrapper) CreateRole(ctx context.Context, roleName string, trustedUserArn string) (*types.Role, error) {
	var role *types.Role
	trustPolicy := PolicyDocument{
		Version: "2012-10-17",
		Statement: []PolicyStatement{{
			Effect:    "Allow",
			Principal: map[string]string{"AWS": trustedUserArn},
			Action:    []string{"sts:AssumeRole"},
		}},
	}
	policyBytes, err := json.Marshal(trustPolicy)
	if err != nil {
		log.Printf("Couldn't create trust policy for %v. Here's why: %v\n", trustedUserArn, err)
		return nil, err
	}
	result, err := wrapper.IamClient.CreateRole(ctx, &iam.CreateRoleInput{
		AssumeRolePolicyDocument: aws.String(string(policyBytes)),
		RoleName:                 aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't create role %v. Here's why: %v\n", roleName, err)
	} else {
		role = result.Role
	}
	return role, err
}



// GetRole gets data about a role.
func (wrapper RoleWrapper) GetRole(ctx context.Context, roleName string) (*types.Role, error) {
	var role *types.Role
	result, err := wrapper.IamClient.GetRole(ctx,
		&iam.GetRoleInput{RoleName: aws.String(roleName)})
	if err != nil {
		log.Printf("Couldn't get role %v. Here's why: %v\n", roleName, err)
	} else {
		role = result.Role
	}
	return role, err
}



// CreateServiceLinkedRole creates a service-linked role that is owned by the specified service.
func (wrapper RoleWrapper) CreateServiceLinkedRole(ctx context.Context, serviceName string, description string) (
	*types.Role, error) {
	var role *types.Role
	result, err := wrapper.IamClient.CreateServiceLinkedRole(ctx, &iam.CreateServiceLinkedRoleInput{
		AWSServiceName: aws.String(serviceName),
		Description:    aws.String(description),
	})
	if err != nil {
		log.Printf("Couldn't create service-linked role %v. Here's why: %v\n", serviceName, err)
	} else {
		role = result.Role
	}
	return role, err
}



// DeleteServiceLinkedRole deletes a service-linked role.
func (wrapper RoleWrapper) DeleteServiceLinkedRole(ctx context.Context, roleName string) error {
	_, err := wrapper.IamClient.DeleteServiceLinkedRole(ctx, &iam.DeleteServiceLinkedRoleInput{
		RoleName: aws.String(roleName)},
	)
	if err != nil {
		log.Printf("Couldn't delete service-linked role %v. Here's why: %v\n", roleName, err)
	}
	return err
}



// AttachRolePolicy attaches a policy to a role.
func (wrapper RoleWrapper) AttachRolePolicy(ctx context.Context, policyArn string, roleName string) error {
	_, err := wrapper.IamClient.AttachRolePolicy(ctx, &iam.AttachRolePolicyInput{
		PolicyArn: aws.String(policyArn),
		RoleName:  aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't attach policy %v to role %v. Here's why: %v\n", policyArn, roleName, err)
	}
	return err
}



// ListAttachedRolePolicies lists the policies that are attached to the specified role.
func (wrapper RoleWrapper) ListAttachedRolePolicies(ctx context.Context, roleName string) ([]types.AttachedPolicy, error) {
	var policies []types.AttachedPolicy
	result, err := wrapper.IamClient.ListAttachedRolePolicies(ctx, &iam.ListAttachedRolePoliciesInput{
		RoleName: aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't list attached policies for role %v. Here's why: %v\n", roleName, err)
	} else {
		policies = result.AttachedPolicies
	}
	return policies, err
}



// DetachRolePolicy detaches a policy from a role.
func (wrapper RoleWrapper) DetachRolePolicy(ctx context.Context, roleName string, policyArn string) error {
	_, err := wrapper.IamClient.DetachRolePolicy(ctx, &iam.DetachRolePolicyInput{
		PolicyArn: aws.String(policyArn),
		RoleName:  aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't detach policy from role %v. Here's why: %v\n", roleName, err)
	}
	return err
}



// ListRolePolicies lists the inline policies for a role.
func (wrapper RoleWrapper) ListRolePolicies(ctx context.Context, roleName string) ([]string, error) {
	var policies []string
	result, err := wrapper.IamClient.ListRolePolicies(ctx, &iam.ListRolePoliciesInput{
		RoleName: aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't list policies for role %v. Here's why: %v\n", roleName, err)
	} else {
		policies = result.PolicyNames
	}
	return policies, err
}



// DeleteRole deletes a role. All attached policies must be detached before a
// role can be deleted.
func (wrapper RoleWrapper) DeleteRole(ctx context.Context, roleName string) error {
	_, err := wrapper.IamClient.DeleteRole(ctx, &iam.DeleteRoleInput{
		RoleName: aws.String(roleName),
	})
	if err != nil {
		log.Printf("Couldn't delete role %v. Here's why: %v\n", roleName, err)
	}
	return err
}
```
Defina um struct que encapsule as ações de usuário.  

```
import (
	"context"
	"encoding/json"
	"errors"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/service/iam"
	"github.com/aws/aws-sdk-go-v2/service/iam/types"
	"github.com/aws/smithy-go"
)

// UserWrapper encapsulates user actions used in the examples.
// It contains an IAM service client that is used to perform user actions.
type UserWrapper struct {
	IamClient *iam.Client
}



// ListUsers gets up to maxUsers number of users.
func (wrapper UserWrapper) ListUsers(ctx context.Context, maxUsers int32) ([]types.User, error) {
	var users []types.User
	result, err := wrapper.IamClient.ListUsers(ctx, &iam.ListUsersInput{
		MaxItems: aws.Int32(maxUsers),
	})
	if err != nil {
		log.Printf("Couldn't list users. Here's why: %v\n", err)
	} else {
		users = result.Users
	}
	return users, err
}



// GetUser gets data about a user.
func (wrapper UserWrapper) GetUser(ctx context.Context, userName string) (*types.User, error) {
	var user *types.User
	result, err := wrapper.IamClient.GetUser(ctx, &iam.GetUserInput{
		UserName: aws.String(userName),
	})
	if err != nil {
		var apiError smithy.APIError
		if errors.As(err, &apiError) {
			switch apiError.(type) {
			case *types.NoSuchEntityException:
				log.Printf("User %v does not exist.\n", userName)
				err = nil
			default:
				log.Printf("Couldn't get user %v. Here's why: %v\n", userName, err)
			}
		}
	} else {
		user = result.User
	}
	return user, err
}



// CreateUser creates a new user with the specified name.
func (wrapper UserWrapper) CreateUser(ctx context.Context, userName string) (*types.User, error) {
	var user *types.User
	result, err := wrapper.IamClient.CreateUser(ctx, &iam.CreateUserInput{
		UserName: aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't create user %v. Here's why: %v\n", userName, err)
	} else {
		user = result.User
	}
	return user, err
}



// CreateUserPolicy adds an inline policy to a user. This example creates a policy that
// grants a list of actions on a specified role.
// PolicyDocument shows how to work with a policy document as a data structure and
// serialize it to JSON by using Go's JSON marshaler.
func (wrapper UserWrapper) CreateUserPolicy(ctx context.Context, userName string, policyName string, actions []string,
	roleArn string) error {
	policyDoc := PolicyDocument{
		Version: "2012-10-17",
		Statement: []PolicyStatement{{
			Effect:   "Allow",
			Action:   actions,
			Resource: aws.String(roleArn),
		}},
	}
	policyBytes, err := json.Marshal(policyDoc)
	if err != nil {
		log.Printf("Couldn't create policy document for %v. Here's why: %v\n", roleArn, err)
		return err
	}
	_, err = wrapper.IamClient.PutUserPolicy(ctx, &iam.PutUserPolicyInput{
		PolicyDocument: aws.String(string(policyBytes)),
		PolicyName:     aws.String(policyName),
		UserName:       aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't create policy for user %v. Here's why: %v\n", userName, err)
	}
	return err
}



// ListUserPolicies lists the inline policies for the specified user.
func (wrapper UserWrapper) ListUserPolicies(ctx context.Context, userName string) ([]string, error) {
	var policies []string
	result, err := wrapper.IamClient.ListUserPolicies(ctx, &iam.ListUserPoliciesInput{
		UserName: aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't list policies for user %v. Here's why: %v\n", userName, err)
	} else {
		policies = result.PolicyNames
	}
	return policies, err
}



// DeleteUserPolicy deletes an inline policy from a user.
func (wrapper UserWrapper) DeleteUserPolicy(ctx context.Context, userName string, policyName string) error {
	_, err := wrapper.IamClient.DeleteUserPolicy(ctx, &iam.DeleteUserPolicyInput{
		PolicyName: aws.String(policyName),
		UserName:   aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't delete policy from user %v. Here's why: %v\n", userName, err)
	}
	return err
}



// DeleteUser deletes a user.
func (wrapper UserWrapper) DeleteUser(ctx context.Context, userName string) error {
	_, err := wrapper.IamClient.DeleteUser(ctx, &iam.DeleteUserInput{
		UserName: aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't delete user %v. Here's why: %v\n", userName, err)
	}
	return err
}



// CreateAccessKeyPair creates an access key for a user. The returned access key contains
// the ID and secret credentials needed to use the key.
func (wrapper UserWrapper) CreateAccessKeyPair(ctx context.Context, userName string) (*types.AccessKey, error) {
	var key *types.AccessKey
	result, err := wrapper.IamClient.CreateAccessKey(ctx, &iam.CreateAccessKeyInput{
		UserName: aws.String(userName)})
	if err != nil {
		log.Printf("Couldn't create access key pair for user %v. Here's why: %v\n", userName, err)
	} else {
		key = result.AccessKey
	}
	return key, err
}



// DeleteAccessKey deletes an access key from a user.
func (wrapper UserWrapper) DeleteAccessKey(ctx context.Context, userName string, keyId string) error {
	_, err := wrapper.IamClient.DeleteAccessKey(ctx, &iam.DeleteAccessKeyInput{
		AccessKeyId: aws.String(keyId),
		UserName:    aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't delete access key %v. Here's why: %v\n", keyId, err)
	}
	return err
}



// ListAccessKeys lists the access keys for the specified user.
func (wrapper UserWrapper) ListAccessKeys(ctx context.Context, userName string) ([]types.AccessKeyMetadata, error) {
	var keys []types.AccessKeyMetadata
	result, err := wrapper.IamClient.ListAccessKeys(ctx, &iam.ListAccessKeysInput{
		UserName: aws.String(userName),
	})
	if err != nil {
		log.Printf("Couldn't list access keys for user %v. Here's why: %v\n", userName, err)
	} else {
		keys = result.AccessKeyMetadata
	}
	return keys, err
}
```
+ Para obter detalhes da API, consulte os tópicos a seguir na *Referência da API AWS SDK para Go*.
  + [AttachRolePolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.AttachRolePolicy)
  + [CreateAccessKey](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.CreateAccessKey)
  + [CreatePolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.CreatePolicy)
  + [CreateRole](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.CreateRole)
  + [CreateUser](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.CreateUser)
  + [DeleteAccessKey](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DeleteAccessKey)
  + [DeletePolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DeletePolicy)
  + [DeleteRole](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DeleteRole)
  + [DeleteUser](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DeleteUser)
  + [DeleteUserPolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DeleteUserPolicy)
  + [DetachRolePolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.DetachRolePolicy)
  + [PutUserPolicy](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/iam#Client.PutUserPolicy)

------
#### [ Java ]

**SDK para Java 2.x**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/iam#code-examples). 
Crie a funções que envolvam ações do usuário do IAM.  

```
/*
  To run this Java V2 code example, set up your development environment, including your credentials.

  For information, see this documentation topic:

  https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html

  This example performs these operations:

  1. Creates a user that has no permissions.
  2. Creates a role and policy that grants Amazon S3 permissions.
  3. Creates a role.
  4. Grants the user permissions.
  5. Gets temporary credentials by assuming the role.  Creates an Amazon S3 Service client object with the temporary credentials.
  6. Deletes the resources.
 */

public class IAMScenario {
    public static final String DASHES = new String(new char[80]).replace("\0", "-");
    public static final String PolicyDocument = "{" +
            "  \"Version\": \"2012-10-17\"," +
            "  \"Statement\": [" +
            "    {" +
            "        \"Effect\": \"Allow\"," +
            "        \"Action\": [" +
            "            \"s3:*\"" +
            "       ]," +
            "       \"Resource\": \"*\"" +
            "    }" +
            "   ]" +
            "}";

    public static String userArn;

    public static void main(String[] args) throws Exception {

        final String usage = """

                Usage:
                    <username> <policyName> <roleName> <roleSessionName> <bucketName>\s

                Where:
                    username - The name of the IAM user to create.\s
                    policyName - The name of the policy to create.\s
                    roleName - The name of the role to create.\s
                    roleSessionName - The name of the session required for the assumeRole operation.\s
                    bucketName - The name of the Amazon S3 bucket from which objects are read.\s
                """;

        if (args.length != 5) {
            System.out.println(usage);
            System.exit(1);
        }

        String userName = args[0];
        String policyName = args[1];
        String roleName = args[2];
        String roleSessionName = args[3];
        String bucketName = args[4];

        Region region = Region.AWS_GLOBAL;
        IamClient iam = IamClient.builder()
                .region(region)
                .build();

        System.out.println(DASHES);
        System.out.println("Welcome to the AWS IAM example scenario.");
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println(" 1. Create the IAM user.");
        User createUser = createIAMUser(iam, userName);

        System.out.println(DASHES);
        userArn = createUser.arn();

        AccessKey myKey = createIAMAccessKey(iam, userName);
        String accessKey = myKey.accessKeyId();
        String secretKey = myKey.secretAccessKey();
        String assumeRolePolicyDocument = "{" +
                "\"Version\": \"2012-10-17\"," +
                "\"Statement\": [{" +
                "\"Effect\": \"Allow\"," +
                "\"Principal\": {" +
                "	\"AWS\": \"" + userArn + "\"" +
                "}," +
                "\"Action\": \"sts:AssumeRole\"" +
                "}]" +
                "}";

        System.out.println(assumeRolePolicyDocument);
        System.out.println(userName + " was successfully created.");
        System.out.println(DASHES);
        System.out.println("2. Creates a policy.");
        String polArn = createIAMPolicy(iam, policyName);
        System.out.println("The policy " + polArn + " was successfully created.");
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println("3. Creates a role.");
        TimeUnit.SECONDS.sleep(30);
        String roleArn = createIAMRole(iam, roleName, assumeRolePolicyDocument);
        System.out.println(roleArn + " was successfully created.");
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println("4. Grants the user permissions.");
        attachIAMRolePolicy(iam, roleName, polArn);
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println("*** Wait for 30 secs so the resource is available");
        TimeUnit.SECONDS.sleep(30);
        System.out.println("5. Gets temporary credentials by assuming the role.");
        System.out.println("Perform an Amazon S3 Service operation using the temporary credentials.");
        assumeRole(roleArn, roleSessionName, bucketName, accessKey, secretKey);
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println("6 Getting ready to delete the AWS resources");
        deleteKey(iam, userName, accessKey);
        deleteRole(iam, roleName, polArn);
        deleteIAMUser(iam, userName);
        System.out.println(DASHES);

        System.out.println(DASHES);
        System.out.println("This IAM Scenario has successfully completed");
        System.out.println(DASHES);
    }

    public static AccessKey createIAMAccessKey(IamClient iam, String user) {
        try {
            CreateAccessKeyRequest request = CreateAccessKeyRequest.builder()
                    .userName(user)
                    .build();

            CreateAccessKeyResponse response = iam.createAccessKey(request);
            return response.accessKey();

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return null;
    }

    public static User createIAMUser(IamClient iam, String username) {
        try {
            // Create an IamWaiter object
            IamWaiter iamWaiter = iam.waiter();
            CreateUserRequest request = CreateUserRequest.builder()
                    .userName(username)
                    .build();

            // Wait until the user is created.
            CreateUserResponse response = iam.createUser(request);
            GetUserRequest userRequest = GetUserRequest.builder()
                    .userName(response.user().userName())
                    .build();

            WaiterResponse<GetUserResponse> waitUntilUserExists = iamWaiter.waitUntilUserExists(userRequest);
            waitUntilUserExists.matched().response().ifPresent(System.out::println);
            return response.user();

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return null;
    }

    public static String createIAMRole(IamClient iam, String rolename, String json) {

        try {
            CreateRoleRequest request = CreateRoleRequest.builder()
                    .roleName(rolename)
                    .assumeRolePolicyDocument(json)
                    .description("Created using the AWS SDK for Java")
                    .build();

            CreateRoleResponse response = iam.createRole(request);
            System.out.println("The ARN of the role is " + response.role().arn());
            return response.role().arn();

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return "";
    }

    public static String createIAMPolicy(IamClient iam, String policyName) {
        try {
            // Create an IamWaiter object.
            IamWaiter iamWaiter = iam.waiter();
            CreatePolicyRequest request = CreatePolicyRequest.builder()
                    .policyName(policyName)
                    .policyDocument(PolicyDocument).build();

            CreatePolicyResponse response = iam.createPolicy(request);
            GetPolicyRequest polRequest = GetPolicyRequest.builder()
                    .policyArn(response.policy().arn())
                    .build();

            WaiterResponse<GetPolicyResponse> waitUntilPolicyExists = iamWaiter.waitUntilPolicyExists(polRequest);
            waitUntilPolicyExists.matched().response().ifPresent(System.out::println);
            return response.policy().arn();

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return "";
    }

    public static void attachIAMRolePolicy(IamClient iam, String roleName, String policyArn) {
        try {
            ListAttachedRolePoliciesRequest request = ListAttachedRolePoliciesRequest.builder()
                    .roleName(roleName)
                    .build();

            ListAttachedRolePoliciesResponse response = iam.listAttachedRolePolicies(request);
            List<AttachedPolicy> attachedPolicies = response.attachedPolicies();
            String polArn;
            for (AttachedPolicy policy : attachedPolicies) {
                polArn = policy.policyArn();
                if (polArn.compareTo(policyArn) == 0) {
                    System.out.println(roleName + " policy is already attached to this role.");
                    return;
                }
            }

            AttachRolePolicyRequest attachRequest = AttachRolePolicyRequest.builder()
                    .roleName(roleName)
                    .policyArn(policyArn)
                    .build();

            iam.attachRolePolicy(attachRequest);
            System.out.println("Successfully attached policy " + policyArn + " to role " + roleName);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }

    // Invoke an Amazon S3 operation using the Assumed Role.
    public static void assumeRole(String roleArn, String roleSessionName, String bucketName, String keyVal,
            String keySecret) {

        // Use the creds of the new IAM user that was created in this code example.
        AwsBasicCredentials credentials = AwsBasicCredentials.create(keyVal, keySecret);
        StsClient stsClient = StsClient.builder()
                .region(Region.US_EAST_1)
                .credentialsProvider(StaticCredentialsProvider.create(credentials))
                .build();

        try {
            AssumeRoleRequest roleRequest = AssumeRoleRequest.builder()
                    .roleArn(roleArn)
                    .roleSessionName(roleSessionName)
                    .build();

            AssumeRoleResponse roleResponse = stsClient.assumeRole(roleRequest);
            Credentials myCreds = roleResponse.credentials();
            String key = myCreds.accessKeyId();
            String secKey = myCreds.secretAccessKey();
            String secToken = myCreds.sessionToken();

            // List all objects in an Amazon S3 bucket using the temp creds retrieved by
            // invoking assumeRole.
            Region region = Region.US_EAST_1;
            S3Client s3 = S3Client.builder()
                    .credentialsProvider(
                            StaticCredentialsProvider.create(AwsSessionCredentials.create(key, secKey, secToken)))
                    .region(region)
                    .build();

            System.out.println("Created a S3Client using temp credentials.");
            System.out.println("Listing objects in " + bucketName);
            ListObjectsRequest listObjects = ListObjectsRequest.builder()
                    .bucket(bucketName)
                    .build();

            ListObjectsResponse res = s3.listObjects(listObjects);
            List<S3Object> objects = res.contents();
            for (S3Object myValue : objects) {
                System.out.println("The name of the key is " + myValue.key());
                System.out.println("The owner is " + myValue.owner());
            }

        } catch (StsException e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }
    }

    public static void deleteRole(IamClient iam, String roleName, String polArn) {

        try {
            // First the policy needs to be detached.
            DetachRolePolicyRequest rolePolicyRequest = DetachRolePolicyRequest.builder()
                    .policyArn(polArn)
                    .roleName(roleName)
                    .build();

            iam.detachRolePolicy(rolePolicyRequest);

            // Delete the policy.
            DeletePolicyRequest request = DeletePolicyRequest.builder()
                    .policyArn(polArn)
                    .build();

            iam.deletePolicy(request);
            System.out.println("*** Successfully deleted " + polArn);

            // Delete the role.
            DeleteRoleRequest roleRequest = DeleteRoleRequest.builder()
                    .roleName(roleName)
                    .build();

            iam.deleteRole(roleRequest);
            System.out.println("*** Successfully deleted " + roleName);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }

    public static void deleteKey(IamClient iam, String username, String accessKey) {
        try {
            DeleteAccessKeyRequest request = DeleteAccessKeyRequest.builder()
                    .accessKeyId(accessKey)
                    .userName(username)
                    .build();

            iam.deleteAccessKey(request);
            System.out.println("Successfully deleted access key " + accessKey +
                    " from user " + username);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }

    public static void deleteIAMUser(IamClient iam, String userName) {
        try {
            DeleteUserRequest request = DeleteUserRequest.builder()
                    .userName(userName)
                    .build();

            iam.deleteUser(request);
            System.out.println("*** Successfully deleted " + userName);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
+ Para obter detalhes da API, consulte os tópicos a seguir na *Referência da API AWS SDK for Java 2.x*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/SdkForJavaV2/iam-2010-05-08/PutUserPolicy)

------
#### [ JavaScript ]

**SDK para JavaScript (v3)**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/iam#code-examples). 
Crie um usuário e um perfil do IAM que conceda permissão para listar os buckets do Amazon S3. O usuário só tem direitos para assumir a função. Após assumir a função, use credenciais temporárias para listar os buckets para a conta.  

```
import {
  CreateUserCommand,
  GetUserCommand,
  CreateAccessKeyCommand,
  CreatePolicyCommand,
  CreateRoleCommand,
  AttachRolePolicyCommand,
  DeleteAccessKeyCommand,
  DeleteUserCommand,
  DeleteRoleCommand,
  DeletePolicyCommand,
  DetachRolePolicyCommand,
  IAMClient,
} from "@aws-sdk/client-iam";
import { ListBucketsCommand, S3Client } from "@aws-sdk/client-s3";
import { AssumeRoleCommand, STSClient } from "@aws-sdk/client-sts";
import { retry } from "@aws-doc-sdk-examples/lib/utils/util-timers.js";
import { ScenarioInput } from "@aws-doc-sdk-examples/lib/scenario/index.js";

// Set the parameters.
const iamClient = new IAMClient({});
const userName = "iam_basic_test_username";
const policyName = "iam_basic_test_policy";
const roleName = "iam_basic_test_role";

/**
 * Create a new IAM user. If the user already exists, give
 * the option to delete and re-create it.
 * @param {string} name
 */
export const createUser = async (name, confirmAll = false) => {
  try {
    const { User } = await iamClient.send(
      new GetUserCommand({ UserName: name }),
    );
    const input = new ScenarioInput(
      "deleteUser",
      "Do you want to delete and remake this user?",
      { type: "confirm" },
    );
    const deleteUser = await input.handle({}, { confirmAll });
    // If the user exists, and you want to delete it, delete the user
    // and then create it again.
    if (deleteUser) {
      await iamClient.send(new DeleteUserCommand({ UserName: User.UserName }));
      await iamClient.send(new CreateUserCommand({ UserName: name }));
    } else {
      console.warn(
        `${name} already exists. The scenario may not work as expected.`,
      );
      return User;
    }
  } catch (caught) {
    // If there is no user by that name, create one.
    if (caught instanceof Error && caught.name === "NoSuchEntityException") {
      const { User } = await iamClient.send(
        new CreateUserCommand({ UserName: name }),
      );
      return User;
    }
    throw caught;
  }
};

export const main = async (confirmAll = false) => {
  // Create a user. The user has no permissions by default.
  const User = await createUser(userName, confirmAll);

  if (!User) {
    throw new Error("User not created");
  }

  // Create an access key. This key is used to authenticate the new user to
  // Amazon Simple Storage Service (Amazon S3) and AWS Security Token Service (AWS STS).
  // It's not best practice to use access keys. For more information, see https://aws.amazon.com/iam/resources/best-practices/.
  const createAccessKeyResponse = await iamClient.send(
    new CreateAccessKeyCommand({ UserName: userName }),
  );

  if (
    !createAccessKeyResponse.AccessKey?.AccessKeyId ||
    !createAccessKeyResponse.AccessKey?.SecretAccessKey
  ) {
    throw new Error("Access key not created");
  }

  const {
    AccessKey: { AccessKeyId, SecretAccessKey },
  } = createAccessKeyResponse;

  let s3Client = new S3Client({
    credentials: {
      accessKeyId: AccessKeyId,
      secretAccessKey: SecretAccessKey,
    },
  });

  // Retry the list buckets operation until it succeeds. InvalidAccessKeyId is
  // thrown while the user and access keys are still stabilizing.
  await retry({ intervalInMs: 1000, maxRetries: 300 }, async () => {
    try {
      return await listBuckets(s3Client);
    } catch (err) {
      if (err instanceof Error && err.name === "InvalidAccessKeyId") {
        throw err;
      }
    }
  });

  // Retry the create role operation until it succeeds. A MalformedPolicyDocument error
  // is thrown while the user and access keys are still stabilizing.
  const { Role } = await retry(
    {
      intervalInMs: 2000,
      maxRetries: 60,
    },
    () =>
      iamClient.send(
        new CreateRoleCommand({
          AssumeRolePolicyDocument: JSON.stringify({
            Version: "2012-10-17",
            Statement: [
              {
                Effect: "Allow",
                Principal: {
                  // Allow the previously created user to assume this role.
                  AWS: User.Arn,
                },
                Action: "sts:AssumeRole",
              },
            ],
          }),
          RoleName: roleName,
        }),
      ),
  );

  if (!Role) {
    throw new Error("Role not created");
  }

  // Create a policy that allows the user to list S3 buckets.
  const { Policy: listBucketPolicy } = await iamClient.send(
    new CreatePolicyCommand({
      PolicyDocument: JSON.stringify({
        Version: "2012-10-17",
        Statement: [
          {
            Effect: "Allow",
            Action: ["s3:ListAllMyBuckets"],
            Resource: "*",
          },
        ],
      }),
      PolicyName: policyName,
    }),
  );

  if (!listBucketPolicy) {
    throw new Error("Policy not created");
  }

  // Attach the policy granting the 's3:ListAllMyBuckets' action to the role.
  await iamClient.send(
    new AttachRolePolicyCommand({
      PolicyArn: listBucketPolicy.Arn,
      RoleName: Role.RoleName,
    }),
  );

  // Assume the role.
  const stsClient = new STSClient({
    credentials: {
      accessKeyId: AccessKeyId,
      secretAccessKey: SecretAccessKey,
    },
  });

  // Retry the assume role operation until it succeeds.
  const { Credentials } = await retry(
    { intervalInMs: 2000, maxRetries: 60 },
    () =>
      stsClient.send(
        new AssumeRoleCommand({
          RoleArn: Role.Arn,
          RoleSessionName: `iamBasicScenarioSession-${Math.floor(
            Math.random() * 1000000,
          )}`,
          DurationSeconds: 900,
        }),
      ),
  );

  if (!Credentials?.AccessKeyId || !Credentials?.SecretAccessKey) {
    throw new Error("Credentials not created");
  }

  s3Client = new S3Client({
    credentials: {
      accessKeyId: Credentials.AccessKeyId,
      secretAccessKey: Credentials.SecretAccessKey,
      sessionToken: Credentials.SessionToken,
    },
  });

  // List the S3 buckets again.
  // Retry the list buckets operation until it succeeds. AccessDenied might
  // be thrown while the role policy is still stabilizing.
  await retry({ intervalInMs: 2000, maxRetries: 120 }, () =>
    listBuckets(s3Client),
  );

  // Clean up.
  await iamClient.send(
    new DetachRolePolicyCommand({
      PolicyArn: listBucketPolicy.Arn,
      RoleName: Role.RoleName,
    }),
  );

  await iamClient.send(
    new DeletePolicyCommand({
      PolicyArn: listBucketPolicy.Arn,
    }),
  );

  await iamClient.send(
    new DeleteRoleCommand({
      RoleName: Role.RoleName,
    }),
  );

  await iamClient.send(
    new DeleteAccessKeyCommand({
      UserName: userName,
      AccessKeyId,
    }),
  );

  await iamClient.send(
    new DeleteUserCommand({
      UserName: userName,
    }),
  );
};

/**
 *
 * @param {S3Client} s3Client
 */
const listBuckets = async (s3Client) => {
  const { Buckets } = await s3Client.send(new ListBucketsCommand({}));

  if (!Buckets) {
    throw new Error("Buckets not listed");
  }

  console.log(Buckets.map((bucket) => bucket.Name).join("\n"));
};
```
+ Para obter detalhes da API, consulte os tópicos a seguir na *Referência da API AWS SDK para JavaScript*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/AttachRolePolicyCommand)
  + [CreateAccessKey](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/CreateAccessKeyCommand)
  + [CreatePolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/CreatePolicyCommand)
  + [CreateRole](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/CreateRoleCommand)
  + [CreateUser](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/CreateUserCommand)
  + [DeleteAccessKey](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DeleteAccessKeyCommand)
  + [DeletePolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DeletePolicyCommand)
  + [DeleteRole](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DeleteRoleCommand)
  + [DeleteUser](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DeleteUserCommand)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DeleteUserPolicyCommand)
  + [DetachRolePolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/DetachRolePolicyCommand)
  + [PutUserPolicy](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iam/command/PutUserPolicyCommand)

------
#### [ Kotlin ]

**SDK para Kotlin**  
 Há mais no GitHub. Encontre o exemplo completo e veja como configurar e executar no [repositório de exemplos de código da AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/kotlin/services/iam#code-examples). 
Crie a funções que envolvam ações do usuário do IAM.  

```
suspend fun main(args: Array<String>) {
    val usage = """
    Usage:
        <username> <policyName> <roleName> <roleSessionName> <fileLocation> <bucketName> 

    Where:
        username - The name of the IAM user to create. 
        policyName - The name of the policy to create. 
        roleName - The name of the role to create. 
        roleSessionName - The name of the session required for the assumeRole operation. 
        fileLocation - The file location to the JSON required to create the role (see Readme). 
        bucketName - The name of the Amazon S3 bucket from which objects are read. 
    """

    if (args.size != 6) {
        println(usage)
        exitProcess(1)
    }

    val userName = args[0]
    val policyName = args[1]
    val roleName = args[2]
    val roleSessionName = args[3]
    val fileLocation = args[4]
    val bucketName = args[5]

    createUser(userName)
    println("$userName was successfully created.")

    val polArn = createPolicy(policyName)
    println("The policy $polArn was successfully created.")

    val roleArn = createRole(roleName, fileLocation)
    println("$roleArn was successfully created.")
    attachRolePolicy(roleName, polArn)

    println("*** Wait for 1 MIN so the resource is available.")
    delay(60000)
    assumeGivenRole(roleArn, roleSessionName, bucketName)

    println("*** Getting ready to delete the AWS resources.")
    deleteRole(roleName, polArn)
    deleteUser(userName)
    println("This IAM Scenario has successfully completed.")
}

suspend fun createUser(usernameVal: String?): String? {
    val request =
        CreateUserRequest {
            userName = usernameVal
        }

    IamClient { region = "AWS_GLOBAL" }.use { iamClient ->
        val response = iamClient.createUser(request)
        return response.user?.userName
    }
}

suspend fun createPolicy(policyNameVal: String?): String {
    val policyDocumentValue = """
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:*"
                ],
                "Resource": "*"
            }
        ]
    }
    """.trimIndent()

    val request =
        CreatePolicyRequest {
            policyName = policyNameVal
            policyDocument = policyDocumentValue
        }

    IamClient.fromEnvironment { region = "AWS_GLOBAL" }.use { iamClient ->
        val response = iamClient.createPolicy(request)
        return response.policy?.arn.toString()
    }
}

suspend fun createRole(
    rolenameVal: String?,
    fileLocation: String?,
): String? {
    val jsonObject = fileLocation?.let { readJsonSimpleDemo(it) } as JSONObject

    val request =
        CreateRoleRequest {
            roleName = rolenameVal
            assumeRolePolicyDocument = jsonObject.toJSONString()
            description = "Created using the AWS SDK for Kotlin"
        }

    IamClient { region = "AWS_GLOBAL" }.use { iamClient ->
        val response = iamClient.createRole(request)
        return response.role?.arn
    }
}

suspend fun attachRolePolicy(
    roleNameVal: String,
    policyArnVal: String,
) {
    val request =
        ListAttachedRolePoliciesRequest {
            roleName = roleNameVal
        }

    IamClient.fromEnvironment { region = "AWS_GLOBAL" }.use { iamClient ->
        val response = iamClient.listAttachedRolePolicies(request)
        val attachedPolicies = response.attachedPolicies

        // Ensure that the policy is not attached to this role.
        val checkStatus: Int
        if (attachedPolicies != null) {
            checkStatus = checkMyList(attachedPolicies, policyArnVal)
            if (checkStatus == -1) {
                return
            }
        }

        val policyRequest =
            AttachRolePolicyRequest {
                roleName = roleNameVal
                policyArn = policyArnVal
            }
        iamClient.attachRolePolicy(policyRequest)
        println("Successfully attached policy $policyArnVal to role $roleNameVal")
    }
}

fun checkMyList(
    attachedPolicies: List<AttachedPolicy>,
    policyArnVal: String,
): Int {
    for (policy in attachedPolicies) {
        val polArn = policy.policyArn.toString()

        if (polArn.compareTo(policyArnVal) == 0) {
            println("The policy is already attached to this role.")
            return -1
        }
    }
    return 0
}

suspend fun assumeGivenRole(
    roleArnVal: String?,
    roleSessionNameVal: String?,
    bucketName: String,
) {
    val stsClient = StsClient.fromEnvironment { region = "us-east-1" }
    val roleRequest =
        AssumeRoleRequest {
            roleArn = roleArnVal
            roleSessionName = roleSessionNameVal
        }

    val roleResponse = stsClient.assumeRole(roleRequest)
    val myCreds = roleResponse.credentials
    val key = myCreds?.accessKeyId
    val secKey = myCreds?.secretAccessKey
    val secToken = myCreds?.sessionToken

    val staticCredentials = StaticCredentialsProvider {
        accessKeyId = key
        secretAccessKey = secKey
        sessionToken = secToken
    }

    // List all objects in an Amazon S3 bucket using the temp creds.
    val s3 = S3Client.fromEnvironment {
        region = "us-east-1"
        credentialsProvider = staticCredentials
    }

    println("Created a S3Client using temp credentials.")
    println("Listing objects in $bucketName")

    val listObjects =
        ListObjectsRequest {
            bucket = bucketName
        }

    val response = s3.listObjects(listObjects)
    response.contents?.forEach { myObject ->
        println("The name of the key is ${myObject.key}")
        println("The owner is ${myObject.owner}")
    }
}

suspend fun deleteRole(
    roleNameVal: String,
    polArn: String,
) {
    val iam = IamClient.fromEnvironment { region = "AWS_GLOBAL" }

    // First the policy needs to be detached.
    val rolePolicyRequest =
        DetachRolePolicyRequest {
            policyArn = polArn
            roleName = roleNameVal
        }

    iam.detachRolePolicy(rolePolicyRequest)

    // Delete the policy.
    val request =
        DeletePolicyRequest {
            policyArn = polArn
        }

    iam.deletePolicy(request)
    println("*** Successfully deleted $polArn")

    // Delete the role.
    val roleRequest =
        DeleteRoleRequest {
            roleName = roleNameVal
        }

    iam.deleteRole(roleRequest)
    println("*** Successfully deleted $roleNameVal")
}

suspend fun deleteUser(userNameVal: String) {
    val iam = IamClient.fromEnvironment { region = "AWS_GLOBAL" }
    val request =
        DeleteUserRequest {
            userName = userNameVal
        }

    iam.deleteUser(request)
    println("*** Successfully deleted $userNameVal")
}

@Throws(java.lang.Exception::class)
fun readJsonSimpleDemo(filename: String): Any? {
    val reader = FileReader(filename)
    val jsonParser = JSONParser()
    return jsonParser.parse(reader)
}
```
+ Para obter detalhes da API, consulte os tópicos a seguir na *Referência da API AWS SDK para Kotlin*.
  + [AttachRolePolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [CreateAccessKey](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [CreatePolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [CreateRole](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [CreateUser](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DeleteAccessKey](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DeletePolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DeleteRole](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DeleteUser](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DeleteUserPolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [DetachRolePolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)
  + [PutUserPolicy](https://sdk.amazonaws.com/kotlin/api/latest/index.html)

------
#### [ PHP ]

**SDK para PHP**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code/iam#code-examples). 

```
namespace Iam\Basics;

require 'vendor/autoload.php';

use Aws\Credentials\Credentials;
use Aws\S3\Exception\S3Exception;
use Aws\S3\S3Client;
use Aws\Sts\StsClient;
use Iam\IAMService;

echo("\n");
echo("--------------------------------------\n");
print("Welcome to the IAM getting started demo using PHP!\n");
echo("--------------------------------------\n");

$uuid = uniqid();
$service = new IAMService();

$user = $service->createUser("iam_demo_user_$uuid");
echo "Created user with the arn: {$user['Arn']}\n";

$key = $service->createAccessKey($user['UserName']);
$assumeRolePolicyDocument = "{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Principal\": {\"AWS\": \"{$user['Arn']}\"},
                    \"Action\": \"sts:AssumeRole\"
                }]
            }";
$assumeRoleRole = $service->createRole("iam_demo_role_$uuid", $assumeRolePolicyDocument);
echo "Created role: {$assumeRoleRole['RoleName']}\n";

$listAllBucketsPolicyDocument = "{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"s3:ListAllMyBuckets\",
                    \"Resource\": \"arn:aws:s3:::*\"}]
}";
$listAllBucketsPolicy = $service->createPolicy("iam_demo_policy_$uuid", $listAllBucketsPolicyDocument);
echo "Created policy: {$listAllBucketsPolicy['PolicyName']}\n";

$service->attachRolePolicy($assumeRoleRole['RoleName'], $listAllBucketsPolicy['Arn']);

$inlinePolicyDocument = "{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"sts:AssumeRole\",
                    \"Resource\": \"{$assumeRoleRole['Arn']}\"}]
}";
$inlinePolicy = $service->createUserPolicy("iam_demo_inline_policy_$uuid", $inlinePolicyDocument, $user['UserName']);
//First, fail to list the buckets with the user
$credentials = new Credentials($key['AccessKeyId'], $key['SecretAccessKey']);
$s3Client = new S3Client(['region' => 'us-west-2', 'version' => 'latest', 'credentials' => $credentials]);
try {
    $s3Client->listBuckets([
    ]);
    echo "this should not run";
} catch (S3Exception $exception) {
    echo "successfully failed!\n";
}

$stsClient = new StsClient(['region' => 'us-west-2', 'version' => 'latest', 'credentials' => $credentials]);
sleep(10);
$assumedRole = $stsClient->assumeRole([
    'RoleArn' => $assumeRoleRole['Arn'],
    'RoleSessionName' => "DemoAssumeRoleSession_$uuid",
]);
$assumedCredentials = [
    'key' => $assumedRole['Credentials']['AccessKeyId'],
    'secret' => $assumedRole['Credentials']['SecretAccessKey'],
    'token' => $assumedRole['Credentials']['SessionToken'],
];
$s3Client = new S3Client(['region' => 'us-west-2', 'version' => 'latest', 'credentials' => $assumedCredentials]);
try {
    $s3Client->listBuckets([]);
    echo "this should now run!\n";
} catch (S3Exception $exception) {
    echo "this should now not fail\n";
}

$service->detachRolePolicy($assumeRoleRole['RoleName'], $listAllBucketsPolicy['Arn']);
$deletePolicy = $service->deletePolicy($listAllBucketsPolicy['Arn']);
echo "Delete policy: {$listAllBucketsPolicy['PolicyName']}\n";
$deletedRole = $service->deleteRole($assumeRoleRole['Arn']);
echo "Deleted role: {$assumeRoleRole['RoleName']}\n";
$deletedKey = $service->deleteAccessKey($key['AccessKeyId'], $user['UserName']);
$deletedUser = $service->deleteUser($user['UserName']);
echo "Delete user: {$user['UserName']}\n";
```
+ Para obter detalhes da API, consulte os tópicos a seguir na *Referência da API AWS SDK para PHP*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/SdkForPHPV3/iam-2010-05-08/PutUserPolicy)

------
#### [ Python ]

**SDK para Python (Boto3).**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python/example_code/iam#code-examples). 
Crie um usuário e um perfil do IAM que conceda permissão para listar os buckets do Amazon S3. O usuário só tem direitos para assumir a função. Após assumir a função, use credenciais temporárias para listar os buckets para a conta.  

```
import json
import sys
import time
from uuid import uuid4

import boto3
from botocore.exceptions import ClientError


def progress_bar(seconds):
    """Shows a simple progress bar in the command window."""
    for _ in range(seconds):
        time.sleep(1)
        print(".", end="")
        sys.stdout.flush()
    print()


def setup(iam_resource):
    """
    Creates a new user with no permissions.
    Creates an access key pair for the user.
    Creates a role with a policy that lets the user assume the role.
    Creates a policy that allows listing Amazon S3 buckets.
    Attaches the policy to the role.
    Creates an inline policy for the user that lets the user assume the role.

    :param iam_resource: A Boto3 AWS Identity and Access Management (IAM) resource
                         that has permissions to create users, roles, and policies
                         in the account.
    :return: The newly created user, user key, and role.
    """
    try:
        user = iam_resource.create_user(UserName=f"demo-user-{uuid4()}")
        print(f"Created user {user.name}.")
    except ClientError as error:
        print(
            f"Couldn't create a user for the demo. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    try:
        user_key = user.create_access_key_pair()
        print(f"Created access key pair for user.")
    except ClientError as error:
        print(
            f"Couldn't create access keys for user {user.name}. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    print(f"Wait for user to be ready.", end="")
    progress_bar(10)

    try:
        role = iam_resource.create_role(
            RoleName=f"demo-role-{uuid4()}",
            AssumeRolePolicyDocument=json.dumps(
                {
                    "Version":"2012-10-17",		 	 	 
                    "Statement": [
                        {
                            "Effect": "Allow",
                            "Principal": {"AWS": user.arn},
                            "Action": "sts:AssumeRole",
                        }
                    ],
                }
            ),
        )
        print(f"Created role {role.name}.")
    except ClientError as error:
        print(
            f"Couldn't create a role for the demo. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    try:
        policy = iam_resource.create_policy(
            PolicyName=f"demo-policy-{uuid4()}",
            PolicyDocument=json.dumps(
                {
                    "Version":"2012-10-17",		 	 	 
                    "Statement": [
                        {
                            "Effect": "Allow",
                            "Action": "s3:ListAllMyBuckets",
                            "Resource": "arn:aws:s3:::*",
                        }
                    ],
                }
            ),
        )
        role.attach_policy(PolicyArn=policy.arn)
        print(f"Created policy {policy.policy_name} and attached it to the role.")
    except ClientError as error:
        print(
            f"Couldn't create a policy and attach it to role {role.name}. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    try:
        user.create_policy(
            PolicyName=f"demo-user-policy-{uuid4()}",
            PolicyDocument=json.dumps(
                {
                    "Version":"2012-10-17",		 	 	 
                    "Statement": [
                        {
                            "Effect": "Allow",
                            "Action": "sts:AssumeRole",
                            "Resource": role.arn,
                        }
                    ],
                }
            ),
        )
        print(
            f"Created an inline policy for {user.name} that lets the user assume "
            f"the role."
        )
    except ClientError as error:
        print(
            f"Couldn't create an inline policy for user {user.name}. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    print("Give AWS time to propagate these new resources and connections.", end="")
    progress_bar(10)

    return user, user_key, role


def show_access_denied_without_role(user_key):
    """
    Shows that listing buckets without first assuming the role is not allowed.

    :param user_key: The key of the user created during setup. This user does not
                     have permission to list buckets in the account.
    """
    print(f"Try to list buckets without first assuming the role.")
    s3_denied_resource = boto3.resource(
        "s3", aws_access_key_id=user_key.id, aws_secret_access_key=user_key.secret
    )
    try:
        for bucket in s3_denied_resource.buckets.all():
            print(bucket.name)
        raise RuntimeError("Expected to get AccessDenied error when listing buckets!")
    except ClientError as error:
        if error.response["Error"]["Code"] == "AccessDenied":
            print("Attempt to list buckets with no permissions: AccessDenied.")
        else:
            raise


def list_buckets_from_assumed_role(user_key, assume_role_arn, session_name):
    """
    Assumes a role that grants permission to list the Amazon S3 buckets in the account.
    Uses the temporary credentials from the role to list the buckets that are owned
    by the assumed role's account.

    :param user_key: The access key of a user that has permission to assume the role.
    :param assume_role_arn: The Amazon Resource Name (ARN) of the role that
                            grants access to list the other account's buckets.
    :param session_name: The name of the STS session.
    """
    sts_client = boto3.client(
        "sts", aws_access_key_id=user_key.id, aws_secret_access_key=user_key.secret
    )
    try:
        response = sts_client.assume_role(
            RoleArn=assume_role_arn, RoleSessionName=session_name
        )
        temp_credentials = response["Credentials"]
        print(f"Assumed role {assume_role_arn} and got temporary credentials.")
    except ClientError as error:
        print(
            f"Couldn't assume role {assume_role_arn}. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    # Create an S3 resource that can access the account with the temporary credentials.
    s3_resource = boto3.resource(
        "s3",
        aws_access_key_id=temp_credentials["AccessKeyId"],
        aws_secret_access_key=temp_credentials["SecretAccessKey"],
        aws_session_token=temp_credentials["SessionToken"],
    )
    print(f"Listing buckets for the assumed role's account:")
    try:
        for bucket in s3_resource.buckets.all():
            print(bucket.name)
    except ClientError as error:
        print(
            f"Couldn't list buckets for the account. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise




def teardown(user, role):
    """
    Removes all resources created during setup.

    :param user: The demo user.
    :param role: The demo role.
    """
    try:
        for attached in role.attached_policies.all():
            policy_name = attached.policy_name
            role.detach_policy(PolicyArn=attached.arn)
            attached.delete()
            print(f"Detached and deleted {policy_name}.")
        role.delete()
        print(f"Deleted {role.name}.")
    except ClientError as error:
        print(
            "Couldn't detach policy, delete policy, or delete role. Here's why: "
            f"{error.response['Error']['Message']}"
        )
        raise

    try:
        for user_pol in user.policies.all():
            user_pol.delete()
            print("Deleted inline user policy.")
        for key in user.access_keys.all():
            key.delete()
            print("Deleted user's access key.")
        user.delete()
        print(f"Deleted {user.name}.")
    except ClientError as error:
        print(
            "Couldn't delete user policy or delete user. Here's why: "
            f"{error.response['Error']['Message']}"
        )


def usage_demo():
    """Drives the demonstration."""
    print("-" * 88)
    print(f"Welcome to the IAM create user and assume role demo.")
    print("-" * 88)
    iam_resource = boto3.resource("iam")
    user = None
    role = None
    try:
        user, user_key, role = setup(iam_resource)
        print(f"Created {user.name} and {role.name}.")
        show_access_denied_without_role(user_key)
        list_buckets_from_assumed_role(user_key, role.arn, "AssumeRoleDemoSession")
    except Exception:
        print("Something went wrong!")
    finally:
        if user is not None and role is not None:
            teardown(user, role)
        print("Thanks for watching!")


if __name__ == "__main__":
    usage_demo()
```
+ Para obter detalhes da API, consulte os tópicos a seguir na *Referência da API AWS SDK para Python (Boto3)*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/boto3/iam-2010-05-08/PutUserPolicy)

------
#### [ Ruby ]

**SDK para Ruby**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/ruby/example_code/iam#code-examples). 
Crie um usuário e um perfil do IAM que conceda permissão para listar os buckets do Amazon S3. O usuário só tem direitos para assumir a função. Após assumir a função, use credenciais temporárias para listar os buckets para a conta.  

```
# Wraps the scenario actions.
class ScenarioCreateUserAssumeRole
  attr_reader :iam_client

  # @param [Aws::IAM::Client] iam_client: The AWS IAM client.
  def initialize(iam_client, logger: Logger.new($stdout))
    @iam_client = iam_client
    @logger = logger
  end

  # Waits for the specified number of seconds.
  #
  # @param duration [Integer] The number of seconds to wait.
  def wait(duration)
    puts('Give AWS time to propagate resources...')
    sleep(duration)
  end

  # Creates a user.
  #
  # @param user_name [String] The name to give the user.
  # @return [Aws::IAM::User] The newly created user.
  def create_user(user_name)
    user = @iam_client.create_user(user_name: user_name).user
    @logger.info("Created demo user named #{user.user_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info('Tried and failed to create demo user.')
    @logger.info("\t#{e.code}: #{e.message}")
    @logger.info("\nCan't continue the demo without a user!")
    raise
  else
    user
  end

  # Creates an access key for a user.
  #
  # @param user [Aws::IAM::User] The user that owns the key.
  # @return [Aws::IAM::AccessKeyPair] The newly created access key.
  def create_access_key_pair(user)
    user_key = @iam_client.create_access_key(user_name: user.user_name).access_key
    @logger.info("Created accesskey pair for user #{user.user_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info("Couldn't create access keys for user #{user.user_name}.")
    @logger.info("\t#{e.code}: #{e.message}")
    raise
  else
    user_key
  end

  # Creates a role that can be assumed by a user.
  #
  # @param role_name [String] The name to give the role.
  # @param user [Aws::IAM::User] The user who is granted permission to assume the role.
  # @return [Aws::IAM::Role] The newly created role.
  def create_role(role_name, user)
    trust_policy = {
      Version: '2012-10-17',
      Statement: [{
        Effect: 'Allow',
        Principal: { 'AWS': user.arn },
        Action: 'sts:AssumeRole'
      }]
    }.to_json
    role = @iam_client.create_role(
      role_name: role_name,
      assume_role_policy_document: trust_policy
    ).role
    @logger.info("Created role #{role.role_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info("Couldn't create a role for the demo. Here's why: ")
    @logger.info("\t#{e.code}: #{e.message}")
    raise
  else
    role
  end

  # Creates a policy that grants permission to list S3 buckets in the account, and
  # then attaches the policy to a role.
  #
  # @param policy_name [String] The name to give the policy.
  # @param role [Aws::IAM::Role] The role that the policy is attached to.
  # @return [Aws::IAM::Policy] The newly created policy.
  def create_and_attach_role_policy(policy_name, role)
    policy_document = {
      Version: '2012-10-17',
      Statement: [{
        Effect: 'Allow',
        Action: 's3:ListAllMyBuckets',
        Resource: 'arn:aws:s3:::*'
      }]
    }.to_json
    policy = @iam_client.create_policy(
      policy_name: policy_name,
      policy_document: policy_document
    ).policy
    @iam_client.attach_role_policy(
      role_name: role.role_name,
      policy_arn: policy.arn
    )
    @logger.info("Created policy #{policy.policy_name} and attached it to role #{role.role_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info("Couldn't create a policy and attach it to role #{role.role_name}. Here's why: ")
    @logger.info("\t#{e.code}: #{e.message}")
    raise
  end

  # Creates an inline policy for a user that lets the user assume a role.
  #
  # @param policy_name [String] The name to give the policy.
  # @param user [Aws::IAM::User] The user that owns the policy.
  # @param role [Aws::IAM::Role] The role that can be assumed.
  # @return [Aws::IAM::UserPolicy] The newly created policy.
  def create_user_policy(policy_name, user, role)
    policy_document = {
      Version: '2012-10-17',
      Statement: [{
        Effect: 'Allow',
        Action: 'sts:AssumeRole',
        Resource: role.arn
      }]
    }.to_json
    @iam_client.put_user_policy(
      user_name: user.user_name,
      policy_name: policy_name,
      policy_document: policy_document
    )
    puts("Created an inline policy for #{user.user_name} that lets the user assume role #{role.role_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info("Couldn't create an inline policy for user #{user.user_name}. Here's why: ")
    @logger.info("\t#{e.code}: #{e.message}")
    raise
  end

  # Creates an Amazon S3 resource with specified credentials. This is separated into a
  # factory function so that it can be mocked for unit testing.
  #
  # @param credentials [Aws::Credentials] The credentials used by the Amazon S3 resource.
  def create_s3_resource(credentials)
    Aws::S3::Resource.new(client: Aws::S3::Client.new(credentials: credentials))
  end

  # Lists the S3 buckets for the account, using the specified Amazon S3 resource.
  # Because the resource uses credentials with limited access, it may not be able to
  # list the S3 buckets.
  #
  # @param s3_resource [Aws::S3::Resource] An Amazon S3 resource.
  def list_buckets(s3_resource)
    count = 10
    s3_resource.buckets.each do |bucket|
      @logger.info "\t#{bucket.name}"
      count -= 1
      break if count.zero?
    end
  rescue Aws::Errors::ServiceError => e
    if e.code == 'AccessDenied'
      puts('Attempt to list buckets with no permissions: AccessDenied.')
    else
      @logger.info("Couldn't list buckets for the account. Here's why: ")
      @logger.info("\t#{e.code}: #{e.message}")
      raise
    end
  end

  # Creates an AWS Security Token Service (AWS STS) client with specified credentials.
  # This is separated into a factory function so that it can be mocked for unit testing.
  #
  # @param key_id [String] The ID of the access key used by the STS client.
  # @param key_secret [String] The secret part of the access key used by the STS client.
  def create_sts_client(key_id, key_secret)
    Aws::STS::Client.new(access_key_id: key_id, secret_access_key: key_secret)
  end

  # Gets temporary credentials that can be used to assume a role.
  #
  # @param role_arn [String] The ARN of the role that is assumed when these credentials
  #                          are used.
  # @param sts_client [AWS::STS::Client] An AWS STS client.
  # @return [Aws::AssumeRoleCredentials] The credentials that can be used to assume the role.
  def assume_role(role_arn, sts_client)
    credentials = Aws::AssumeRoleCredentials.new(
      client: sts_client,
      role_arn: role_arn,
      role_session_name: 'create-use-assume-role-scenario'
    )
    @logger.info("Assumed role '#{role_arn}', got temporary credentials.")
    credentials
  end

  # Deletes a role. If the role has policies attached, they are detached and
  # deleted before the role is deleted.
  #
  # @param role_name [String] The name of the role to delete.
  def delete_role(role_name)
    @iam_client.list_attached_role_policies(role_name: role_name).attached_policies.each do |policy|
      @iam_client.detach_role_policy(role_name: role_name, policy_arn: policy.policy_arn)
      @iam_client.delete_policy(policy_arn: policy.policy_arn)
      @logger.info("Detached and deleted policy #{policy.policy_name}.")
    end
    @iam_client.delete_role({ role_name: role_name })
    @logger.info("Role deleted: #{role_name}.")
  rescue Aws::Errors::ServiceError => e
    @logger.info("Couldn't detach policies and delete role #{role.name}. Here's why:")
    @logger.info("\t#{e.code}: #{e.message}")
    raise
  end

  # Deletes a user. If the user has inline policies or access keys, they are deleted
  # before the user is deleted.
  #
  # @param user [Aws::IAM::User] The user to delete.
  def delete_user(user_name)
    user = @iam_client.list_access_keys(user_name: user_name).access_key_metadata
    user.each do |key|
      @iam_client.delete_access_key({ access_key_id: key.access_key_id, user_name: user_name })
      @logger.info("Deleted access key #{key.access_key_id} for user '#{user_name}'.")
    end

    @iam_client.delete_user(user_name: user_name)
    @logger.info("Deleted user '#{user_name}'.")
  rescue Aws::IAM::Errors::ServiceError => e
    @logger.error("Error deleting user '#{user_name}': #{e.message}")
  end
end

# Runs the IAM create a user and assume a role scenario.
def run_scenario(scenario)
  puts('-' * 88)
  puts('Welcome to the IAM create a user and assume a role demo!')
  puts('-' * 88)
  user = scenario.create_user("doc-example-user-#{Random.uuid}")
  user_key = scenario.create_access_key_pair(user)
  scenario.wait(10)
  role = scenario.create_role("doc-example-role-#{Random.uuid}", user)
  scenario.create_and_attach_role_policy("doc-example-role-policy-#{Random.uuid}", role)
  scenario.create_user_policy("doc-example-user-policy-#{Random.uuid}", user, role)
  scenario.wait(10)
  puts('Try to list buckets with credentials for a user who has no permissions.')
  puts('Expect AccessDenied from this call.')
  scenario.list_buckets(
    scenario.create_s3_resource(Aws::Credentials.new(user_key.access_key_id, user_key.secret_access_key))
  )
  puts('Now, assume the role that grants permission.')
  temp_credentials = scenario.assume_role(
    role.arn, scenario.create_sts_client(user_key.access_key_id, user_key.secret_access_key)
  )
  puts('Here are your buckets:')
  scenario.list_buckets(scenario.create_s3_resource(temp_credentials))
  puts("Deleting role '#{role.role_name}' and attached policies.")
  scenario.delete_role(role.role_name)
  puts("Deleting user '#{user.user_name}', policies, and keys.")
  scenario.delete_user(user.user_name)
  puts('Thanks for watching!')
  puts('-' * 88)
rescue Aws::Errors::ServiceError => e
  puts('Something went wrong with the demo.')
  puts("\t#{e.code}: #{e.message}")
end

run_scenario(ScenarioCreateUserAssumeRole.new(Aws::IAM::Client.new)) if $PROGRAM_NAME == __FILE__
```
+ Para obter detalhes da API, consulte os tópicos a seguir na *Referência da API AWS SDK para Ruby*.
  + [AttachRolePolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/AttachRolePolicy)
  + [CreateAccessKey](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/CreateAccessKey)
  + [CreatePolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/CreatePolicy)
  + [CreateRole](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/CreateRole)
  + [CreateUser](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/CreateUser)
  + [DeleteAccessKey](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DeleteAccessKey)
  + [DeletePolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DeletePolicy)
  + [DeleteRole](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DeleteRole)
  + [DeleteUser](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DeleteUser)
  + [DeleteUserPolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DeleteUserPolicy)
  + [DetachRolePolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/DetachRolePolicy)
  + [PutUserPolicy](https://docs.aws.amazon.com/goto/SdkForRubyV3/iam-2010-05-08/PutUserPolicy)

------
#### [ Rust ]

**SDK para Rust**  
 Há mais no GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWSCode Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1/examples/iam#code-examples). 

```
use aws_config::meta::region::RegionProviderChain;
use aws_sdk_iam::Error as iamError;
use aws_sdk_iam::{config::Credentials as iamCredentials, config::Region, Client as iamClient};
use aws_sdk_s3::Client as s3Client;
use aws_sdk_sts::Client as stsClient;
use tokio::time::{sleep, Duration};
use uuid::Uuid;

#[tokio::main]
async fn main() -> Result<(), iamError> {
    let (client, uuid, list_all_buckets_policy_document, inline_policy_document) =
        initialize_variables().await;

    if let Err(e) = run_iam_operations(
        client,
        uuid,
        list_all_buckets_policy_document,
        inline_policy_document,
    )
    .await
    {
        println!("{:?}", e);
    };

    Ok(())
}

async fn initialize_variables() -> (iamClient, String, String, String) {
    let region_provider = RegionProviderChain::first_try(Region::new("us-west-2"));

    let shared_config = aws_config::from_env().region(region_provider).load().await;
    let client = iamClient::new(&shared_config);
    let uuid = Uuid::new_v4().to_string();

    let list_all_buckets_policy_document = "{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"s3:ListAllMyBuckets\",
                    \"Resource\": \"arn:aws:s3:::*\"}]
    }"
    .to_string();
    let inline_policy_document = "{
                \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Action\": \"sts:AssumeRole\",
                    \"Resource\": \"{}\"}]
    }"
    .to_string();

    (
        client,
        uuid,
        list_all_buckets_policy_document,
        inline_policy_document,
    )
}

async fn run_iam_operations(
    client: iamClient,
    uuid: String,
    list_all_buckets_policy_document: String,
    inline_policy_document: String,
) -> Result<(), iamError> {
    let user = iam_service::create_user(&client, &format!("{}{}", "iam_demo_user_", uuid)).await?;
    println!("Created the user with the name: {}", user.user_name());
    let key = iam_service::create_access_key(&client, user.user_name()).await?;

    let assume_role_policy_document = "{
        \"Version\": \"2012-10-17\",
                \"Statement\": [{
                    \"Effect\": \"Allow\",
                    \"Principal\": {\"AWS\": \"{}\"},
                    \"Action\": \"sts:AssumeRole\"
                }]
            }"
    .to_string()
    .replace("{}", user.arn());

    let assume_role_role = iam_service::create_role(
        &client,
        &format!("{}{}", "iam_demo_role_", uuid),
        &assume_role_policy_document,
    )
    .await?;
    println!("Created the role with the ARN: {}", assume_role_role.arn());

    let list_all_buckets_policy = iam_service::create_policy(
        &client,
        &format!("{}{}", "iam_demo_policy_", uuid),
        &list_all_buckets_policy_document,
    )
    .await?;
    println!(
        "Created policy: {}",
        list_all_buckets_policy.policy_name.as_ref().unwrap()
    );

    let attach_role_policy_result =
        iam_service::attach_role_policy(&client, &assume_role_role, &list_all_buckets_policy)
            .await?;
    println!(
        "Attached the policy to the role: {:?}",
        attach_role_policy_result
    );

    let inline_policy_name = format!("{}{}", "iam_demo_inline_policy_", uuid);
    let inline_policy_document = inline_policy_document.replace("{}", assume_role_role.arn());
    iam_service::create_user_policy(&client, &user, &inline_policy_name, &inline_policy_document)
        .await?;
    println!("Created inline policy.");

    //First, fail to list the buckets with the user.
    let creds = iamCredentials::from_keys(key.access_key_id(), key.secret_access_key(), None);
    let fail_config = aws_config::from_env()
        .credentials_provider(creds.clone())
        .load()
        .await;
    println!("Fail config: {:?}", fail_config);
    let fail_client: s3Client = s3Client::new(&fail_config);
    match fail_client.list_buckets().send().await {
        Ok(e) => {
            println!("This should not run. {:?}", e);
        }
        Err(e) => {
            println!("Successfully failed with error: {:?}", e)
        }
    }

    let sts_config = aws_config::from_env()
        .credentials_provider(creds.clone())
        .load()
        .await;
    let sts_client: stsClient = stsClient::new(&sts_config);
    sleep(Duration::from_secs(10)).await;
    let assumed_role = sts_client
        .assume_role()
        .role_arn(assume_role_role.arn())
        .role_session_name(format!("iam_demo_assumerole_session_{uuid}"))
        .send()
        .await;
    println!("Assumed role: {:?}", assumed_role);
    sleep(Duration::from_secs(10)).await;

    let assumed_credentials = iamCredentials::from_keys(
        assumed_role
            .as_ref()
            .unwrap()
            .credentials
            .as_ref()
            .unwrap()
            .access_key_id(),
        assumed_role
            .as_ref()
            .unwrap()
            .credentials
            .as_ref()
            .unwrap()
            .secret_access_key(),
        Some(
            assumed_role
                .as_ref()
                .unwrap()
                .credentials
                .as_ref()
                .unwrap()
                .session_token
                .clone(),
        ),
    );

    let succeed_config = aws_config::from_env()
        .credentials_provider(assumed_credentials)
        .load()
        .await;
    println!("succeed config: {:?}", succeed_config);
    let succeed_client: s3Client = s3Client::new(&succeed_config);
    sleep(Duration::from_secs(10)).await;
    match succeed_client.list_buckets().send().await {
        Ok(_) => {
            println!("This should now run successfully.")
        }
        Err(e) => {
            println!("This should not run. {:?}", e);
            panic!()
        }
    }

    //Clean up.
    iam_service::detach_role_policy(
        &client,
        assume_role_role.role_name(),
        list_all_buckets_policy.arn().unwrap_or_default(),
    )
    .await?;
    iam_service::delete_policy(&client, list_all_buckets_policy).await?;
    iam_service::delete_role(&client, &assume_role_role).await?;
    println!("Deleted role {}", assume_role_role.role_name());
    iam_service::delete_access_key(&client, &user, &key).await?;
    println!("Deleted key for {}", key.user_name());
    iam_service::delete_user_policy(&client, &user, &inline_policy_name).await?;
    println!("Deleted inline user policy: {}", inline_policy_name);
    iam_service::delete_user(&client, &user).await?;
    println!("Deleted user {}", user.user_name());

    Ok(())
}
```
+ Para obter detalhes da API, consulte os tópicos a seguir na *Referência da API AWS SDK para Rust*.
  + [AttachRolePolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.attach_role_policy)
  + [CreateAccessKey](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.create_access_key)
  + [CreatePolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.create_policy)
  + [CreateRole](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.create_role)
  + [CreateUser](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.create_user)
  + [DeleteAccessKey](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.delete_access_key)
  + [DeletePolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.delete_policy)
  + [DeleteRole](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.delete_role)
  + [DeleteUser](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.delete_user)
  + [DeleteUserPolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.delete_user_policy)
  + [DetachRolePolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.detach_role_policy)
  + [PutUserPolicy](https://docs.rs/aws-sdk-iam/latest/aws_sdk_iam/client/struct.Client.html#method.put_user_policy)

------

# Use um perfil do IAM para conceder permissões a aplicações em execução em instâncias do Amazon EC2
<a name="id_roles_use_switch-role-ec2"></a>

As aplicações executadas na instância do Amazon EC2 devem incluir credenciais da AWS nas solicitações de API da AWS. Você poderia fazer com que os desenvolvedores armazenassem as credenciais da AWS diretamente na instância do Amazon EC2 e permitissem que as aplicações nessa instância usassem essas credenciais. Contudo, os desenvolvedores teriam que gerenciar as credenciais e garantir a transmissão segura das credenciais para cada instância e atualização de cada instância do Amazon EC2 na hora certa para fazer a atualização das credenciais. Isso é muito trabalho adicional.

Em vez disso, você pode e deve usar um perfil do IAM para gerenciar credenciais *temporárias* para aplicações executadas em uma instância do Amazon EC2. Quando você usa um perfil, não é necessário distribuir credenciais de longo prazo (como credenciais de login ou chaves de acesso) para uma instância do Amazon EC2. Em vez disso, a função fornece permissões temporárias que os aplicativos podem usar ao fazer chamadas para outros recursos da AWS. Quando você executa uma instância do Amazon EC2, você especifica uma função do IAM para associar à instância. Os aplicativos que são executados na instância, por sua vez, usam as credenciais temporárias fornecidas pela função para assinar solicitações da API.

O uso de perfis para conceder permissões a aplicações que são executadas em instâncias do Amazon EC2 exige configuração adicional. Um aplicativo em execução em uma instância do Amazon EC2 é abstraído da AWS pelo sistema operacional virtualizado. Devido a essa separação adicional, é necessário ter uma etapa adicional para atribuir um perfil da AWS e suas permissões associadas a uma instância do Amazon EC2 e torná-las disponíveis para suas aplicações. Essa etapa adicional é a criação de um *[perfil da instância](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)* anexado à instância. O perfil da instância contém a função e pode fornecer as credenciais temporárias da função para um aplicativo que é executado na instância. Essas credenciais temporárias podem ser usadas em chamadas da API do aplicativo para acessar recursos e limitar o acesso apenas aos recursos que a função especifica.

**nota**  
Só é possível atribuir um perfil a uma instância do Amazon EC2 por vez, e todas as aplicações na instância compartilham os mesmos perfil e permissões. Ao utilizar o Amazon ECS para gerenciar suas instâncias do Amazon EC2, é possível atribuir perfis às tarefas do Amazon ECS que podem ser diferenciadas do perfil da instância do Amazon EC2 na qual ela está sendo executada. A atribuição de um perfil a cada tarefa se alinha ao princípio do acesso de privilégio mínimo e permite um maior controle granular sobre ações e recursos.  
Para obter mais informações, consulte [Uso de perfis do IAM com tarefas do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/bestpracticesguide/security-iam-roles.html) no *Guia das práticas recomendadas do Amazon Elastic Container Service*.

Usar funções dessa forma tem vários benefícios. Como as credenciais de perfil são temporárias e atualizadas automaticamente, não é necessário gerenciar credenciais, e você não precisa se preocupar com os riscos de segurança de longo prazo. Além disso, se usar uma única função para várias instâncias, você pode fazer uma alteração nessa função e a alteração se propagará automaticamente para todas as instâncias. 

**nota**  
Embora geralmente um perfil seja atribuído a uma instância do Amazon EC2 quando você a inicia, também é possível anexar um perfil a uma instância do Amazon EC2 que já esteja em execução. Para saber como anexar uma função a uma instância em execução, consulte [Funções do IAM do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role).

**Topics**
+ [

## Como os perfis para as instâncias do Amazon EC2 funcionam?
](#roles-usingrole-ec2instance-roles)
+ [

## Permissões necessárias para usar funções com o Amazon EC2
](#roles-usingrole-ec2instance-permissions)
+ [

## Como faço para começar?
](#roles-usingrole-ec2instance-get-started)
+ [

## Informações relacionadas
](#roles-usingrole-ec2instance-related-info)

## Como os perfis para as instâncias do Amazon EC2 funcionam?
<a name="roles-usingrole-ec2instance-roles"></a>

Na figura a seguir, um desenvolvedor executa um aplicativo em uma instância do Amazon EC2 que requer acesso ao bucket do S3 denominado `amzn-s3-demo-bucket-photos`. Um administrador cria o perfil de serviço `Get-pics` e anexa o perfil à instância do Amazon EC2. A função inclui uma política de permissões que concede acesso somente leitura ao bucket do S3 especificado. Ela também inclui uma política de confiança que permite que a instância do Amazon EC2 assuma o perfil e recupere as credenciais temporárias. Quando o aplicativo é executado na instância, ele pode usar as credenciais temporárias da função para acessar o bucket de fotos. O administrador não precisa conceder ao desenvolvedor permissão para acessar o bucket de fotos, e o desenvolvedor nunca precisa compartilhar nem gerenciar as credenciais.

![\[Aplicativo em uma instância do Amazon EC2 que esteja acessando um recurso da AWS\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/roles-usingrole-ec2roleinstance.png)


1. O administrador usa o IAM para criar a função **Get-pics**. Na política de confiança do perfil, o administrador especifica que apenas as instâncias do Amazon EC2 podem assumir o perfil. Na política de permissões da função, o administrador especifica a permissão somente leitura para o bucket de `amzn-s3-demo-bucket-photos`.

1. Um desenvolvedor inicia uma instância do Amazon EC2 e atribui o perfil `Get-pics` a essa instância.
**nota**  
Se você usar o console do IAM, o perfil da instância será tanto gerenciado quanto mais transparente para você. No entanto, se você usar a AWS CLI ou a API para criar e gerenciar o perfil e a instância do Amazon EC2, será necessário criar o perfil de instância e atribuir o perfil a ela em etapas distintas. Assim, quando você executar a instância, será necessário especificar o nome de perfil da instância em vez do nome da função.

1. Quando a aplicação é executada, ela obtém as credenciais de segurança temporárias dos [metadados da instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) do Amazon EC2, conforme descrito em [Recuperar credenciais de segurança de metadados da instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#instance-metadata-security-credentials). Essas são as [credenciais de segurança temporárias](id_credentials_temp.md) que representam a função e são válidas por um período limitado. 

   Com alguns [SDKs da AWS](https://aws.amazon.com/tools/), o desenvolvedor pode usar um provedor que gerencia as credenciais de segurança temporárias de forma transparente. (A documentação para SDKs individuais da AWS descreve os recursos suportados pelo SDK para o gerenciamento de credenciais).

   Como alternativa, o aplicativo pode obter as credenciais temporárias diretamente dos metadados da instância do Amazon EC2. Credenciais e valores relacionados estão disponíveis na `iam/security-credentials/role-name` categoria (nesse caso, `iam/security-credentials/Get-pics`) dos metadados. Se o aplicativo obtiver as credenciais dos metadados da instância, ele poderá armazenar as credenciais em cache.

1. Ao usar as credenciais temporárias recuperadas, o aplicativo acessa o bucket de fotos. Devido a política anexada à função **Get-pics**, o aplicativo tem permissões somente leitura. 

   As credenciais temporárias de segurança disponíveis na instância são atualizadas automaticamente antes de perder a validade. Assim, há sempre um conjunto válido disponível. O aplicativo só precisa se certificar de receber um novo conjunto de credenciais dos metadados da instância antes que as atuais expirem. É possível usar o SDK da AWS para gerenciar credenciais para que a aplicação não precise incluir uma lógica adicional para atualizar as credenciais. Por exemplo, instanciando clientes com provedores de credenciais de perfis da instância. No entanto, se o aplicativo receber credenciais de segurança temporárias dos metadados da instância e os tiver armazenados em cache, ele deverá obter um conjunto de credenciais atualizadas a cada hora, ou pelo menos 15 minutos antes de o conjunto atual expirar. O tempo de validade está incluído nas informações que são retornadas na categoria `iam/security-credentials/role-name`. 

## Permissões necessárias para usar funções com o Amazon EC2
<a name="roles-usingrole-ec2instance-permissions"></a>

Para iniciar uma instância com um perfil, o desenvolvedor deve ter permissão para iniciar instâncias do Amazon EC2 e para transmitir perfis do IAM.

A política de exemplo a seguir permite que os usuários usem o Console de gerenciamento da AWS para executar uma instância com uma função. A política inclui curingas (`*`) para permitir que um usuário transmita qualquer função e execute as ações listadas do Amazon EC2. A ação `ListInstanceProfiles` permite que os usuários visualizem todas as perfis disponíveis na Conta da AWS.

**Example Exemplo de política que concede a um usuário permissão para usar o console do Amazon EC2 para executar uma instância com qualquer função**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "IamPassRole",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "ec2.amazonaws.com"
                }
            }
        },
        {
            "Sid": "ListEc2AndListInstanceProfiles",
            "Effect": "Allow",
            "Action": [
                "iam:ListInstanceProfiles",
                "ec2:Describe*",
                "ec2:Search*",
                "ec2:Get*"
            ],
            "Resource": "*"
        }
    ]
}
```

### Restringir quais perfis podem ser transmitidos para as instâncias do Amazon EC2 (usando PassRole)
<a name="roles-usingrole-ec2instance-passrole"></a>

Você pode usar a permissão `PassRole` para restringir quais perfis um usuário pode transmitir a uma instância do Amazon EC2 quando o usuário inicia a instância. Isso ajuda a evitar que o usuário execute aplicações que tenham mais permissões do que o usuário recebeu, ou seja, de poder obter privilégios elevados. Por exemplo, imagine que a usuária Alice tenha permissões apenas para iniciar instâncias do Amazon EC2 e trabalhar com buckets do Amazon S3, mas o perfil que ela transmite para uma instância do Amazon EC2 tem permissões para trabalhar com o IAM e o Amazon DynamoDB. Nesse caso, Alice pode ser capaz de executar a instância, fazer login nela, obter credenciais de segurança temporárias e, em seguida, executar ações no IAM ou no DynamoDB para as quais ela não tem autorização.

Para restringir quais perfis um usuário pode transmitir para uma instância do Amazon EC2, você cria uma política que permita a ação `PassRole`. Em seguida, anexe a política ao usuário (ou a um grupo do IAM ao qual o usuário pertença) que iniciará as instâncias do Amazon EC2. No elemento `Resource` da política, liste o perfil ou perfis que o usuário tem permissão para transmitir para instâncias do Amazon EC2. Quando o usuário executa uma instância e associa uma função a ela, o Amazon EC2 verifica se o usuário tem permissão para transmitir essa função. Naturalmente, você também deve garantir que a função que o usuário pode transmitir não inclua mais permissões do que o usuário deve ter.

**nota**  
`PassRole` não é uma ação da API da forma que `RunInstances` ou `ListInstanceProfiles` é. Em vez disso, é uma permissão que a AWS verifica sempre que um ARN da função é transmitido como um parâmetro para uma API (ou o console faz isso em nome do usuário). Ele ajuda um administrador a controlar quais funções podem ser transmitidas por quais usuários. Nesse caso, ele garante que o usuário tenha permissão para anexar uma função específica a uma instância do Amazon EC2.

**Example Exemplo de política que concede permissão para um usuário iniciar uma instância do Amazon EC2 com um perfil específico**  
A política de exemplo a seguir permite que os usuários usem a API do Amazon EC2 para executar uma instância com uma função. O elemento `Resource` especifica o nome de recurso da Amazon (ARN) de uma função. Ao especificar o ARN, a política concede ao usuário a permissão para transmitir apenas a função `Get-pics`. Se o usuário tentar especificar uma função diferente ao executar uma instância, a ação falhará. O usuário não tem permissões para executar qualquer instância, independentemente de ele transmitir uma função.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/Get-pics"
        }
    ]
}
```

### Permitir que uma função de perfil de instância alterne para uma função em outra conta
<a name="switch-role-ec2-another-account"></a>

Você pode permitir que uma aplicação em execução em uma instância do Amazon EC2 execute comandos em outra conta. Para fazer isso, é necessário permitir que o perfil de instância do Amazon EC2 na primeira conta alterne para um perfil na segunda conta.

Imagine que você esteja usando duas Contas da AWS e queira permitir que uma aplicação em execução em uma instância do Amazon EC2 execute comandos da [AWS CLI](https://aws.amazon.com/cli/) nas duas contas. Vamos supor que a instância do Amazon EC2 exista na conta `111111111111`. Essa instância inclui a função de perfil da instância `abcd` que permite que a aplicação execute tarefas somente leitura do Amazon S3 no bucket `amzn-s3-demo-bucket1` dentro da mesma conta `111111111111`. No entanto, a aplicação também deve ter permissão para assumir a função `efgh` entre contas para acessar o bucket `amzn-s3-demo-bucket2` do Amazon S3 na conta `222222222222`.

![\[O diagrama mostra como um desenvolvedor inicia uma instância do Amazon EC2 com o perfil para obter acesso a fotos em um bucket do Amazon S3.\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/roles-instance-profile-cross-account.png)


A função de perfil de instância `abcd` do Amazon EC2 deve ter a seguinte política de permissões para permitir que o aplicativo acesse o bucket `amzn-s3-demo-bucket1` do Amazon S3:

***Política de permissões da função `abcd` da conta 111111111111*** 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAccountLevelS3Actions",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowListAndReadS3ActionOnMyBucket",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1/*",
                "arn:aws:s3:::amzn-s3-demo-bucket1"
            ]
        },
        {
            "Sid": "AllowIPToAssumeCrossAccountRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::222222222222:role/efgh"
        }
    ]
}
```

------

A função `abcd` deve confiar no serviço do Amazon EC2 para assumir a função. Para fazer isso, a função `abcd` deve ter a seguinte política de confiança:

***Política de confiança da função `abcd` da conta 111111111111***

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "abcdTrustPolicy",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {"Service": "ec2.amazonaws.com"}
        }
    ]
}
```

------

Vamos supor que a função entre contas `efgh` permita tarefas somente leitura do Amazon S3 no bucket `amzn-s3-demo-bucket2` na mesma conta `222222222222`. Para fazer isso, a função entre contas `efgh` deve ter a seguinte política de permissões:

***Política de permissões da função `efgh` da conta 222222222222***

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAccountLevelS3Actions",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetAccountPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "AllowListAndReadS3ActionOnMyBucket",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket2/*",
                "arn:aws:s3:::amzn-s3-demo-bucket2"
            ]
        }
    ]
}
```

------

A função `efgh` deve confiar na função de perfil de instância `abcd` para assumi-la. Para fazer isso, a função `efgh` deve ter a seguinte política de confiança:

***Política de confiança da função `efgh` da conta 222222222222***

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "efghTrustPolicy",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {"AWS": "arn:aws:iam::111111111111:role/abcd"}
        }
    ]
}
```

------

## Como faço para começar?
<a name="roles-usingrole-ec2instance-get-started"></a>

Para entender como os perfis funcionam com as instâncias do Amazon EC2, é necessário usar o console do IAM para criar um perfil, iniciar uma instância do EC2 que use esse perfil e, em seguida, examinar a instância em execução. Examine os [metadados da instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) para ver como as credenciais temporárias da função são disponibilizadas para uma instância. Você também pode ver como um aplicativo que é executado em uma instância pode usar a função. Use os recursos a seguir para saber mais. 
+ [Tutorial de perfis do IAM em instâncias do Amazon EC2](https://www.youtube.com/watch?v=TlCuOjviOhk). O vídeo vinculado mostra como usar um perfil do IAM com uma instância do Amazon EC2 para controlar o que um aplicativo pode fazer quando ele for executado na instância. O vídeo mostra como a aplicação (gravada no SDK da AWS) pode obter credenciais de segurança temporárias por meio da função. 
+ Demonstrações do SDK. A documentação do AWS SDK inclui demonstrações que mostram um aplicativo em execução em uma instância do Amazon EC2 que usa credenciais temporárias para perfis que fazem a leitura de um bucket do Amazon S3. Cada uma das demonstrações a seguir apresenta etapas semelhantes com uma linguagem de programação diferente:
  + [Configurar funções do IAM para o Amazon EC2 com o SDK for Java](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-roles.html) no *Guia do desenvolvedor do AWS SDK para Java* 
  + [Launch an Amazon EC2 Instance using the SDK for .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/run-instance.html) (Iniciar uma instância do Amazon EC2 usando o SDK para .NET) no *Guia do desenvolvedor do AWS SDK para .NET*
  + [Criar uma instância do Amazon EC2 com o SDK for Ruby](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/ec2-example-create-instance.html) no *Guia do desenvolvedor do AWS SDK para Ruby*

## Informações relacionadas
<a name="roles-usingrole-ec2instance-related-info"></a>

Para obter mais informações sobre a criação de perfis ou funções para instâncias do Amazon EC2, consulte as seguintes informações:
+ Para obter mais informações sobre [como usar perfis do IAM com instâncias do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html), consulte o *Guia do usuário do Amazon EC2*.
+ Para criar uma função, consulte [Criar um perfil do IAM](id_roles_create.md)
+ Para obter mais informações sobre o uso de credenciais de segurança temporárias, consulte [Credenciais de segurança temporárias no IAM](id_credentials_temp.md).
+ Se você trabalha com a API do IAM ou a CLI, é necessário criar e gerenciar os perfis de instância do IAM. Para obter mais informações sobre os perfis da instância, consulte [Usar perfis de instância](id_roles_use_switch-role-ec2_instance-profiles.md).
+ Para obter mais informações sobre credenciais temporárias de segurança para perfis nos metadados da instância, consulte [Recuperar credenciais de segurança dos metadados da instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#instance-metadata-security-credentials) no *Guia do usuário do Amazon EC2*.

# Usar perfis de instância
<a name="id_roles_use_switch-role-ec2_instance-profiles"></a>

Use um perfil de instância para passar uma função do IAM para uma instância do EC2. Para obter mais informações, consulte [Perfis do IAM para o Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) no *Guia do usuário do Amazon EC2*.

## Gerenciar perfis de instância (console)
<a name="instance-profiles-manage-console"></a>

Se você usar o Console de gerenciamento da AWS para criar uma função para o Amazon EC2, o console criará automaticamente um perfil de instância e dará a ele o mesmo nome da função. Ao usar o console do Amazon EC2 para executar uma instância com uma função do IAM, você pode selecionar uma função para associar à instância. No console, a lista exibida é, na verdade, uma lista de nomes de perfis de instância. O console não cria um perfil de instância para uma função que não esteja associada ao Amazon EC2.

Você pode usar o Console de gerenciamento da AWS para excluir funções do IAM e perfis de instância do Amazon EC2 se a função e o perfil da instância tiverem o mesmo nome. Para saber mais sobre como excluir perfis de instância, consulte [Excluir perfis ou perfis de instância](id_roles_manage_delete.md).

**nota**  
Para atualizar as permissões de uma instância, substitua o perfil da instância. Não é recomendável remover um perfil de um perfil de instância, pois existe um atraso de até uma hora antes que essa alteração entre em vigor.

## Gerenciar perfis de instância (AWS CLI ou API da AWS)
<a name="instance-profiles-manage-cli-api"></a>

Se gerenciar suas funções da AWS CLI ou da API da AWS, você criará funções e perfis de instância como ações separadas. Como funções e perfis de instância podem ter nomes diferentes, você precisa saber os nomes de seus perfis de instância, bem como os nomes das funções que eles contêm. Dessa forma, você pode escolher o perfil de instância correto ao executar uma instância do EC2. 

Você pode anexar etiquetas aos seus recursos do IAM, incluindo perfis de instância, para identificar, organizar e controlar o acesso a eles. Os perfis de instância só podem ser marcados quando você usa a AWS CLI ou a API da AWS. 

**nota**  
Um perfil de instância pode conter apenas uma função do IAM, embora uma função possa ser incluída em vários perfis de instância. Esse limite de uma função por perfil de instância não pode ser aumentado. Você pode remover a função existente e, em seguida, adicionar uma função diferente a um perfil de instância. Você deve então esperar que a mudança apareça em toda a AWS devido à [eventual consistency](https://en.wikipedia.org/wiki/Eventual_consistency). Para forçar a alteração, [desassocie o perfil de instância](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html), [associe o perfil de instância](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html), ou interrompa a instância e, em seguida, reinicie-a.

### Gerenciar perfis de instância (AWS CLI)
<a name="instance-profiles-manage-cli"></a>

Você pode usar os seguintes comandos da AWS CLI para trabalhar com perfis de instância em uma conta da AWS. 
+ Criar um perfil de instância: [https://docs.aws.amazon.com/cli/latest/reference/iam/create-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-instance-profile.html)
+ Marcar um perfil de instância: [https://docs.aws.amazon.com/cli/latest/reference/iam/tag-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-instance-profile.html)
+ Listar tags para um perfil de instância: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profile-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profile-tags.html)
+ Desmarcar um perfil de instância: [https://docs.aws.amazon.com/cli/latest/reference/iam/untag-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-instance-profile.html)
+ Adicionar uma função a um perfil de instância: [https://docs.aws.amazon.com/cli/latest/reference/iam/add-role-to-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/add-role-to-instance-profile.html) 
+ Listar perfis de instância: [https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles.html), [https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles-for-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles-for-role.html) 
+ Obter informações sobre um perfil de instância: [https://docs.aws.amazon.com/cli/latest/reference/iam/get-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-instance-profile.html) 
+ Remover uma função de um perfil de instância: [https://docs.aws.amazon.com/cli/latest/reference/iam/remove-role-from-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-role-from-instance-profile.html)
+ Excluir um perfil de instância: [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-instance-profile.html) 

Você também pode anexar uma função a uma instância do EC2 já em execução usando os seguintes comandos. Para obter mais informações, consulte [Funções do IAM para o Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role).
+ Anexar um perfil de instância com uma função a uma instância do EC2 em execução ou interrompida: [https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-iam-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-iam-instance-profile.html) 
+ Obter informações sobre um perfil de instância anexado a uma instância do EC: [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html) 
+ Desanexar um perfil de instância com uma função de uma instância do EC2 em execução ou interrompida: [https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-iam-instance-profile.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-iam-instance-profile.html) 

### Gerenciar perfis de instância (API da AWS)
<a name="instance-profiles-manage-api"></a>

Você pode chamar as seguintes operações de API da AWS para trabalhar com perfis de instância em uma Conta da AWS.
+ Criar um perfil de instância: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateInstanceProfile.html) 
+ Marcar um perfil de instância: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html) 
+ Listar tags em um perfil de instância: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html) 
+ Desmarcar um perfil de instância: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html) 
+ Adicionar uma função a um perfil de instância: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddRoleToInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddRoleToInstanceProfile.html) 
+ Listar perfis de instância: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfiles.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfiles.html), [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfilesForRole.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfilesForRole.html) 
+ Obter informações sobre um perfil de instância: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetInstanceProfile.html) 
+ Remover uma função de um perfil de instância: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveRoleFromInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveRoleFromInstanceProfile.html) 
+ Excluir um perfil de instância: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteInstanceProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteInstanceProfile.html) 

Você também pode anexar uma função a uma instância do EC2 já em execução chamando as seguintes operações. Para obter mais informações, consulte [Funções do IAM para o Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role).
+ Anexar um perfil de instância com uma função a uma instância do EC2 em execução ou interrompida: [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateIamInstanceProfile.html) 
+ Obter informações sobre um perfil de instância anexado a uma instância do EC: [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeIamInstanceProfileAssociations.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeIamInstanceProfileAssociations.html) 
+ Desanexar um perfil de instância com uma função de uma instância do EC2 em execução ou interrompida: [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DisassociateIamInstanceProfile.html) 

# Federação e provedores de identidade na AWS
<a name="id_roles_providers"></a>

Como uma prática recomendada, sugerimos que você exija que os usuários humanos usem uma federação com um provedor de identidade para acessar recursos da AWS, em vez de criar usuários do IAM individuais na Conta da AWS deles. Com um provedor de identidade (IdP), você pode gerenciar suas identidades de usuários fora da AWS e fornecer a esses usuários externos permissões para usar recursos da AWS na sua conta. Isso será útil se a sua organização já tiver seu próprio sistema de identidade, como um diretório de usuários corporativos. Também será útil se você criar um aplicativo móvel ou web que precise de acesso aos recursos da AWS.

**nota**  
Você também pode gerenciar usuários humanos no [Centro de Identidade do IAM](https://docs.aws.amazon.com//singlesignon/latest/userguide/what-is.html) com um provedor de identidade do SAML externo em vez de usar a federação do SAML no IAM. A federação do Centro de Identidade do IAM com um provedor de identidade oferece a capacidade de conceder acesso a várias contas da AWS em sua organização e a várias aplicações da AWS. Para obter informações sobre situações específicas em que um usuário do IAM é necessário, consulte [Quando criar um usuário do IAM (em vez de um perfil)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_which-to-choose).

Caso prefira usar uma única conta da AWS sem habilitar o Centro de Identidade do IAM, você pode usar o IAM com um IdP externo que fornece informações de identidade à AWS usando o [OpenID Connect (OIDC)](http://openid.net/connect/) ou o [SAML 2.0 (Security Assertion Markup Language 2.0)](https://wiki.oasis-open.org/security). O OIDC conecta aplicações, como o GitHub Actions, que não são executados em recursos da AWS, a recursos da AWS Exemplos de provedores de identidade SAML bem conhecidos são Shibboleth e Active Directory Federation Services.

Quando você usa um provedor de identidade do , não precisa criar código de login personalizado nem gerenciar suas próprias identidades de usuários. O IdP faz isso para você. Os usuários externos fazem login por meio do IdP, e você pode conceder a essas identidades externas permissões para usar os recursos da AWS na sua conta. Os provedores de identidade ajudam a manter sua Conta da AWS segura, pois você não precisa distribuir ou incorporar credenciais de segurança de longo prazo, como chaves de acesso.

Revise a tabela a seguir para ajudar a determinar qual é o melhor tipo de federação do IAM para seu caso de uso: IAM, Centro de Identidade do IAM ou Amazon Cognito. Os resumos e a tabela a seguir fornecem uma visão geral dos métodos que os usuários podem empregar para ter acesso federado aos recursos da AWS.


| Tipo de Federação do IAM | Account type (Tipo de conta) | Gerenciamento de acesso de... | Fonte de identidades compatível | 
| --- | --- | --- | --- | 
|  Federação com o IAM Identity Center  |  Várias contas gerenciadas pelo AWS Organizations  |  Os usuários humanos da sua força de trabalho  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/id_roles_providers.html)  | 
|  Federação com o IAM  |  Conta autônoma única  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/id_roles_providers.html)  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/id_roles_providers.html)  | 
|  Federação com bancos de identidades do Amazon Cognito  |  Any  |  Os usuários de aplicações que requerem autorização do IAM para acessar os recursos  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/id_roles_providers.html)  | 

## Federação com o IAM Identity Center
<a name="id_roles_providers_identity-center"></a>

Para gerenciamento de acesso centralizado de seres humanos, recomendamos que você use o [IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) para gerenciar o acesso às suas contas e as permissões dentro dessas contas. Os usuários do IAM Identity Center recebem credenciais de curto prazo para usar seus recursos da AWS. Você pode usar o Active Directory, um provedor de identidades (IdP) externo ou um diretório do IAM Identity Center como a fonte de identidades de usuários e grupos para conceder acesso aos seus recursos da AWS. 

O IAM Identity Center é compatível com federação de identidades com SAML (Security Assertion Markup Language) 2.0 para fornecer acesso de login único federado aos usuários autorizados a usar as aplicações no portal de acesso da AWS. Assim, os usuários podem usar a autenticação única para entrar nos serviços compatíveis com SAML, inclusive o Console de gerenciamento da AWS e aplicações de terceiros, como o Microsoft 365, o SAP Concur e o Salesforce.

## Federação com o IAM
<a name="id_roles_providers_iam"></a>

Embora seja altamente recomendável gerenciar usuários humanos no IAM Identity Center, você pode habilitar o acesso de entidades principais federadas com o IAM para usuários humanos em implantações de curto prazo e pequena escala. O IAM permite que você use IdPs SAML 2.0 e Open ID Connect (OIDC) separados e atributos de entidades principais federadas para controle de acesso. Com o IAM, você pode passar os atributos do usuário, como centro de custos, título ou nacionalidade, dos IdPs para a AWS, e implementar permissões de acesso refinadas com base nesses atributos.

Uma *workload* é uma coleção de códigos e recursos que fornece valor comercial, como uma aplicação ou um processo de backend. Sua workload pode exigir uma identidade do IAM para fazer solicitações aos serviços, aplicações, ferramentas operacionais e componentes da AWS. Essas identidades incluem máquinas em execução em seus ambientes da AWS, como instâncias do Amazon EC2 ou funções do AWS Lambda.

Você também pode gerenciar identidades de máquina para partes externas que precisam de acesso. Para dar acesso a identidades de máquina, você pode usar perfis do IAM. Os perfis do IAM têm permissões específicas e fornecem uma maneira de acessar a AWS com base em credenciais de segurança temporárias com uma sessão de perfil. Além disso, você pode ter máquinas fora da AWS que precisam de acesso aos seus ambientes da AWS. Para máquinas que são executadas fora da AWS, você pode usar o [IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html). Para ter mais informações sobre funções, consulte [Perfis do IAM](id_roles.md). Para obter detalhes sobre como usar perfis para delegar acesso em Contas da AWS, consulte [Tutorial do IAM: Delegar acesso entre contas da AWS usando funções do IAM](tutorial_cross-account-with-roles.md).

Para usar um IdP diretamente no IAM, você cria uma entidade provedora de identidades para estabelecer uma relação de confiança entre sua Conta da AWS e esse IdP. O IAM oferece suporte a IdPs compatíveis com [OpenID Connect (OIDC)](http://openid.net/connect/) ou [SAML 2.0 (Security Assertion Markup Language 2.0)](https://wiki.oasis-open.org/security). Para obter mais informações sobre como usar um desses IdPs com a AWS, consulte as seguintes seções:
+ [Federação OIDC](id_roles_providers_oidc.md)
+ [Federação SAML 2.0](id_roles_providers_saml.md)

## Federação com bancos de identidades do Amazon Cognito
<a name="id_roles_providers_cognito"></a>

O Amazon Cognito destina-se a desenvolvedores que desejam autenticar e autorizar usuários em aplicações móveis e aplicações da Web. Os grupos de usuários do Amazon Cognito adicionam recursos de login e inscrição à aplicação, e os bancos de identidades fornecem as credenciais do IAM que concedem aos usuários acesso aos recursos protegidos que você gerencia na AWS. Os bancos de identidades obtêm credenciais para sessões temporárias por meio da operação da API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html).

O Amazon Cognito trabalha com provedores de identidades externos compatíveis com SAML e OpenID Connect, e com provedores de identidades sociais, como o Facebook, o Google e a Amazon. A aplicação pode inscrever um usuário em um grupo de usuários ou um IdP externo e depois recuperar recursos em nome dele com sessões personalizadas temporárias em um perfil do IAM.

## Recursos adicionais
<a name="id_roles_providers_additional_resources"></a>
+ Para obter uma demonstração de como criar um proxy de federação personalizado que permita autenticação única (SSO) no Console de gerenciamento da AWS usando o sistema de autenticação da sua organização, consulte [Habilitar o acesso do intermediador de identidades personalizado ao console da AWS](id_roles_providers_enable-console-custom-url.md).

# Cenários comuns
<a name="id_federation_common_scenarios"></a>

**nota**  
Recomendamos exigir que seus usuários humanos usem credenciais temporárias ao acessar a AWS. Você já pensou em usar o Centro de Identidade do AWS IAM? O IAM Identity Center pode ser usado para gerenciar centralmente o acesso a várias Contas da AWS e fornecer aos usuários acesso de logon único protegido por MFA a todas as contas atribuídas em um só lugar. Com o IAM Identity Center, é possível criar e gerenciar identidades de usuários no IAM Identity Center ou conectar facilmente ao provedor de identidades compatível com SAML 2.0 existente. Para obter mais informações, consulte [O que é o IAM Identity Center?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) no *Guia do usuário do Centro de Identidade do AWS IAM*.

Você pode usar um provedor de identidades (IdP) externo para gerenciar identidades de usuários fora da AWS e do IdP externo. Um IdP externo pode fornecer informações de identidade à AWS usando OpenID Connect (OIDC) ou Security Assertion Markup Language (SAML). O OIDC é comumente usado quando uma aplicação que não é executada na AWS precisa de acesso a recursos da AWS.

Quando você desejar configurar uma federação com um IdP externo, crie um *provedor de identidades* do IAM para informar a AWS sobre o IdP externo e sua configuração. Isso estabelece confiança entre sua Conta da AWS e o IdP externo. Os tópicos a seguir fornecem cenários comuns para uso de provedores de identidade do IAM.

**Topics**
+ [

## Amazon Cognito para aplicativos móveis
](#id_roles_providers_oidc_cognito)
+ [

## federação OIDC para aplicativos móveis
](#id_roles_providers_oidc_manual)

## Amazon Cognito para aplicativos móveis
<a name="id_roles_providers_oidc_cognito"></a>

A maneira preferencial de usar a federação OIDC é usar o [Amazon Cognito](https://aws.amazon.com/cognito/). Por exemplo, a desenvolvedora Adele está criando um jogo para um dispositivo móvel no qual os dados do usuário, como pontuações e perfis, são armazenados no Amazon S3 e no Amazon DynamoDB. Adele também pode armazenar esses dados localmente no dispositivo e usar o Amazon Cognito para mantê-los sincronizados entre os dispositivos. Ela sabe que por motivos de segurança e manutenção, as credenciais de segurança da AWS de longo prazo não devem ser distribuídas com o jogo. Ela também sabe que o jogo pode ter um grande número de usuários. Por todos esses motivos, ela não quer criar novas identidades de usuários no IAM para cada jogador. Em vez disso, ela desenvolve o jogo de modo que os usuários possam fazer login usando uma identidade já estabelecida com um provedor de identidades (IdP) externo bem conhecido, como **Login with Amazon**, **Facebook**, **Google** ou qualquer IdP compatível com **OpenID Connect** (OIDC). O jogo dela pode aproveitar o mecanismo de autenticação de um desses provedores para validar a identidade do usuário. 

Para permitir que o aplicativo móvel acesse seus recursos da AWS, Adele primeiro se registra para um ID de desenvolvedor com seus IdPs escolhidos. Ela também configura o aplicativo com cada um desses provedores. Na sua Conta da AWS que contém o bucket do Amazon S3 e a tabela do DynamoDB para o jogo, Adele usa o Amazon Cognito para criar perfis do IAM que definem com precisão as permissões necessárias para o jogo. Se ela estiver usando um IdP de OIDC, ela também criará uma entidade de provedor de identidades OIDC do IAM para estabelecer a confiança entre um [grupo de identidades do Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/external-identity-providers.html) na Conta da AWS e o IdP.

No código do aplicativo, a Adele chama a interface de login para o IdP que ela configurou anteriormente. O IdP lida com todos os detalhes para permitir que o usuário faça login, e o aplicativo obtenha um token de acesso OAuth ou um token de ID do OIDC do provedor. O aplicativo da Adele pode trocar essas informações de autenticação para um conjunto de credenciais de segurança temporárias que consiste em um ID de chave de acesso da AWS, uma chave de acesso secreta e um token de sessão. O aplicativo pode então usar essas credenciais para acessar serviços da web oferecidos pela AWS. O aplicativo é limitado às permissões que são definidas na função que ele assume.

A figura a seguir mostra um fluxo simplificado de como isso funciona usando o Login with Amazon como IdP. Para a etapa 2, o aplicativo também pode usar o Facebook, Google ou qualquer IdP compatível com o OIDC, mas isto não é mostrado aqui.

![\[Fluxo de trabalho de exemplo usando o Amazon Cognito para federar usuários para um aplicativo móvel\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/mobile-app-web-identity-federation.diagram.png)


 

1. Um cliente inicia o aplicativo em um dispositivo móvel. O aplicativo solicita que o usuário faça login.

1. A aplicação usa os recursos do Login with Amazon para aceitar as credenciais do usuário

1. A aplicação usa operações de API do Amazon Cognito `GetId` e `GetCredentialsForIdentity` para trocar o token de ID do login com a Amazon por um token do Amazon Cognito. O Amazon Cognito, que foi configurado para confiar no seu projeto de login com a Amazon, gera um token que ele troca por credenciais de sessão temporárias com o AWS STS.

1. A aplicação recebe credenciais de segurança temporárias do Amazon Cognito. A aplicação também pode usar o fluxo de trabalho básico (clássico) no Amazon Cognito para recuperar tokens do AWS STS usando `AssumeRoleWithWebIdentity`. Para obter mais informações consulte [Identity pools (federated identities) authentication flow](https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html) (Fluxo de autenticação de grupos de identidades [identidades federadas] do Amazon Cognito) no Amazon Cognito Developer Guide (Guia do desenvolvedor do Amazon Cognito).

1. As credenciais de segurança temporárias podem ser usadas pelo aplicativo para acessar qualquer recurso da AWS exigido pelo aplicativo para operar. A função associada às credenciais de segurança temporárias e às políticas atribuídas determina o que pode ser acessado.

Use o processo a seguir para configurar sua aplicação para usar o Amazon Cognito para autenticar usuários e fornecer à aplicação acesso aos recursos da AWS. Para obter etapas específicas para realizar esse cenário, consulte a documentação do Amazon Cognito.

1. (Opcional) Cadastre-se como um desenvolvedor com Login with Amazon, Facebook, Google ou qualquer outro IdP compatível com OpenID Connect (OIDC) e configure uma ou mais aplicações com o provedor. Esta etapa é opcional, pois o Amazon Cognito também oferece suporte ao acesso não autenticado (de convidado) para seus usuários.

1. Acesse [Amazon Cognito no Console de gerenciamento da AWS](https://console.aws.amazon.com/cognito/home). Use o assistente do Amazon Cognito para criar um grupo de identidades, que é um contêiner que o Amazon Cognito usa para manter as identidades dos usuários finais organizadas para suas aplicações. Você pode compartilhar grupos de identidades entre aplicativos. Ao configurar um grupo de identidades, o Amazon Cognito cria uma ou duas funções do IAM (uma para identidades autenticadas e outra para identidades de “convidados” não autenticados) que definem permissões para os usuários do Amazon Cognito. 

1. Integre o [AWS](https://docs.amplify.aws)Amplify com a aplicação e importe os arquivos necessários para usar o Amazon Cognito.

1. Crie uma instância do provedor de credenciais do Amazon Cognito, passando o ID do grupo de identidades, o número da sua Conta da AWS e o nome do recurso da Amazon (ARN) dos perfis que você associou ao grupo de identidades. O assistente do Amazon Cognito no Console de gerenciamento da AWS fornece o código de exemplo para ajudar você a começar.

1. Quando o seu aplicativo acessa um recurso da AWS, transmite as instâncias do provedor de credenciais para o objeto do cliente, que, por sua vez, transmite as credenciais de segurança temporárias ao cliente. As permissões para as credenciais são baseadas na função ou funções que você definiu anteriormente.

Para saber mais, consulte:
+ [Faça login (Android)](https://docs.amplify.aws/lib/auth/signin/q/platform/android/) na documentação da estrutura do AWS Amplify. 
+ [Faça login (iOS)](https://docs.amplify.aws/lib/auth/signin/q/platform/ios/) na documentação da estrutura do AWS Amplify.

## federação OIDC para aplicativos móveis
<a name="id_roles_providers_oidc_manual"></a>

Para obter os melhores resultados, use o Amazon Cognito como intermediador de identidades para quase todos os cenários de federação OIDC. O Amazon Cognito é fácil de usar e fornece recursos adicionais como acesso anônimo (não autenticado) e sincronização de dados do usuário entre dispositivos e provedores. No entanto, se você já criou uma aplicação que usa federação OIDC e chama manualmente a API `AssumeRoleWithWebIdentity`, continue a usá-la, pois a aplicação continuará funcionando corretamente. 

O processo de uso de federação OIDC ***sem*** o Amazon Cognito segue esta visão geral: 

1. Cadastre-se como desenvolvedor com o provedor de identidade externa (IdP) e configure seu aplicativo com o IdP, que fornece a você um ID exclusivo para seu aplicativo. (IdPs diferentes usam terminologia diferente para este processo. Esta descrição usa o termo *configurar* para o processo de identificação de sua aplicação com o IdP.) Cada IdP fornece a você um ID de aplicativo exclusivo para esse IdP, portanto, se você configurar o mesmo aplicativo com vários IdPs, seu aplicativo terá vários IDs. Você pode configurar vários aplicativos com cada fornecedor. 

   Os links externos a seguir fornecem informações sobre como usar alguns dos provedores de identidade (IdPs) mais usados: 
   + [Centro do desenvolvedor do Login with Amazon](https://login.amazon.com/) 
   + [Adicione o login do Facebook ao seu aplicativo ou site](https://developers.facebook.com/docs/facebook-login/v2.1) no site de desenvolvedores do Facebook. 
   + [Uso de OAuth 2.0 para login (OpenID Connect)](https://developers.google.com/accounts/docs/OAuth2Login) no site de desenvolvedores do Google.
**Importante**  
Se você usar um provedor de identidade OIDC do Google, Facebook ou Amazon Cognito, não crie um provedor de identidade do IAM separado no Console de gerenciamento da AWS. A AWS tem esses provedores de identidade OIDC incorporados e disponíveis para seu uso. Ignore a etapa a seguir e vá diretamente para a criação de novas funções usando seu provedor de identidade.

1. Se você usar um IdP diferente do Google, Facebook ou Amazon Cognito compatível com OIDC, crie uma entidade de provedor de identidade do IAM para ele.

1. No IAM, [crie uma ou mais funções](id_roles_create_for-idp.md). Para cada função, defina quem pode assumir a função (a política de confiança) e quais permissões os usuários da aplicação têm (a política de permissões). Geralmente, você cria uma função para cada IdP ao qual um aplicativo dá suporte. Por exemplo, você pode criar uma função assumida por uma aplicação se o usuário fizer login por meio do Login with Amazon, uma segunda função para a mesma aplicação se o usuário fizer login por meio do Facebook e uma terceira função para a aplicação se o usuário fizer login por meio do Google. Para o relacionamento de confiança, especifique o IdP (como a Amazon.com) como o `Principal` (a entidade confiável) e inclua uma `Condition` que corresponda ao ID do aplicativo atribuído ao IdP. Exemplos de funções para diferentes provedores são descritos em [Criar um perfil para um provedor de identidade de terceiros](id_roles_create_for-idp.md). 

1. Em seu aplicativo, autentique seus usuários com o IdP. As especificações de como fazer isso variam de acordo com qual IdP você usa (Login with Amazon, Facebook ou Google) e em qual plataforma sua aplicação é executada. Por exemplo, o método de autenticação de um aplicativo Android pode ser diferente do de um aplicativo iOS ou de um aplicativo da web baseado em JavaScript.

   Normalmente, se o usuário ainda não estiver conectado, o IdP exibirá uma página de login. Depois que o IdP autentica o usuário, ele retorna um token de autenticação com informações sobre o usuário para o seu aplicativo. As informações incluídas dependem do que o IdP expõe e as informações que o usuário está disposto a compartilhar. Você pode usar essas informações em seu aplicativo.

1. Em seu aplicativo, faça uma chamada *não assinada* para a ação `AssumeRoleWithWebIdentity` para solicitar credenciais de segurança temporárias. Na solicitação, você passa o token de autenticação do IdP e especifica o nome do recurso da Amazon (ARN) para a função do IAM que você criou para esse IdP. A AWS verifica se o token é confiável e válido e, em caso afirmativo, retorna credenciais de segurança temporárias para sua aplicação com as permissões para a função que você indicou na solicitação. A resposta também inclui metadados sobre o usuário do IdP, como o ID de usuário exclusivo que o IdP associa ao usuário.

1. Usando as credenciais de segurança temporárias da resposta `AssumeRoleWithWebIdentity`, seu aplicativo faz solicitações assinadas às operações de API da AWS. As informações de ID do usuário do IdP podem diferenciar os usuários em sua aplicação. Por exemplo, você pode colocar objetos em pastas do Amazon S3 que incluam o ID do usuário como prefixos ou sufixos. Isso permite que você crie políticas de controle de acesso que bloqueiem a pasta para que somente o usuário com esse ID possa acessá-lo. Para obter mais informações, consulte [Entidades principais federadas do AWS STS](reference_policies_elements_principal.md#sts-session-principals).

1. Seu aplicativo deve armazenar em cache as credenciais de segurança temporárias para que você não precise obter novas credenciais sempre que o aplicativo precisar fazer uma solicitação à AWS. Por padrão, as credenciais são válidas por uma hora. Quando as credenciais expiram (ou antes disso), você deve fazer outra chamada para `AssumeRoleWithWebIdentity` a fim de obter um novo conjunto de credenciais de segurança temporárias. Dependendo do IdP e como eles gerenciam seus tokens, talvez você precise atualizar o token do IdP antes de fazer uma nova chamada para `AssumeRoleWithWebIdentity`, pois os tokens do IdP geralmente também expiram após um período fixo. Se você usar o AWS SDK for iOS ou o AWS SDK for Android, poderá usar a ação [AmazonSTSCredentialsProvider](https://aws.amazon.com/blogs/mobile/using-the-amazoncredentialsprovider-protocol-in-the-aws-sdk-for-ios), que gerencia as credenciais temporárias do IAM, incluindo a atualização delas conforme necessário.

# Federação OIDC
<a name="id_roles_providers_oidc"></a>

Imagine que você esteja criando uma aplicação que acesse recursos da AWS, como o GitHub Actions, que usa fluxos de trabalho para acessar o Amazon S3 e o DynamoDB. 

Ao usar esses fluxos de trabalho, você fará solicitações para os serviços da AWS que devem ser assinadas com uma chave de acesso da AWS. No entanto, é **altamente** recomendável **não** armazenar credenciais de longo prazo da AWS em aplicações externas à AWS. Em vez disso, configure suas aplicações para solicitar credenciais de segurança temporárias da AWS dinamicamente quando necessário usando a *federação OIDC*. As credenciais temporárias fornecidas são mapeadas em um perfil da AWS que têm apenas as permissões necessárias para executar as tarefas solicitadas pela aplicação.

Com a federação OIDC, não é necessário criar códigos de início de sessão personalizados nem gerenciar suas próprias identidades de usuários. Em vez disso, você pode usar o OIDC em aplicações, como o GitHub Actions ou qualquer outro IdP compatível com o [OpenID Connect (OIDC)](http://openid.net/connect/), para autenticar com o AWS. Elas recebem um token de autenticação, conhecido como JSON Web Token (JWT) e, em seguida, trocam esse token por credenciais de segurança temporárias na AWS que são mapeadas em um perfil do IAM com permissões para usar recursos específicos na sua Conta da AWS. O uso de um IdP ajuda você a manter sua Conta da AWS segura, pois não é necessário incorporar e distribuir credenciais de segurança de longo prazo com sua aplicação.

A federação OIDC oferece suporte à autenticação máquina a máquina (como pipelines de CI/CD, scripts automatizados e aplicações com tecnologia sem servidor) e à autenticação de usuário humano. Para cenários de autenticação de usuário humano em que você precisa gerenciar a inscrição, o login e os perfis de usuário, considere usar o [Amazon Cognito](https://aws.amazon.com/cognito/) como intermediador de identidades. Para obter detalhes sobre o uso do Amazon Cognito com o OIDC, consulte [Amazon Cognito para aplicativos móveis](id_federation_common_scenarios.md#id_roles_providers_oidc_cognito).

**nota**  
Os JSON Web Tokens (JWTs) emitidos pelos provedores de identidade do OpenID Connect (OIDC) contêm um prazo de validade na declaração `exp` que especifica quando o token expira. O IAM fornece uma janela de cinco minutos além do tempo de expiração especificado no JWT para considerar a distorção do relógio, conforme permitido pelo padrão [OpenID Connect (OIDC) Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html). Isso significa que os JWTs do OIDC recebidos pelo IAM após o prazo de expiração, mas dentro dessa janela de cinco minutos, são aceitos para avaliação e processamento adicionais.

**Topics**
+ [

## Recursos adicionais para federação OIDC
](#id_roles_providers_oidc_resources)
+ [

# Criar um provedor de identidade OpenID Connect (OIDC) no IAM
](id_roles_providers_create_oidc.md)
+ [

# Obter a impressão digital para um provedor de identidade OpenID Connect
](id_roles_providers_create_oidc_verify-thumbprint.md)
+ [

# Controles de provedor de identidade para provedores OIDC compartilhados
](id_roles_providers_oidc_secure-by-default.md)

## Recursos adicionais para federação OIDC
<a name="id_roles_providers_oidc_resources"></a>

Os seguintes recursos podem ajudar você a saber mais sobre a federação OIDC:
+ Saiba como usar o OpenID Connect em seus fluxos de trabalho do GitHub em [Configurar o OpenID Connect na Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)
+ [Amazon Cognito Identity](https://docs.amplify.aws/lib/auth/advanced/q/platform/android/) no *Guia do Amplify Libraries para Android* e [Amazon Cognito Identity](https://docs.amplify.aws/lib/auth/advanced/q/platform/ios/) no *Guia do Amplify Libraries para Swift*.
+ [Como usar o ID externo ao conceder acesso aos seus recursos da AWS](https://aws.amazon.com/blogs/security/how-to-use-external-id-when-granting-access-to-your-aws-resources/). O *Blog de Segurança da AWS* fornece orientação sobre como configurar com segurança o acesso entre contas e a federação de identidades externa.

# Criar um provedor de identidade OpenID Connect (OIDC) no IAM
<a name="id_roles_providers_create_oidc"></a>

*Provedores de identidade OIDC do IAM* são entidades no IAM que descrevem um serviço de provedor de identidade (IdP) externo que oferece suporte ao padrão [OpenID Connect](http://openid.net/connect/) (OIDC), como Google ou Salesforce. Você usa um provedor de identidade OIDC do IAM quando deseja estabelecer confiança entre um IdP compatível com OIDC e sua Conta da AWS. Isso será útil quando você estiver criando um aplicativo móvel ou um aplicativo web que precise acessar os recursos da AWS, mas não quiser criar um código de acesso personalizado ou gerenciar suas próprias identidades de usuários. Para ter mais informações sobre esse cenário, consulte [Federação OIDC](id_roles_providers_oidc.md).

Você pode criar e gerenciar um provedor de identidade OIDC do IAM usando o Console de gerenciamento da AWS, o AWS Command Line Interface, o Tools for Windows PowerShell ou a API do IAM.

Depois de criar um provedor de identidade OIDC do IAM, você deve criar uma ou mais funções do IAM. Função é uma identidade na AWS que não tem as próprias credenciais (como um usuário). Porém, neste contexto, um perfil é atribuído dinamicamente a uma entidade principal federada que é autenticada pelo IdP da sua organização. A função permite que o IdP de sua organização solicite credenciais de segurança temporárias para acesso à AWS. As políticas atribuídas ao perfil determinam o que os usuários podem fazer na AWS. Para criar uma função para um provedor de identidade de terceiros, consulte [Criar um perfil para um provedor de identidade de terceiros](id_roles_create_for-idp.md).

**Importante**  
Quando você configura políticas baseadas em identidade para ações que oferecem suporte a recursos do `oidc-provider`, o IAM avalia o URL completo do provedor de identidades OIDC, incluindo todos os caminhos especificados. Se o URL do seu provedor de identidades OIDC tiver um caminho, será necessário incluir esse caminho no ARN do `oidc-provider` como um valor de elemento `Resource`. Você também tem a opção de acrescentar uma barra e um curinga (`/*`) ao domínio do URL ou usar caracteres curinga (`*` e `?`) em qualquer ponto do caminho do URL. Se o URL do provedor de identidades OIDC na solicitação não corresponder ao valor definido no elemento `Resource` da política, a solicitação falhará.

Para solucionar problemas comuns com a federação OIDC do IAM, consulte [Solucionar erros relacionados ao OIDC](https://repost.aws/knowledge-center/iam-oidc-idp-federation) no re:Post AWS.

**Topics**
+ [

## Pré-requisitos: valide a configuração do seu provedor de identidade
](#manage-oidc-provider-prerequisites)
+ [

## Criar e gerenciar um provedor OIDC (console)
](#manage-oidc-provider-console)
+ [

## Criar e gerenciar um provedor de identidade OIDC do IAM (AWS CLI)
](#manage-oidc-provider-cli)
+ [

## Criar e gerenciar um provedor de identidade OIDC (API da AWS)
](#manage-oidc-provider-api)

## Pré-requisitos: valide a configuração do seu provedor de identidade
<a name="manage-oidc-provider-prerequisites"></a>

Antes de criar um provedor de identidade OIDC do IAM, é necessário ter as seguintes informações do IdP. Para obter mais informações sobre como obter informações de configuração do provedor OIDC, consulte a documentação do IdP.

1. Determine o URL publicamente disponível do seu provedor de identidade OIDC. O URL deve começar com https://. De acordo com o padrão OIDC, componentes de caminho são permitidos, mas parâmetros de consulta não são. Normalmente, o URL consiste apenas em um nome de host, como https://server.example.org ou https://example.com. O URL não deve conter um número de porta.

1. Adicione **/.well-known/openid-configuration** ao final do URL do provedor de identidade OIDC para ver o documento de configuração e os metadados disponíveis publicamente desse provedor. Você deve ter um documento de descoberta no formato JSON com o documento de configuração e os metadados do provedor que possam ser recuperados do [URL do endpoint de descoberta do provedor OpenID Connect](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig).

1. Confirme se os valores a seguir estão incluídos nas informações de configuração do provedor. Se algum desses campos estiver faltando em openid-configuration, você deverá atualizar seu documento de descoberta. Como esse processo pode variar dependendo do provedor de identidade, siga a documentação do seu IdP para concluir a tarefa.
   + issuer: o URL do seu domínio.
   + jwks\$1uri: o endpoint JSON Web Key Set (JWKS) em que o IAM obtém suas chaves públicas. Seu provedor de identidade deve incluir um endpoint JSON Web Key Set (JWKS) em openid-configuration. Esse URI define onde obter suas chaves públicas que são usadas para verificar os tokens assinados pelo provedor de identidade.
**nota**  
O JSON Web Key Set (JWKS) deve conter pelo menos uma chave e pode ter no máximo 100 chaves RSA e 100 chaves EC. Se o JWKS do provedor de identidades OIDC contiver mais de 100 chaves RSA ou 100 chaves EC, uma exceção `InvalidIdentityToken` será retornada quando a operação da API [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) for usada com um JWT assinado por um tipo de chave que exceda o limite de 100 chaves. Por exemplo, se um JWT for assinado com o algoritmo RSA e houver mais de 100 chaves RSA no JWKS do provedor, uma exceção `InvalidIdentityToken` será retornada.
   + claims\$1supported: informações sobre o usuário que ajudam a garantir que as respostas de autenticação OIDC do IdP contenham os atributos obrigatórios que a AWS utiliza em políticas do IAM para verificar as permissões de entidades principais federadas OIDC. Para obter uma lista das chaves de condição do IAM que podem ser usadas para declarações, consulte [Chaves disponíveis para federação OIDC da AWS](reference_policies_iam-condition-keys.md#condition-keys-wif).
     + aud: você deve determinar o valor da declaração de audiência que seu IdP emite em JSON Web Tokens (JWTs). A declaração de audiência (aud) é específica da aplicação e identifica os destinatários pretendidos do token. Quando você registra uma aplicação Web ou móvel em um provedor OpenID Connect, este estabelece um ID de cliente que identifica a aplicação. O ID do cliente é um identificador exclusivo da sua aplicação, transmitido na declaração aud para autenticação. A declaração aud deve corresponder ao valor de Audiência ao criar seu provedor de identidade OIDC do IAM.
     + iat: as declarações devem incluir um valor para `iat` que represente a hora em que o token de ID é emitido.
     + iss: o URL do provedor de identidade. O URL deve começar com https:// e corresponder ao URL do provedor fornecido ao IAM. De acordo com o padrão OIDC, componentes de caminho são permitidos, mas parâmetros de consulta não são. Normalmente, o URL consiste apenas em um nome de host, como https://server.example.org ou https://example.com. O URL não deve conter um número de porta.
   + response\$1types\$1supported: id\$1token
   + subject\$1types\$1supported: public
   + id\$1token\$1signing\$1alg\$1values\$1supported: RS256, RS384, RS512, ES256, ES384, ES512
**nota**  
Você pode incluir declarações adicionais, como `my_custom_claim` no exemplo abaixo. No entanto, o AWS STS ignorará a declaração.  

   ```
   {
     "issuer": "https://example-domain.com",
     "jwks_uri": "https://example-domain.com/jwks/keys",
     "claims_supported": [
       "aud",
       "iat",
       "iss",
       "name",
       "sub",
       "my_custom_claim"
     ],
     "response_types_supported": [
       "id_token"
     ],
     "id_token_signing_alg_values_supported": [
       "RS256",
       "RS384",
       "RS512",
       "ES256",
       "ES384",
       "ES512"
     ],
     "subject_types_supported": [
       "public"
     ]
   }
   ```

## Criar e gerenciar um provedor OIDC (console)
<a name="manage-oidc-provider-console"></a>

Siga estas instruções para criar e gerenciar um provedor de identidade OIDC do IAM no Console de gerenciamento da AWS.

**Importante**  
Se você estiver usando um provedor de identidade OIDC do Google, Facebook ou Amazon Cognito, não crie um provedor de identidade do IAM separado usando este procedimento. Esses provedores de identidade OIDC já estão integrados à AWS e estão disponíveis para uso. Em vez disso, siga as etapas para criar novas funções para seu provedor de identidade, consulte [Criar uma função para uma federação do OpenID Connect (console)](id_roles_create_for-idp_oidc.md).

**Para criar um provedor de identidade OIDC do IAM (console)**

1. <a name="idpoidcstep1"></a>Antes de criar um provedor de identidade OIDC do IAM, é necessário registrar sua aplicação com o IdP para receber um *ID do cliente*. O ID do cliente (também conhecido como *público*) é um identificador exclusivo para o seu aplicativo, emitido quando você registra o aplicativo com o IdP. Para obter mais informações sobre como obter um ID de cliente, consulte a documentação do IdP. 
**nota**  
A AWS protege a comunicação com provedores de identidade (IdPs) OIDC usando nossa biblioteca de autoridades de certificação (CAs) raiz confiáveis para verificar o certificado TLS do endpoint JSON Web Key Set (JWKS). Se o seu IdP do OIDC depende de um certificado que não é assinado por uma dessas CAs confiáveis, somente então protegemos a comunicação usando as impressões digitais definidas na configuração do IdP. A AWS recorrerá à verificação de impressão digital se não conseguirmos recuperar o certificado TLS ou se o TLS v1.3 for necessário.

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Identity providers (Provedores de identidade)** e, em seguida **Add provider (Adicionar provedor)**.

1. Para **Configure provider (Configurar provedor)**, escolha **OpenID Connect**. 

1. Para **URL do provedor**, digite o URL do IdP. O URL deve estar em conformidade com estas restrições:
   + O URL diferencia maiúsculas de minúsculas.
   + O URL deve começar com **https://**.
   + O URL não deve conter um número de porta. 
   + Dentro da sua Conta da AWS, cada provedor de identidade OIDC do IAM deve usar um URL exclusivo. Se você tentar enviar um URL que já foi usado por um provedor OpenID Connect no Conta da AWS, receberá um erro.

1. Em **Audience** (Público), digite o ID do cliente da aplicação que você registrou com o IdP e recebeu na [Step 1](#idpoidcstep1) e que fará solicitações para a AWS. Se você tiver IDs do cliente adicionais (também conhecidos como *públicos*) para este IdP, poderá adicioná-los, posteriormente, na página de detalhes do provedor.
**nota**  
Se seu token JWT do IdP incluir a declaração `azp`, insira esse valor como o valor de Audiência.  
Se seu provedor de identidade OIDC estiver definindo ambas as reivindicações no token `aud` e `azp`, o AWS STS usará o valor na declaração `azp` como a declaração `aud`.

1. (Opcional) Em **Add tags** (Adicionar etiquetas), você pode adicionar pares de chave-valor para ajudar na identificação e organização de seus IdPs. Você também pode usar tags para controlar o acesso aos recursos da AWS. Para saber mais sobre como etiquetar provedores de identidade OIDC do IAM, consulte [Marcar provedores de identidades OpenID Connect (OIDC)](id_tags_oidc.md). Escolha **Adicionar Tag**. Insira valores para cada par de chave-valor de tag. 

1. Verifique as informações fornecidas. Quando terminar, escolha **Add provider (Adicionar provedor)**. O IAM tentará recuperar e usar a impressão digital da CA intermediária superior do certificado do servidor OIDC IdP para criar o provedor de identidade OIDC do IAM.
**nota**  
A cadeia de certificados do provedor de identidade de OIDC deverá começar com o URL do domínio ou do emissor, depois com o certificado intermediário e terminar com o certificado raiz. Se a ordem da cadeia de certificados for diferente ou incluir certificados duplicados ou adicionais, você receberá um erro de incompatibilidade de assinatura e o STS falhará ao validar o JSON Web Token (JWT). Corrija a ordem dos certificados na cadeia retornados do servidor para resolver o erro. Para obter mais informações sobre os padrões da cadeia de certificados, consulte [certificate\$1list in RFC 5246](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.2) no site RFC Series.

1. Atribua uma função do IAM ao seu provedor de identidade para fornecer identidades de usuário externo gerenciadas pelo seu provedor de identidade, permissões para acessar recursos da AWS em sua conta. Para saber mais sobre como criar funções para a federação de identidades, consulte [Criar um perfil para um provedor de identidade de terceiros](id_roles_create_for-idp.md).
**nota**  
Os IdPs OIDC usados em uma política de confiança de perfil devem estar na mesma conta que o perfil que confia nela.

**Para adicionar ou remover uma impressão digital de um provedor de identidade OIDC do IAM (console)**
**nota**  
A AWS protege a comunicação com provedores de identidade (IdPs) OIDC usando nossa biblioteca de autoridades de certificação (CAs) raiz confiáveis para verificar o certificado TLS do endpoint JSON Web Key Set (JWKS). Se o seu IdP do OIDC depende de um certificado que não é assinado por uma dessas CAs confiáveis, somente então protegemos a comunicação usando as impressões digitais definidas na configuração do IdP. A AWS recorrerá à verificação de impressão digital se não conseguirmos recuperar o certificado TLS ou se o TLS v1.3 for necessário.

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Identity providers (Provedores de identidade)**. Em seguida, escolha o nome do provedor de identidade do IAM que você deseja atualizar.

1. Escolha a guia **Verificação de endpoint** e, na seção **Impressões digitais**, escolha **Gerenciar**. Para inserir um novo valor de impressão digital, escolha **Add thumbprint (Adicionar impressão digital)**. Para remover uma impressão digital, escolha **Remove (Remover)** ao lado do item que deseja remover.
**nota**  
Um provedor de identidade OIDC do IAM deve ter, pelo menos, uma impressão digital e, no máximo, cinco impressões digitais.

    Quando concluir, escolha **Save changes (Salvar alterações)**.

**Para adicionar um público para um provedor de identidade OIDC do IAM (console)**

1. No painel de navegação, escolha **Identity providers** (Provedores de identidade) e escolha o nome do provedor de identidade do IAM que você deseja atualizar.

1. Na seção **Audiences (Público-alvo)**, escolha **Actions (Ações)** e selecione **Add audience (Adicionar público-alvo)**. 

1. Digite o ID do cliente da aplicação que você registrou com o IdP e recebeu em [Step 1](#idpoidcstep1) e que fará solicitações para a AWS. Em seguida, escolha **Add audiences (Adicionar público-alvo)**.
**nota**  
Um provedor de identidade OIDC do IAM deve ter pelo menos um público e, no máximo, 100 públicos.

**Para remover um público de um provedor de identidade OIDC do IAM (console)**

1. No painel de navegação, escolha **Identity providers** (Provedores de identidade) e escolha o nome do provedor de identidade do IAM que você deseja atualizar.

1. Na seção **Audiences (Público-alvo)**, selecione o botão de opção ao lado do público-alvo que você deseja remover e, em seguida, selecione **Actions (Ações)**.

1.  Escolha **Remove audience (Remover público-alvo)**. Uma nova janela é aberta.

1. Se você remover um público-alvo, as identidades federadas com o público não poderão assumir funções associadas ao público. Na janela, leia o aviso e confirme se deseja remover o público-alvo digitando a palavra `remove` no campo.

1. Escolha **Remove (Remover)** para remover o público-alvo.

**Para excluir um provedor de identidade OIDC do IAM (console)**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Identity providers (Provedores de identidade)**. 

1. Marque a caixa de seleção ao lado do provedor de identidade do IAM que você deseja excluir. Uma nova janela é aberta.

1. Confirme se deseja excluir o provedor digitando a palavra `delete` no campo. Em seguida, selecione **Excluir**.

## Criar e gerenciar um provedor de identidade OIDC do IAM (AWS CLI)
<a name="manage-oidc-provider-cli"></a>

Você pode usar os comandos da AWS CLI a seguir para criar e gerenciar provedores de identidade OIDC do IAM.

**Para criar um provedor de identidade OIDC do IAM (AWS CLI)**

1. (Opcional) Para obter uma lista de todos os provedores de identidade OIDC do IAM na sua conta da AWS, execute o seguinte comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html)

1. Para criar um novo provedor de identidade OIDC do IAM, execute o seguinte comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/create-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-open-id-connect-provider.html)

**Para atualizar a lista de impressões digitais de certificado do servidor de um provedor de identidade OIDC do IAM existente (AWS CLI)**
+ Para atualizar a lista de impressões digitais de certificado do servidor de um provedor de identidade OIDC do IAM, execute o seguinte comando:
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/update-open-id-connect-provider-thumbprint.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-open-id-connect-provider-thumbprint.html)

**Para etiquetar um provedor de identidade OIDC do IAM existente (AWS CLI)**
+ Para etiquetar um provedor de identidade OIDC do IAM existente, execute o seguinte comando:
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/tag-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-open-id-connect-provider.html)

**Para listar etiquetas para um provedor de identidade OIDC do IAM existente (AWS CLI)**
+ Para listar etiquetas para um provedor de identidade OIDC do IAM existente, execute o seguinte comando:
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-provider-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-provider-tags.html)

**Para remover etiquetas em um provedor de identidade OIDC do IAM (AWS CLI)**
+ Para remover etiquetas de um provedor de identidade OIDC do IAM existente, execute o seguinte comando:
  + [https://docs.aws.amazon.com/cli/latest/reference/iam/untag-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-open-id-connect-provider.html)

**Para adicionar ou remover um ID de cliente de um provedor de identidade OIDC do IAM existente (AWS CLI)**

1. (Opcional) Para obter uma lista de todos os provedores de identidade OIDC do IAM na sua conta da AWS, execute o seguinte comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html)

1. (Opcional) Para obter informações detalhadas sobre um provedor de identidade OIDC do IAM, execute o seguinte comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html)

1. Para adicionar um novo ID do cliente a um provedor de identidade OIDC do IAM existente, execute o seguinte comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/add-client-id-to-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/add-client-id-to-open-id-connect-provider.html)

1. Para remover um cliente de um provedor de identidade OIDC do IAM existente, execute o seguinte comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/remove-client-id-from-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-client-id-from-open-id-connect-provider.html)

**Para excluir um provedor de identidade OIDC do IAM (AWS CLI)**

1. (Opcional) Para obter uma lista de todos os provedores de identidade OIDC do IAM na sua conta da AWS, execute o seguinte comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-providers.html)

1. (Opcional) Para obter informações detalhadas sobre um provedor de identidade OIDC do IAM, execute o seguinte comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-open-id-connect-provider.html)

1. Para excluir um provedor de identidade OIDC do IAM, execute o seguinte comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-open-id-connect-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-open-id-connect-provider.html)

## Criar e gerenciar um provedor de identidade OIDC (API da AWS)
<a name="manage-oidc-provider-api"></a>

Você pode usar os comandos da API do IAM a seguir para criar e gerenciar provedores OIDC.

**Para criar um provedor de identidade OIDC do IAM (API da AWS)**

1. (Opcional) Para obter uma lista de todos os provedores de identidade OIDC do IAM em sua conta da AWS, chame a seguinte operação:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html)

1. Para criar um novo provedor de identidade OIDC do IAM, chame a seguinte operação: 
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateOpenIDConnectProvider.html)

**Para atualizar a lista de impressões digitais de certificado do servidor de um provedor de identidade OIDC do IAM existente (API da AWS)**
+ Para atualizar a lista de impressões digitais de certificado do servidor de um provedor de identidade OIDC do IAM, chame a seguinte operação:
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateOpenIDConnectProviderThumbprint.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateOpenIDConnectProviderThumbprint.html)

**Para etiquetar um provedor de identidade OIDC do IAM existente (API da AWS)**
+ Para etiquetar um provedor de identidade OIDC do IAM existente, chame a seguinte operação:
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagOpenIDConnectProvider.html)

**Para listar etiquetas para um provedor de identidade OIDC do IAM existente (API da AWS)**
+ Para listar etiquetas para um provedor de identidade OIDC do IAM existente, chame a seguinte operação:
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviderTags.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviderTags.html)

**Para remover etiquetas em um provedor de identidade OIDC do IAM existente (API da AWS)**
+ Para remover etiquetas de um provedor de identidade OIDC do IAM existente, chame a seguinte operação:
  + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagOpenIDConnectProvider.html)

**Para adicionar ou remover um ID de cliente de um provedor de identidade OIDC do IAM existente (API da AWS)**

1. (Opcional) Para obter uma lista de todos os provedores de identidade OIDC do IAM em sua conta da AWS, chame a seguinte operação:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html)

1. (Opcional) Para obter informações detalhadas sobre um provedor de identidade OIDC do IAM, chame a seguinte operação: 
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html)

1. Para adicionar um novo ID do cliente a um provedor de identidade OIDC do IAM existente, chame a seguinte operação: 
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddClientIDToOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddClientIDToOpenIDConnectProvider.html)

1. Para remover um ID do cliente de um provedor de identidade OIDC do IAM existente, chame a seguinte operação:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveClientIDFromOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveClientIDFromOpenIDConnectProvider.html)

**Para excluir um provedor de identidade OIDC do IAM (API da AWS)**

1. (Opcional) Para obter uma lista de todos os provedores de identidade OIDC do IAM em sua conta da AWS, chame a seguinte operação: 
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviders.html)

1. (Opcional) Para obter informações detalhadas sobre um provedor de identidade OIDC do IAM, chame a seguinte operação:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOpenIDConnectProvider.html)

1. Para excluir um provedor de identidade OIDC do IAM, chame a seguinte operação:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteOpenIDConnectProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteOpenIDConnectProvider.html)

# Obter a impressão digital para um provedor de identidade OpenID Connect
<a name="id_roles_providers_create_oidc_verify-thumbprint"></a>

Quando você [cria um provedor de identidade OpenID Connect (OIDC)](id_roles_providers_create_oidc.md) no IAM, o IAM exige uma impressão digital para a autoridade de certificação (CA) intermediária superior que assinou o certificado usado pelo provedor de identidades (IdP). A impressão digital é uma assinatura para o certificado da CA que foi usada para emitir o certificado para o IdP compatível com OIDC. Ao criar um provedor de identidade OIDC do IAM, você confia nas identidades autenticadas por esse IdP para ter acesso à sua Conta da AWS. Ao usar a impressão digital do certificado da CA, você confiará em qualquer certificado emitido pela CA que tenha o mesmo nome do DNS registrado. Isso elimina a necessidade de atualizar confianças em cada conta quando você renovar o certificado de assinatura do IdP.

**Importante**  
Na maioria dos casos, o servidor de federação usa dois certificados diferentes:  
O primeiro estabelece uma conexão HTTPS entre a AWS e seu IdP. Isso deve ser emitido por uma CA de raiz pública confiável, como o AWS Certificate Manager. Isso permite que o cliente verifique a confiabilidade e o status do certificado.
O segundo é usado para criptografar tokens e deve ser assinado por uma CA de *raiz* privada ou pública.

É possível criar um provedor de identidade OIDC do IAM com [a AWS Command Line Interface, o Tools for Windows PowerShell ou a API do IAM](id_roles_providers_create_oidc.md#manage-oidc-provider-cli). Ao usar esses métodos, você tem a opção de fornecer manualmente uma impressão digital. Se você optar por não incluir uma impressão digital, o IAM recuperará a impressão digital da CA intermediária superior do certificado do servidor do IdP OIDC. Se você optar por incluir uma impressão digital, será necessário obtê-la manualmente e fornecê-la para a AWS.

Quando você cria um provedor de identidade OIDC com o[ console do IAM](id_roles_providers_create_oidc.md), o IAM tenta recuperar a impressão digital da CA intermediária superior do certificado de servidor IdP do OIDC para você. 

Recomendamos que você também obtenha a impressão digital para o seu IdP OIDC manualmente e verifique se a impressão digital correta foi recuperada pelo IAM. Para obter mais informações sobre como obter impressões digitais do certificado, consulte as seções a seguir.

**nota**  
A AWS protege a comunicação com provedores de identidade (IdPs) OIDC usando nossa biblioteca de autoridades de certificação (CAs) raiz confiáveis para verificar o certificado TLS do endpoint JSON Web Key Set (JWKS). Se o seu IdP do OIDC depende de um certificado que não é assinado por uma dessas CAs confiáveis, somente então protegemos a comunicação usando as impressões digitais definidas na configuração do IdP. A AWS recorrerá à verificação de impressão digital se não conseguirmos recuperar o certificado TLS ou se o TLS v1.3 for necessário.

## Obter impressão digital do certificado
<a name="oidc-obtain-thumbprint"></a>

É possível usar um navegador da Web e a ferramenta de linha de comando OpenSSL para obter a impressão digital do certificado para um provedor OIDC. No entanto, não é necessário obter manualmente a impressão digital do certificado para criar um provedor de identidade OIDC do IAM. É possível usar o seguinte procedimento para obter a impressão digital do certificado do provedor OIDC.

**Para obter a impressão digital para um IdP OIDC**

1. A fim de obter a impressão digital para um IdP OIDC, você precisa obter a ferramenta de linha de comando OpenSSL. Use esta ferramenta para baixar a cadeia de certificados do IdP OIDC e gerar uma impressão digital do certificado final na cadeia de certificados. Se você precisar instalar e configurar o OpenSSL, siga as instruções em [Instalar o OpenSSL](#oidc-install-openssl) e [Configurar o OpenSSL](#oidc-configure-openssl).

1. Comece com o URL do IdP OIDC (por exemplo, `https://server.example.com`) e, em seguida, adicione `/.well-known/openid-configuration` para formar o URL para o documento de configuração do IdP, como o seguinte:

   **https://*server.example.com*/.well-known/openid-configuration**

   Abra este URL em um navegador da Web, substituindo *server.example.com* pelo nome do seu servidor IdP. 

1. <a name="thumbstep2"></a>No documento exibido, use o recurso **Find** (Localizar) do navegador da Web para localizar o texto `"jwks_uri"`. Imediatamente após o texto `"jwks_uri"` você verá dois pontos (:) seguidos por um URL. Copie o nome de domínio totalmente qualificado do URL. Não inclua `https://` nem qualquer caminho que venha após o domínio de nível superior. 

   ```
   {
    "issuer": "https://accounts.example.com",
    "authorization_endpoint": "https://accounts.example.com/o/oauth2/v2/auth",
    "device_authorization_endpoint": "https://oauth2.exampleapis.com/device/code",
    "token_endpoint": "https://oauth2.exampleapis.com/token",
    "userinfo_endpoint": "https://openidconnect.exampleapis.com/v1/userinfo",
    "revocation_endpoint": "https://oauth2.exampleapis.com/revoke",
    "jwks_uri": "https://www.exampleapis.com/oauth2/v3/certs",
   ...
   ```

1. Use a ferramenta de linha de comando OpenSSL para executar o comando a seguir. Substitua *keys.example.com* pelo nome de domínio que você obteve em [Step 3](#thumbstep2).

   ```
   openssl s_client -servername keys.example.com -showcerts -connect keys.example.com:443
   ```

1. Na janela de comando, role até ver um certificado semelhante ao exemplo a seguir. Se você vir mais de um certificado, encontre o último certificado exibido (no final da saída do comando). Ele contém o certificado da principal CA intermediária na cadeia de autoridade de certificação.

   ```
   -----BEGIN CERTIFICATE-----
    MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
    VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6
    b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd
    BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN
    MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD
    VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z
    b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt
    YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ
    21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
    rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
    Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4
    nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
    FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb
    NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=
    -----END CERTIFICATE-----
   ```

   Copie o certificado (incluindo as linhas `-----BEGIN CERTIFICATE-----` e `-----END CERTIFICATE-----`) e cole-o em um arquivo de texto. Em seguida, salve o arquivo com o nome **certificate.crt**.
**nota**  
A cadeia de certificados do provedor de identidade de OIDC deverá começar com o URL do domínio ou do emissor, incluir quaisquer certificados intermediários (caso presentes) e terminar com o certificado raiz. Se a ordem da cadeia de certificados for diferente ou incluir certificados duplicados ou adicionais, você receberá um erro de incompatibilidade de assinatura e o STS falhará ao validar o JSON Web Token (JWT). Corrija a ordem dos certificados na cadeia retornados do servidor para resolver o erro. Para obter mais informações sobre os padrões da cadeia de certificados, consulte [certificate\$1list in RFC 5246](https://www.rfc-editor.org/rfc/rfc5246#section-7.4.2) no site RFC Series.

1. Use a ferramenta de linha de comando OpenSSL para executar o comando a seguir.

   ```
   openssl x509 -in certificate.crt -fingerprint -sha1 -noout
   ```

   Sua janela de comando exibe a miniatura do certificado, que é similar ao exemplo a seguir:

   ```
   SHA1 Fingerprint=99:0F:41:93:97:2F:2B:EC:F1:2D:DE:DA:52:37:F9:C9:52:F2:0D:9E
   ```

   Remova os caracteres de dois pontos (:) desta string para produzir a impressão digital final, desta forma:

   ```
   990F4193972F2BECF12DDEDA5237F9C952F20D9E
   ```

1. Se você estiver criando o provedor de identidade OIDC do IAM com a AWS CLI, o Tools for Windows PowerShell ou a API do IAM, é opcional fornecer uma impressão digital. Se você optar por não incluir uma impressão digital durante a criação, o IAM recuperará a impressão digital da CA intermediária superior do certificado do servidor do IdP OIDC. Depois que o provedor de identidade OIDC do IAM for criado, você poderá comparar essa impressão digital com a impressão digital recuperada pelo IAM.

   Se você estiver criando o provedor de identidade OIDC do IAM no console do IAM, o console tenta recuperar a impressão digital da CA intermediária superior do certificado de servidor IdP do OIDC para você. É possível comparar essa impressão digital com a impressão digital recuperada pelo IAM. Depois que o provedor de identidade OIDC do IAM for criado, você poderá ver a impressão digital do provedor de identidade OIDC do IAM na guia **Verificação de endpoint** na página do console **Resumo** do provedor OIDC.
**Importante**  
Se a impressão digital obtida não corresponder à que você vir nos detalhes de impressão digital do provedor de identidade OIDC do IAM, você não deve usar o provedor OIDC. Em vez disso, você deve excluir o provedor OIDC criado e tentar criar o provedor OIDC novamente depois de um tempo. Verifique se as impressões digitais coincidem antes de usar o provedor. Se as impressões digitais ainda não coincidirem após uma segunda tentativa, use o [Fórum do IAM](https://forums.aws.amazon.com/forum.jspa?forumID=76) para entrar em contato com a AWS.

## Instalar o OpenSSL
<a name="oidc-install-openssl"></a>

Se você ainda não tiver o OpenSSL instalado, siga as instruções descritas nesta seção.

**Para instalar o OpenSSL no Linux ou Unix**

1. Acesse [OpenSSL: Source, Tarballs](https://openssl.org/source/) (https://openssl.org/source/).

1. Baixe a fonte mais recente e crie o pacote.

**Para instalar o OpenSSL no Windows**

1. Acesse[OpenSSL: distribuições binárias](https://wiki.openssl.org/index.php/Binaries)(https://wiki.openssl.org/index.php/Binaries) para obter uma lista de sites por meio dos quais você pode instalar a versão do Windows.

1. Siga as instruções no site selecionado para iniciar a instalação.

1. Se for solicitado que você instale os **Redistribuíveis do Microsoft Visual C\$1\$1 2008** e eles ainda não estiverem instalados no seu sistema, escolha o link de download apropriado para o seu ambiente. Siga as instruções fornecidas pelo **Assistente de instalação de redistribuível do Microsoft Visual C\$1\$1 2008**.
**nota**  
Caso não tenha certeza de que os redistribuíveis do Microsoft Visual C\$1\$1 2008 já estão instalados no seu sistema, você poderá tentar instalar o OpenSSL primeiro. O instalador do OpenSSL exibe um alerta se os redistribuíveis do Microsoft Visual C\$1\$1 2008 ainda não estiverem instalados. Instale a arquitetura (32 bits ou 64 bits) que corresponde à versão do OpenSSL que você instalou.

1. Depois de ter instalado os redistribuíveis do Microsoft Visual C\$1\$1 2008, selecione a versão apropriada dos binários OpenSSL para o seu ambiente e salve o arquivo localmente. Inicie o **Assistente de configuração do OpenSSL**.

1. Siga as instruções descritas no **OpenSSL Setup Wizard** (Assistente de configuração do OpenSSL).

## Configurar o OpenSSL
<a name="oidc-configure-openssl"></a>

Antes de usar comandos OpenSSL, você deve configurar o sistema operacional para que ele tenha informações sobre o local em que o OpenSSL está instalado.

**Para configurar o OpenSSL no Linux ou no Unix**

1. Na linha de comando, defina a variável `OpenSSL_HOME` para o local da instalação do OpenSSL:

   ```
   $ export OpenSSL_HOME=path_to_your_OpenSSL_installation
   ```

1. Defina o caminho para incluir a instalação do OpenSSL:

   ```
   $ export PATH=$PATH:$OpenSSL_HOME/bin
   ```
**nota**  
Todas as alterações feitas nas variáveis de ambiente com o comando `export` são válidas apenas para a sessão atual. É possível fazer alterações persistentes nas variáveis de ambiente definindo-as no arquivo de configuração do shell. Para obter mais informações, consulte a documentação do seu sistema operacional.

**Para configurar o OpenSSL no Windows**

1. Abra a janela **Command Prompt** (Prompt de comando).

1. Defina a variável `OpenSSL_HOME` para o local da instalação do OpenSSL:

   ```
   C:\> set OpenSSL_HOME=path_to_your_OpenSSL_installation
   ```

1. Defina a variável `OpenSSL_CONF` para o local do arquivo de configuração em sua instalação do OpenSSL:

   ```
   C:\> set OpenSSL_CONF=path_to_your_OpenSSL_installation\bin\openssl.cfg
   ```

1. Defina o caminho para incluir a instalação do OpenSSL:

   ```
   C:\> set Path=%Path%;%OpenSSL_HOME%\bin
   ```
**nota**  
Todas as alterações feitas nas variáveis de ambiente do Windows em uma janela **Command Prompt** (Prompt de comando) são válidas apenas para a sessão de linha de comando atual. É possível fazer alterações persistentes nas variáveis de ambiente definindo-as como propriedades do sistema. Os procedimentos exatos dependem da versão do Windows que você está usando. (Por exemplo, no Windows 7, abra **Control Panel** (Painel de Controle), **System and Security** (Sistema e Segurança), **System** (Sistema). Em seguida, escolha **Advanced system settings** (Configurações avançadas do sistema), guia **Advanced** (Avançado), **Environment Variables** (Variáveis de ambiente).) Para obter mais informações, consulte a documentação do Windows.

# Controles de provedor de identidade para provedores OIDC compartilhados
<a name="id_roles_providers_oidc_secure-by-default"></a>

Para provedores de identidade (IdPs) OpenID Connect (OIDC) compartilhados reconhecidos, o IAM exige uma avaliação explícita de declarações específicas nas políticas de confiança de perfis. Essas declarações obrigatórias, chamadas de *controles de provedor de identidade*, são avaliadas pelo IAM durante a criação do perfil e as atualizações da política de confiança. Se a política de confiança do perfil não avaliar os controles exigidos pelo IdP OIDC compartilhado, a criação ou atualização do perfil falhará. Isso garante que somente identidades autorizadas da organização pretendida possam assumir perfis e acessar recursos da AWS. Esse controle de segurança é crucial quando os provedores OIDC são compartilhados entre vários clientes da AWS.



Os controles do provedor de identidade não serão avaliados pelo IAM para as políticas de confiança de perfis OIDC existentes. Para quaisquer modificações na política de confiança do perfil para perfis OIDC existentes, o IAM exigirá que os controles do provedor de identidade sejam incluídos na política de confiança do perfil.

## Tipos de provedores OIDC
<a name="id_roles_providers_oidc_idp_types"></a>

O IAM categoriza os provedores de identidade OIDC em dois tipos distintos: **privados** e **compartilhados**. Um IdP OIDC privado pode pertencer e ser gerenciado por uma única organização ou pode ser um locatário de um provedor de SaaS, com seu URL do emissor OIDC servindo como um identificador exclusivo específico para essa organização. Por outro lado, um IdP OIDC compartilhado é utilizado por várias organizações, onde o URL do emissor OIDC pode ser idêntico para todas as organizações que usam esse provedor de identidade compartilhado.

A tabela abaixo descreve as principais diferenças entre provedores OIDC privados e compartilhados:


| Característica | Provedor OIDC privado | Provedor OIDC compartilhado | 
| --- | --- | --- | 
|  Emissor  |  Exclusivo para a organização  |  Compartilhado entre várias organizações  | 
|  Informações de locação  |  Comunicado por meio de emissor exclusivo  |  Comunicado por meio de declarações no JWT  | 
|  Requisitos da política de confiança  |  Não há necessidade de avaliação da declaração específica  |  A avaliação de declarações específicas é necessária  | 

## Provedores de identidade OIDC compartilhados com controles de provedores de identidade
<a name="id_roles_providers_oidc_idp_shared_oidc_secure_support"></a>

Quando você cria ou modifica um provedor OIDC no IAM, o sistema identifica e avalia automaticamente as declarações necessárias para provedores OIDC compartilhados reconhecidos. Se os controles do provedor de identidade não estiverem configurados na política de confiança do perfil, a criação ou atualização do perfil falhará com um erro MalformedPolicyDocument.

A tabela a seguir lista os provedores OIDC compartilhados que exigem controles de provedores de identidades nas políticas de confiança de perfis e informações adicionais para ajudar a configurar provedores de identidades.


| IdP OIDC | URL OIDC | Declaração de locação | Declarações necessárias | 
| --- | --- | --- | --- | 
| [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html) |  `cognito-identity.amazonaws.com`  | aud |  `cognito-identity.amazonaws.com:aud`  | 
| [Azure Sentinel](https://learn.microsoft.com/en-us/azure/defender-for-cloud/sentinel-connected-aws) |  https://sts.windows.net/33e01921-4d64-4f8c-a055-5bdaffd5e33d  |  sts:RoleSessionName  |  sts:RoleSessionName  | 
| [Buildkite](https://buildkite.com/docs/pipelines/security/oidc/aws) |  https://agent.buildkite.com  |  sub  |  agent.buildkite.com:sub  | 
| [Codefresh SaaS](https://codefresh.io/docs/docs/integrations/oidc-pipelines/) | https://oidc.codefresh.io | sub |  oidc.codefresh.io:sub  | 
| [DVC Studio](https://dvc.org/doc/studio/user-guide/openid-connect) | https://studio.datachain.ai/api | sub |  studio.datachain.ai/api:sub  | 
| [Ações do GitHub](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) | https://token.actions.githubusercontent.com | sub |  token.actions.githubusercontent.com:sub  | 
| [Streaming do log de auditoria do GitHub](https://docs.github.com/en/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise) | https://oidc-configuration.audit-log.githubusercontent.com | sub |  oidc-configuration.audit-log.githubusercontent.com:sub  | 
| [vstoken GitHub](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) | https://vstoken.actions.githubusercontent.com | sub |  vstoken.actions.githubusercontent.com:sub  | 
| [GitLab](https://docs.gitlab.com/ci/cloud_services/aws/) | https://gitlab.com | sub |  gitlab.com:sub  | 
| [IBM Turbonomic SaaS\$1](https://www.ibm.com/docs/en/tarm/8.16.x?topic=turbonomic-setting-up-aws-iam-role-saas-deployments) |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/id_roles_providers_oidc_secure-by-default.html)  | sub |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/id_roles_providers_oidc_secure-by-default.html)  | 
| [Pulumi Cloud](https://www.pulumi.com/docs/pulumi-cloud/deployments/oidc/aws/) | https://api.pulumi.com/oidc | aud |  api.pulumi.com/oidc:aud  | 
| [sandboxes.cloud](https://docs.sandboxes.cloud/docs/cloud-resources-setup) | https://sandboxes.cloud | aud |  sandboxes.cloud:aud  | 
| [Scalr](https://docs.scalr.io/docs/aws) | https://scalr.io | sub |  scalr.io:sub  | 
| [Shisho Cloud](https://shisho.dev/docs/g/getting-started/integrate-apps/aws/) | https://tokens.cloud.shisho.dev | sub |  tokens.cloud.shisho.dev:sub  | 
| [Terraform Cloud](https://developer.hashicorp.com/terraform/cloud-docs/workspaces/dynamic-provider-credentials/aws-configuration) | https://app.terraform.io | sub |  app.terraform.io:sub  | 
| [Upbound](https://docs.upbound.io/providers/provider-aws/authentication/) | https://proidc.upbound.io | sub |  proidc.upbound.io:sub  | 
| [Endpoint global do Vercel](https://vercel.com/docs/oidc/reference) | https://oidc.vercel.com | aud |  oidc.vercel.com:aud  | 

\$1 O IBM Turbonomic atualiza periodicamente seu URL de emissor do OIDC com novas versões da plataforma. Adicionaremos outros emissores OIDC do Turbonomic no escopo como um provedor compartilhado conforme necessário.

Para quaisquer novos IdPs OIDC que o IAM identifique como compartilhados, os controles de provedor de identidade necessários para as políticas de confiança de perfis serão documentados e aplicados de maneira semelhante.

## Recursos adicionais
<a name="concept_additional_resources"></a>

Recursos adicionais:
+ Para obter mais informações sobre como criar um perfil IAM para federação OIDC, consulte [Criar uma função para uma federação do OpenID Connect (console)](id_roles_create_for-idp_oidc.md).
+ Para obter uma lista das chaves de condição do IAM que podem ser usadas para declarações, consulte [Chaves disponíveis para federação OIDC da AWS](reference_policies_iam-condition-keys.md#condition-keys-wif).

# Federação SAML 2.0
<a name="id_roles_providers_saml"></a>

A AWS dá suporte à federação de identidades com o [SAML 2.0 (Security Assertion Markup Language 2.0)](https://wiki.oasis-open.org/security), um padrão aberto que muitos provedores de identidade (IdPs) usam. Esse recurso permite a autenticação única (SSO) federada, para que os usuários possam fazer login no Console de gerenciamento da AWS ou chamar as operações de API da AWS sem que você precise criar um usuário do IAM para todos em sua organização. Ao usar o SAML, simplifique o processo de configuração da federação com a AWS, pois poderá usar o serviço do IdP, em vez de [gravar o código de proxy de identidade personalizado](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingFedTokens.html).

**nota**  
A federação de identidade SAML do IAM é compatível com respostas SAML criptografadas de provedores de identidade (IdPs) federados baseados em SAML. O IAM Identity Center e o Amazon Cognito não são compatíveis com declarações de SAML criptografadas provenientes de provedores de identidade SAML do IAM.  
É possível adicionar indiretamente compatibilidade com declarações de SAML criptografadas à federação do banco de identidades do Amazon Cognito com grupos de usuários do Amazon Cognito. Os grupos de usuários têm uma federação SAML que é independente da federação SAML do IAM e é compatível com [assinatura e criptografia de SAML](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-SAML-signing-encryption.html). Embora esse atributo não se estenda diretamente aos bancos de identidades, os grupos de usuários podem ser IdPs dos bancos de identidades. Para usar a criptografia SAML com bancos de identidades, adicione um provedor de SAML com criptografia a um grupo de usuários que seja um IdP de um banco de identidades.  
Seu provedor de SAML deverá ser capaz de criptografar declarações de SAML com uma chave fornecida pelo seu grupo de usuários. Os grupos de usuários não aceitarão declarações criptografadas com um certificado fornecido pelo IAM.

A federação do IAM é compatível com estes casos de uso: 
+ [**Acesso federado para permitir que um usuário ou aplicativo na sua organização chame operações de API da AWS**](#CreatingSAML-configuring). Esse caso de uso é abordado na seção a seguir. Use uma declaração do SAML (como parte da resposta de autenticação) gerada na sua organização para obter credenciais de segurança temporárias. Este cenário é semelhante a outros cenários de federação compatíveis com o IAM, como os descritos em [Solicitar credenciais de segurança temporárias](id_credentials_temp_request.md) e [Federação OIDC](id_roles_providers_oidc.md). No entanto, os IdPs baseados no SAML 2.0 da sua organização lidam com muitos detalhes em tempo de execução para realizar a verificação de autenticação e autorização.
+ [**Logon único (SSO) baseado na web para o Console de gerenciamento da AWS da sua organização**](id_roles_providers_enable-console-saml.md). Os usuários podem entrar em um portal em sua organização hospedado por um IdP compatível com SAML 2.0, selecionar uma opção para acessar a AWS e ser redirecionado para o console sem precisar fornecer informações de login adicionais. Você pode usar um IdP do SAML de terceiros para estabelecer acesso ao SSO para o console ou pode criar um IdP personalizado para habilitar o acesso ao console para os usuários externos. Para obter mais informações sobre a criação de um IdP personalizado, consulte [Habilitar o acesso do intermediador de identidades personalizado ao console da AWS](id_roles_providers_enable-console-custom-url.md).

**Topics**
+ [

## Usar a federação baseada em SAML para acesso da API à AWS
](#CreatingSAML-configuring)
+ [

## Visão geral da configuração de federação baseada em SAML 2.0
](#CreatingSAML-configuring-IdP)
+ [

## Visão geral da função para permitir acesso federado do SAML aos seus recursos da AWS
](#CreatingSAML-configuring-role)
+ [

## Identificar exclusivamente os usuários na federação baseada em SAML
](#CreatingSAML-userid)
+ [

# Criar um provedor de identidades SAML no IAM
](id_roles_providers_create_saml.md)
+ [

# Configurar o IdP SAML 2.0 com objeto de confiança de terceira parte confiável e adição de declarações
](id_roles_providers_create_saml_relying-party.md)
+ [

# Integrar provedores de soluções SAML de terceiros com a AWS
](id_roles_providers_saml_3rd-party.md)
+ [

# Configurar declarações SAML para a resposta de autenticação
](id_roles_providers_create_saml_assertions.md)
+ [

# Habilitar o acesso das entidades principais federadas do SAML 2.0 ao Console de gerenciamento da AWS
](id_roles_providers_enable-console-saml.md)
+ [

# Visualizar uma resposta do SAML no navegador
](troubleshoot_saml_view-saml-response.md)

## Usar a federação baseada em SAML para acesso da API à AWS
<a name="CreatingSAML-configuring"></a>

Imagine que você deseja fornecer uma maneira para os funcionários copiarem dados de seus computadores para uma pasta de backup. Crie um aplicativo que possa ser executado pelos usuários em seus computadores. No backend, a aplicação lê e grava objetos em um bucket do Amazon S3. Os usuários não têm acesso direto à AWS. Em vez disso, o processo seguinte é usado:

![\[Obter credenciais temporárias de segurança baseadas em uma declaração do SAML\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/saml-based-federation-diagram.png)


1. Um usuário na sua organização usa um aplicativo do cliente para solicitar a autenticação do IdP da sua organização.

1. O IdP autentica o usuário em relação ao armazenamento de identidades da sua organização.

1. O IdP cria uma declaração do SAML com informações sobre o usuário e a envia para o aplicativo do cliente. Quando você habilita a criptografia de SAML para um IdP SAML do IAM, essa declaração é criptografada por seu IdP externo.

1. O aplicativo do cliente chama a API do AWS STS [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html), transmitindo o ARN do provedor SAML, o ARN da função a ser assumida e a declaração do SAML do IdP. Se a criptografia estiver habilitada, a declaração transmitida por meio da aplicação cliente permanecerá criptografada em trânsito.

1. (Opcional) O AWS STS usa a chave privada que você carregou do seu IdP externo para descriptografar a declaração SAML criptografada.

1. A resposta da API para o aplicativo do cliente inclui credenciais de segurança temporárias.

1. A aplicação cliente usa as credenciais de segurança temporárias para chamar as operações de API do Amazon S3. 

## Visão geral da configuração de federação baseada em SAML 2.0
<a name="CreatingSAML-configuring-IdP"></a>

Antes de usar a federação baseada em SAML 2.0, como descrito no diagrama e no cenário anterior, configure seu IdP da organização e sua Conta da AWS para confiarem uns nos outros. O processo geral para configurar essa confiança é descrito nas etapas a seguir. Dentro da sua organização, é necessário ter um [IdP que seja compatível com SAML 2.0](id_roles_providers_saml_3rd-party.md), como o Microsoft Active Directory Federation Service (AD FS, parte do Windows Server), Shibboleth ou outro provedor compatível com o SAML 2.0. 

**nota**  
Para melhorar a resiliência da federação, recomendamos que você configure seu IdP e sua  federação da AWS para oferecer suporte a vários endpoints de login do SAML. Para obter detalhes, consulte o artigo do AWS Security Blog [How to use regional SAML endpoints for failover](https://aws.amazon.com/blogs//security/how-to-use-regional-saml-endpoints-for-failover).

**Configurar o IdP da sua organização e a AWS para confiança mútua**

1. Registre a AWS como provedora de serviços (SP) com o IdP da sua organização. Use o documento de metadados SAML de `https://region-code.signin.aws.amazon.com/static/saml-metadata.xml` 

   Para obter uma lista dos possíveis valores de *region-code*, consulte a coluna **Região** em [Endpoints de login da AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html).

   Ou você também pode usar o documento de metadados SAML em `https://signin.aws.amazon.com/static/saml-metadata.xml` .

1. <a name="createxml"></a>Ao usar o IdP da sua organização, você gera um arquivo XML de metadados do SAML equivalente que pode descrever o IdP como um provedor de identidade do IAM na AWS. Ele deve incluir o nome do emissor, uma data de criação, uma data de expiração e chaves que a AWS pode usar para validar as respostas de autenticação (declarações) da sua organização. 

   Se você permitir o envio de declarações SAML criptografadas provenientes do seu IdP externo, deverá gerar um arquivo de chave privada usando o IdP da sua organização e carregá-lo na configuração SAML do IAM no formato de arquivo .pem. O AWS STS precisa dessa chave privada para descriptografar respostas SAML correspondentes à chave pública que foi carregada para seu IdP.
**nota**  
Conforme definido pela [Versão 1.0 do Perfil de Interoperabilidade de Metadados do SAML V2.0](https://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-os.html), o IAM não avalia nem toma medidas em relação à expiração dos certificados X.509 em documentos de metadados do SAML. Caso não esteja preocupado com certificados X.509 expirados, recomendamos monitorar as datas de expiração dos certificados e alterná-los de acordo com as políticas de governança e segurança da sua organização.

1. <a name="samlovrcreateentity"></a>No console do IAM, crie um provedor de identidade SAML. Como parte do processo, carregue o documento de metadados SAML e a chave de descriptografia privada que foi gerada pelo IdP na sua organização em [Step 2](#createxml). Para obter mais informações, consulte [Criar um provedor de identidades SAML no IAM](id_roles_providers_create_saml.md).

1. <a name="samlovrcreaterole"></a>No IAM, crie uma ou mais funções do IAM. Na política de confiança da função, defina o provedor do SAML como principal, o que estabelece uma relação de confiança entre sua organização e a AWS. A política de permissões da função estabelece o que os usuários da sua organização têm permissão para fazer na AWS. Para obter mais informações, consulte [Criar um perfil para um provedor de identidade de terceiros](id_roles_create_for-idp.md).
**nota**  
Os IdPs do SAML usados em uma política de confiança de função devem estar na mesma conta em que a função está.

1. No IdP da sua organização, você define asserções que mapeiam usuários ou grupos em sua organização para as funções do IAM. Observe que usuários e grupos diferentes na sua organização podem ser mapeados para funções do IAM distintas. As etapas exatas para executar o mapeamento dependem do IdP que você estiver usando. No [cenário anterior](#CreatingSAML-configuring) de uma pasta do Amazon S3 para usuários, é possível que todos os usuários sejam mapeados para a mesma função que fornece as permissões do Amazon S3. Para obter mais informações, consulte [Configurar declarações SAML para a resposta de autenticação](id_roles_providers_create_saml_assertions.md).

   Se o seu IdP habilitar o SSO para o console da AWS, configure a duração máxima de sessões do console. Para obter mais informações, consulte [Habilitar o acesso das entidades principais federadas do SAML 2.0 ao Console de gerenciamento da AWS](id_roles_providers_enable-console-saml.md).

1. No aplicativo que você estiver criando, chame a API AWS Security Token Service do `AssumeRoleWithSAML`, transmitindo para ela o ARN do provedor SAML criado em [Step 3](#samlovrcreateentity), o ARN da função para supor que você criou em [Step 4](#samlovrcreaterole) e a declaração do SAML sobre o usuário atual que você obtém do seu IdP. A AWS garante que a solicitação para assumir a função venha do IdP referenciado no provedor de SAML. 

   Para obter mais informações, consulte [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) na *Referência da API do AWS Security Token Service*. 

1. Se a solicitação for bem-sucedida, a API retorna um conjunto de credenciais de segurança temporárias, que o aplicativo pode usar para fazer solicitações assinadas para a AWS. Sua aplicação tem informações sobre o usuário atual e pode acessar pastas específicas do usuário no Amazon S3, conforme descrito no cenário anterior. 

## Visão geral da função para permitir acesso federado do SAML aos seus recursos da AWS
<a name="CreatingSAML-configuring-role"></a>

Os perfis que você cria no IAM definem o que as entidades principais federadas SAML de sua organização têm permissão para fazer na AWS. Ao criar a política de confiança para a função, especifique o provedor SAML criado anteriormente como `Principal`. Além disso, examine a política de confiança com uma `Condition`, para permitir que apenas usuários que satisfaçam determinados atributos do SAML tenham acesso à função. Por exemplo, especifique que apenas usuários cujas afiliações do SAML sejam `staff` (conforme definido em https://openidp.feide.no) tenham permissão para acessar a função, como ilustrado pelo seguinte exemplo de política:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Principal": {"Federated": "arn:aws:iam::111122223333:saml-provider/ExampleOrgSSOProvider"},
    "Action": "sts:AssumeRoleWithSAML",
    "Condition": {
      "StringEquals": {
        "saml:aud": "https://us-east-1.signin.aws.amazon.com/saml",
        "saml:iss": "https://openidp.feide.no"
      },
      "ForAllValues:StringLike": {"saml:edupersonaffiliation": ["staff"]}
    }
  }]
}
```

------

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws-cn:iam::111122223333:saml-provider/ExampleOrgSSOProvider"
            },
            "Action": "sts:AssumeRoleWithSAML",
            "Condition": {
                "StringEquals": {
                    "saml:aud": "https://ap-east-1.signin.amazonaws.cn/saml",
                    "saml:iss": "https://openidp.feide.no"
                },
                "ForAllValues:StringLike": {
                    "saml:edupersonaffiliation": [
                        "staff"
                    ]
                }
            }
        }
    ]
}
```

------

**nota**  
Os IdPs do SAML usados em uma política de confiança de função devem estar na mesma conta em que a função está.

A chave de contexto `saml:aud` na política especifica o URL exibido no navegador durante o início de sessão no console. Esse URL do endpoint de início de sessão deve corresponder ao atributo de destinatário do seu provedor de identidade. É possível incluir URLs de início de sessão em determinadas regiões. A AWS recomenda usar endpoints regionais em vez do endpoint global para melhorar a resiliência da federação. Se você tiver apenas um endpoint configurado, não poderá se federar na AWS no improvável caso de o endpoint se tornar indisponível. Para obter uma lista dos possíveis valores de *region-code* (região-código), consulte a coluna **Region** (Região) em [AWS Sign-In endpoints](https://docs.aws.amazon.com/general/latest/gr/signin-service.html) (Endpoints de login da ).

O exemplo a seguir mostra o formato do URL de início de sessão com o `region-code` opcional.

`https://region-code.signin.aws.amazon.com/saml`

Se a criptografia SAML for necessária, o URL de início de sessão deverá incluir o identificador exclusivo que a AWS atribui ao seu provedor de SAML, o qual você pode encontrar na página de detalhes do provedor de identidade. No exemplo a seguir, o URL de início de sessão inclui o identificador exclusivo do IdP, que exige que /acs/ seja anexado ao caminho de login.

`https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID`

Para a política de permissões na função, especifique as permissões como faria para qualquer função. Por exemplo, se os usuários da sua organização tiverem permissão para administrar instâncias do Amazon Elastic Compute Cloud, você deverá permitir explicitamente as ações do Amazon EC2 na política de permissões, como aquelas na política gerenciada **AmazonEC2FullAccess**. 

Para obter mais informações sobre as chaves SAML que você pode verificar em uma política, consulte [Chaves disponíveis para federação do AWS STS com base em SAML](reference_policies_iam-condition-keys.md#condition-keys-saml).

## Identificar exclusivamente os usuários na federação baseada em SAML
<a name="CreatingSAML-userid"></a>

Quando você cria políticas de acesso no IAM, geralmente é útil poder especificar permissões com base na identidade dos usuários. Por exemplo, para usuários federados usando o SAML, uma aplicação pode manter informações no Amazon S3 usando uma estrutura como esta: 

```
amzn-s3-demo-bucket/app1/user1
amzn-s3-demo-bucket/app1/user2
amzn-s3-demo-bucket/app1/user3
```

Você pode criar o bucket (`amzn-s3-demo-bucket`) e a pasta (`app1`) por meio do console do Amazon S3 ou da AWS CLI, uma vez que esses são valores estáticos. No entanto, as pastas específicas do usuário (*user1*, *user2*, *user3* etc.) precisam ser criadas em tempo de execução usando código, já que o valor que identifica o usuário é desconhecido até a primeira vez que o usuário faz login, por meio do processo de federação. 

Para gravar políticas que façam referência a detalhes específicos do usuário como parte de um nome de recurso, a identidade do usuário deve estar disponível nas chaves do SAML que podem ser usadas em condições de política. As seguintes chaves estão disponíveis para federação baseada em SAML 2.0 para uso em políticas do IAM. Você pode usar os valores retornados pelas seguintes chaves para criar identificadores de usuário exclusivos para recursos como pastas do Amazon S3. 
+ `saml:namequalifier`. Um valor de hash com base na concatenação do valor de resposta de `Issuer` (`saml:iss`) e uma string com o ID da conta da `AWS` e o nome amigável (a última parte do ARN) do provedor SAML no IAM. A concatenação do ID da conta e do nome amigável do provedor SAML está disponível para as políticas do IAM como a chave `saml:doc`. O ID da conta e o nome do provedor devem ser separados por ‘/’ como em “123456789012/provider\$1name”. Para obter mais informações, consulte a chave do `saml:doc` em [Chaves disponíveis para federação do AWS STS com base em SAML](reference_policies_iam-condition-keys.md#condition-keys-saml).

  A combinação de `NameQualifier` e `Subject` pode ser usada para identificar de forma exclusiva uma entidade principal federada SAML. O pseudocódigo a seguir mostra como esse valor é calculado. Nesse pseudocódigo, `+` indica concatenação, `SHA1` representa uma função que produz um resumo de mensagens usando SHA-1 e `Base64` representa uma função que produz a versão codificada em Base64 da saída de hash.

   `Base64 ( SHA1 ( "https://example.com/saml" + "123456789012" + "/MySAMLIdP" ) )` 

   Para obter mais informações sobre a chaves de política disponíveis para federação baseada em SAML, consulte [Chaves disponíveis para federação do AWS STS com base em SAML](reference_policies_iam-condition-keys.md#condition-keys-saml).
+ `saml:sub` (string). Trata-se do assunto da solicitação, que inclui um valor que identifica de forma exclusiva um usuário individual em uma organização (por exemplo, `_cbb88bf52c2510eabe00c1642d4643f41430fe25e3`). 
+ `saml:sub_type` (string). Essa chave pode ser `persistent`, `transient` ou o URI `Format` completo dos elementos `Subject` e `NameID` usados na declaração do SAML. Um valor `persistent` indica que o valor em `saml:sub` é o mesmo para um usuário em todas as sessões. Se o valor for `transient`, o usuário terá um valor `saml:sub` diferente para cada sessão. Para obter mais informações sobre o atributo `NameID` do elemento `Format`, consulte [Configurar declarações SAML para a resposta de autenticação](id_roles_providers_create_saml_assertions.md). 

O exemplo a seguir mostra uma política de permissão que usa as chaves anteriores para conceder permissões a uma pasta específica do usuário no Amazon S3. A política supõe que os objetos do Amazon S3 são identificados usando um prefixo que inclui `saml:namequalifier` e `saml:sub`. Observe que o elemento `Condition` inclui um teste para garantir que o `saml:sub_type` esteja definido como `persistent`. Se for definido `transient`, o valor do `saml:sub` para o usuário poderá ser diferente para cada sessão e a combinação de valores não deverá ser usada para identificar pastas específicas do usuário. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "s3:GetObject",
      "s3:PutObject",
      "s3:DeleteObject"
    ],
    "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}",
      "arn:aws:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}/*"
    ],
    "Condition": {"StringEquals": {"saml:sub_type": "persistent"}}
  }
}
```

------

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "s3:GetObject",
      "s3:PutObject",
      "s3:DeleteObject"
    ],
    "Resource": [
      "arn:aws-cn:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}",
      "arn:aws-cn:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}/*"
    ],
    "Condition": {"StringEquals": {"saml:sub_type": "persistent"}}
  }
}
```

------

Para obter mais informações sobre o mapeamento de declarações do IdP para chaves de política, consulte [Configurar declarações SAML para a resposta de autenticação](id_roles_providers_create_saml_assertions.md). 

# Criar um provedor de identidades SAML no IAM
<a name="id_roles_providers_create_saml"></a>

Um provedor de identidade SAML 2.0 do IAM é uma entidade no IAM que descreve um serviço de provedor de identidade (IdP) externo compatível com o padrão [SAML 2.0 (Security Assertion Markup Language 2.0)](https://wiki.oasis-open.org/security). Você usa um provedor de identidade IAM quando deseja estabelecer confiança entre um IdP compatível com SAML, como Shibboleth ou Serviços de Federação do Active Directory e a AWS, para que seus usuários possam acessar recursos da AWS. Os provedores de identidade SAML do IAM são usados como entidades de segurança em uma política de confiança do IAM. 

Para ter mais informações sobre esse cenário, consulte [Federação SAML 2.0](id_roles_providers_saml.md).

Você pode criar e gerenciar um provedor de identidade do IAM no Console de gerenciamento da AWS ou com a AWS CLI, o Tools for Windows PowerShell ou chamadas de API da AWS. 

Depois de criar um provedor SAML, você deve criar uma ou mais funções do IAM. Função é uma identidade na AWS que não tem as próprias credenciais (como um usuário). Porém, neste contexto, um perfil é atribuído dinamicamente a uma entidades principal federada que é autenticada pelo seu IdP. O perfil permite que seu IdP solicite credenciais de segurança temporárias para obter acesso à AWS. As políticas atribuídas ao perfil determinam o que os usuários podem fazer na AWS. Para criar uma função para a federação do SAML, consulte [Criar um perfil para um provedor de identidade de terceiros](id_roles_create_for-idp.md). 

Finalmente, após criar o perfil, você deve concluir a confiança de SAML configurando o IdP com informações sobre a AWS e os perfis que suas entidades principais federadas deverão usar. Isso é chamado de configurar a confiança da parte dependente entre seu IdP e a AWS. Para configurar a confiança da parte dependente, consulte [Configurar o IdP SAML 2.0 com objeto de confiança de terceira parte confiável e adição de declarações](id_roles_providers_create_saml_relying-party.md). 

**Topics**
+ [

## Pré-requisitos
](#idp-manage-identityprovider-prerequisites)
+ [

## Criar e gerenciar um provedor de identidade SAML do IAM (console)
](#idp-manage-identityprovider-console)
+ [

## Gerenciar chaves de criptografia SAML
](#id_federation_manage-saml-encryption)
+ [

## Criar e gerenciar um provedor de identidade SAML do IAM (AWS CLI)
](#idp-create-identityprovider-CLI)
+ [

## Criar e gerenciar um provedor de identidade SAML do IAM (API da AWS)
](#idp-create-identityprovider-API)
+ [

## Próximas etapas
](#id_roles_create-for-saml-next-steps)

## Pré-requisitos
<a name="idp-manage-identityprovider-prerequisites"></a>

Antes de criar um provedor de identidade SAML, é necessário ter as seguintes informações do IdP.
+ Obtenha o documento de metadados SAML do IdP. Esse documento inclui o nome do emissor, informações de expiração e chaves que podem ser usadas para validar a resposta de autenticação SAML (declarações) que são recebidas do IdP. Para gerar o documento de metadados, use o software de gerenciamento de identidade fornecido pelo IdP externo.
**Importante**  
Esse arquivo de metadados inclui o nome do emissor, informações de validade e chaves que podem ser usadas para validar a resposta de autenticação do SAML (declarações) que são recebidas do IdP. O arquivo de metadados deve ser codificado no formato UTF-8 sem a marca de ordem de bytes (BOM). Para remover a BOM, você pode codificar o arquivo como UTF-8 usando uma ferramenta de edição de texto, como o Notepad\$1\$1.  
O certificado x.509 incluído como parte do documento de metadados do SAML deve usar um tamanho de chave de, pelo menos, 1.024 bits. Além disso, o certificado x.509 também deve estar livre de extensões repetidas. É possível usar extensões, mas elas só podem aparecer uma vez no certificado. Se o certificado x.509 não atender a nenhuma das condições, a criação do IdP vai falhar e retornar um erro “Unable to parse metadata”.  
Conforme definido pela [Versão 1.0 do Perfil de Interoperabilidade de Metadados do SAML V2.0](https://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-os.html), o IAM não avalia nem toma medidas em relação à expiração dos certificados X.509 em documentos de metadados do SAML. Caso não esteja preocupado com certificados X.509 expirados, recomendamos monitorar as datas de expiração dos certificados e alterná-los de acordo com as políticas de governança e segurança da sua organização.
+ Ao escolher habilitar a criptografia SAML, você deve gerar um arquivo de chave privada usando seu IdP e enviar esse arquivo para sua configuração SAML do IAM no formato de arquivo .pem. O AWS STS precisa dessa chave privada para descriptografar as respostas SAML que correspondem à chave pública enviada para seu IdP. Os seguintes algoritmos são aceitos:
  + Algoritmos de criptografia
    + AES-128
    + AES-256
    + RSA-OAEP
  + Algoritmos de transporte de chaves
    + AES-CBC
    + AES-GCM

  Consulte a documentação do seu provedor de identidade para obter as etapas de geração de uma chave privada.
**nota**  
O IAM Identity Center e o Amazon Cognito não são compatíveis com declarações de SAML criptografadas provenientes de provedores de identidade SAML do IAM. É possível adicionar indiretamente compatibilidade com declarações de SAML criptografadas à federação do banco de identidades do Amazon Cognito com grupos de usuários do Amazon Cognito. Os grupos de usuários têm uma federação SAML que é independente da federação SAML do IAM e é compatível com [assinatura e criptografia de SAML](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-SAML-signing-encryption.html). Embora esse atributo não se estenda diretamente aos bancos de identidades, os grupos de usuários podem ser IdPs dos bancos de identidades. Para usar a criptografia SAML com bancos de identidades, adicione um provedor de SAML com criptografia a um grupo de usuários que seja um IdP de um banco de identidades.  
Seu provedor de SAML deverá ser capaz de criptografar declarações de SAML com uma chave fornecida pelo seu grupo de usuários. Os grupos de usuários não aceitarão declarações criptografadas com um certificado fornecido pelo IAM.

Para obter instruções sobre como configurar muitos dos IdPs disponíveis para trabalhar com a AWS, incluindo como gerar o documento de metadados SAML necessários, consulte [Integrar provedores de soluções SAML de terceiros com a AWS](id_roles_providers_saml_3rd-party.md).

Para obter ajuda com a federação SAML, consulte [Solução de problemas com a federação SAML](troubleshoot_saml.md).

## Criar e gerenciar um provedor de identidade SAML do IAM (console)
<a name="idp-manage-identityprovider-console"></a>

Você pode usar o Console de gerenciamento da AWS para criar, atualizar e excluir provedores de identidade SAML do IAM. Para obter ajuda com a federação SAML, consulte [Solução de problemas com a federação SAML](troubleshoot_saml.md).

**Para criar um provedor de identidade SAMLdo IAM (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Identity providers (Provedores de identidade)** e, em seguida **Add provider (Adicionar provedor)**. 

1. Para a opção **Configure provider (Configurar provedor)**, escolha **SAML**. 

1. Digite um nome para o provedor de identidade.

1. Em **Metadata document (Documento de metadados)**, clique em **Choose file (Escolher arquivo)** e especifique o documento de metadados SAML que você obteve por download no [Pré-requisitos](#idp-manage-identityprovider-prerequisites).
**nota**  
O atributo `validUntil` ou `cacheDuration` do documento de metadados SAML definem a data de **Válido até** para o provedor de identidades. Se o documento de metadados SAML não incluir um atributo de período de validade, a data de **Válido até** não corresponderá à data de expiração do certificado X.509.  
O IAM não avalia nem realiza nenhuma ação em relação à expiração dos certificados X.509 em documentos de metadados SAML. Caso não esteja preocupado com certificados X.509 expirados, recomendamos monitorar as datas de expiração dos certificados e alterná-los de acordo com as políticas de governança e segurança da sua organização.

1. (Opcional) Em **Criptografia SAML**, selecione **Escolher arquivo** e escolha o arquivo de chave privada que você criou em [Pré-requisitos](#idp-manage-identityprovider-prerequisites). Escolha **Exigir criptografia** para aceitar somente solicitações criptografadas do IdP.

1. (Opcional) Em **Add tags** (Adicionar etiquetas), você pode adicionar pares de chave-valor para ajudar na identificação e organização de seus IdPs. Você também pode usar tags para controlar o acesso aos recursos da AWS. Para saber mais sobre a marcação de provedores de identidade SAML, consulte [Marcar provedores de identidades SAML do IAM](id_tags_saml.md).

   Escolha **Adicionar Tag**. Insira valores para cada par de chave-valor de tag. 

1. Verifique as informações fornecidas. Quando terminar, escolha **Add provider (Adicionar provedor)**. 

1. Atribua um perfil do IAM ao seu provedor de identidade. Esse perfil fornece a identidades de usuário externas gerenciadas pelo seu provedor de identidade permissões para acessar recursos da AWS em sua conta. Para saber mais sobre como criar funções para a federação de identidades, consulte [Criar um perfil para um provedor de identidade de terceiros](id_roles_create_for-idp.md).
**nota**  
Os IdPs do SAML usados em uma política de confiança de função devem estar na mesma conta em que a função está.

**Para excluir um provedor SAML (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Identity providers (Provedores de identidade)**.

1. Marque a caixa de seleção ao lado do provedor de identidade que você deseja excluir.

1. Escolha **Excluir**. Uma nova janela é aberta.

1. Confirme se deseja excluir o provedor digitando a palavra `delete` no campo. Em seguida, selecione **Excluir**.

## Gerenciar chaves de criptografia SAML
<a name="id_federation_manage-saml-encryption"></a>

Você pode configurar provedores SAML do IAM para receber declarações criptografadas na resposta SAML do IdP externo. Os usuários podem assumir um perfil AWS com declarações SAML criptografadas chamando `[sts:AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)`.

A criptografia SAML garante que as declarações sejam seguras quando passadas por intermediários ou terceiros. Além disso, esse atributo ajuda a manter a conformidade com o FedRAMP ou quaisquer requisitos de política de conformidade interna que exijam a criptografia de declarações SAML.

Para configurar um provedor de identidade SAML do IAM, consulte [Criar um provedor de identidades SAML no IAM](#id_roles_providers_create_saml). Para obter ajuda com a federação SAML, consulte [Solução de problemas com a federação SAML](troubleshoot_saml.md).

### Alternar a chave de criptografia SAML
<a name="id_federation_manage-saml-keys-rotate"></a>

O IAM usa a chave privada que você enviou ao provedor SAML do IAM para descriptografar declarações SAML criptografadas do seu IdP. É possível salvar até dois arquivos de chave privada para cada provedor de identidade, o que permite a alternância entre as chaves privadas conforme necessário. Quando dois arquivos são salvos, cada solicitação tentará primeiro descriptografar com a data de **Adição** mais recente e, em seguida, o IAM tentará descriptografar a solicitação com a data de **Adição** mais antiga.

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Provedores de identidade** e, em seguida, selecione seu provedor na lista. 

1. Escolha a guia **Criptografia SAML** e depois **Adicionar nova chave**.

1. Selecione **Escolher arquivo** e carregue a chave privada que você baixou do IdP como um arquivo .pem. Em seguida, escolha **Adicionar chave**.

1. Na seção **Chaves privadas para descriptografia SAML**, selecione o arquivo de chave privada expirado e escolha **Remover**. Recomendamos remover a chave privada expirada após adicionar uma nova chave privada para garantir que a primeira tentativa de descriptografar sua declaração seja bem-sucedida.

## Criar e gerenciar um provedor de identidade SAML do IAM (AWS CLI)
<a name="idp-create-identityprovider-CLI"></a>

Você pode usar a AWS CLI para criar, atualizar e excluir provedores SAML. Para obter ajuda com a federação SAML, consulte [Solução de problemas com a federação SAML](troubleshoot_saml.md).

**Para criar um provedor de identidade do IAM e carregar um documento de metadados (AWS CLI)**
+ Execute este comando: [https://docs.aws.amazon.com/cli/latest/reference/iam/create-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-saml-provider.html) 

**Para atualizar um provedor de identidade SAML do IAM (AWS CLI)**

É possível atualizar o arquivo de metadados e as configurações de criptografia SAML, bem como alternar arquivos de descriptografia de chave privada para seu provedor SAML do IAM. Para alternar chaves privadas, adicione sua nova chave privada e, em seguida, remova a chave antiga em uma solicitação separada. Para obter mais informações sobre a alternância de chaves privadas, consulte [Gerenciar chaves de criptografia SAML](#id_federation_manage-saml-encryption).
+ Execute este comando:[https://docs.aws.amazon.com/cli/latest/reference/iam/update-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-saml-provider.html) 

**Para etiquetar um provedor de identidade do IAM existente (AWS CLI)**
+ Execute este comando:[https://docs.aws.amazon.com/cli/latest/reference/iam/tag-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-saml-provider.html) 

**Para listar etiquetas para o provedor de identidade do IAM existente (AWS CLI)**
+ Execute este comando:[https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-provider-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-provider-tags.html) 

**Para remover etiquetas de um provedor de identidade do IAM existente (AWS CLI)**
+ Execute este comando:[https://docs.aws.amazon.com/cli/latest/reference/iam/untag-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-saml-provider.html) 

**Para excluir um provedor de identidade SAML do IAM (AWS CLI)**

1. (Opcional) Para listar informações para todos os provedores, como o ARN, data de criação e expiração, execute o seguinte comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-providers.html)

1. (Opcional) Para obter informações sobre um provedor específico, como ARN, data de criação, data de expiração, configurações de criptografia e informações de chave privada, execute o seguinte comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/get-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-saml-provider.html)

1. Para excluir um provedor de identidade do IAM, execute o seguinte comando:
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-saml-provider.html)

## Criar e gerenciar um provedor de identidade SAML do IAM (API da AWS)
<a name="idp-create-identityprovider-API"></a>

Você pode usar a API da AWS para criar, atualizar e excluir provedores SAML. Para obter ajuda com a federação SAML, consulte [Solução de problemas com a federação SAML](troubleshoot_saml.md).

**Para criar um provedor de identidadedo IAM e carregar um documento de metadados (API da AWS)**
+ Chame esta operação: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateSAMLProvider.html)

**Para atualizar um provedor de identidade SAML do IAM (API da AWS)**

É possível atualizar o arquivo de metadados e as configurações de criptografia SAML, bem como alternar arquivos de descriptografia de chave privada para seu provedor SAML do IAM. Para alternar chaves privadas, adicione sua nova chave privada e, em seguida, remova a chave antiga em uma solicitação separada. Para obter mais informações sobre a alternância de chaves privadas, consulte [Gerenciar chaves de criptografia SAML](#id_federation_manage-saml-encryption).
+ Chame esta operação: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateSAMLProvider.html)

**Para etiquetar um provedor de identidade existente do IAM (API da AWS)**
+ Chame esta operação: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagSAMLProvider.html)

**Para listar etiquetas para um provedor de identidade do IAM existente (API da AWS)**
+ Chame esta operação: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviderTags.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviderTags.html)

**Para remover etiquetas em um provedor de identidade existente do IAM (API da AWS)**
+ Chame esta operação: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagSAMLProvider.html)

**Para excluir um provedor de identidade do IAM (API da AWS)**

1. (Opcional) Para listar informações para todos os IdPs, como o ARN, data de criação e expiração, chame a seguinte operação:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviders.html)

1. (Opcional) Para obter informações sobre um provedor específico, como ARN, data de criação, data de expiração, configurações de criptografia e informações de chave privada, chame a seguinte operação:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetSAMLProvider.html)

1. Para excluir um IdP, chame a seguinte operação:
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSAMLProvider.html)

## Próximas etapas
<a name="id_roles_create-for-saml-next-steps"></a>

Depois de criar um provedor de identidade do SAML, configure a confiança da parte confiável com o seu IdP. Também é possível usar declarações da resposta de autenticação do seu IdP em políticas para controlar o acesso a um perfil.
+ Você deve informar ao IdP sobre a AWS como um provedor de serviços. Isso é chamado de adicionar confiança da parte confiável entre seu IdP e a AWS. O processo exato de adicionar a confiança da parte dependente de qual IdP você está usando. Para obter detalhes, consulte [Configurar o IdP SAML 2.0 com objeto de confiança de terceira parte confiável e adição de declarações](id_roles_providers_create_saml_relying-party.md).
+ Quando o IdP envia a resposta contendo as solicitações para a AWS, muitas das solicitações de entrada são mapeadas para as chaves de contexto da AWS. Você pode utilizar essas chaves de contexto nas políticas do IAM usando o elemento Condição para controlar o acesso a um perfil. Para obter mais detalhes, consulte [Configurar declarações SAML para a resposta de autenticação](id_roles_providers_create_saml_assertions.md)

# Configurar o IdP SAML 2.0 com objeto de confiança de terceira parte confiável e adição de declarações
<a name="id_roles_providers_create_saml_relying-party"></a>

Quando você cria um provedor de identidade do IAM e a função para acesso SAML, você está informando a AWS sobre o provedor de identidade (IdP) externo e o que seus usuários podem fazer. Em seguida, a sua próxima etapa é informar o IdP sobre a AWS como provedor de serviços. Isso é chamado de adicionar *confiança da parte dependente* entre seu IdP e a AWS. O processo exato de adicionar a confiança da parte dependente de qual IdP você está usando. Para ver detalhes, consulte a documentação do seu software de gerenciamento de identidade. 

Muitos IdPs permitem que você especifique uma URL a partir do qual o IdP lerá um documento XML contendo informações e certificados da parte dependente. Para AWS, use o URL do endpoint de início de sessão. O exemplo a seguir mostra o formato do URL com o `region-code` opcional.

`https://region-code.signin.aws.amazon.com/static/saml-metadata.xml`

Se a criptografia SAML for necessária, o URL deverá incluir o identificador exclusivo atribuído pela AWS ao seu provedor SAML, o qual você pode encontrar na página de detalhes do provedor de identidade. O exemplo a seguir mostra um URL de início de sessão regional que inclui um identificador exclusivo.

`https://region-code.signin.aws.amazon.com/static/saml/IdP-ID/saml-metadata.xml`

Para obter uma lista dos possíveis valores de *region-code*, consulte a coluna **Região** em [Endpoints de login da AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html). Para o valor AWS, também é possível usar o endpoint não regional `https://signin.aws.amazon.com/saml`.

Se você não especificar uma URL diretamente, faça download do documento XML da URL anterior e importe-o para o seu software de IdP. 

Você também precisa criar regras de reivindicação apropriadas no seu IdP que especifiquem a AWS como uma parte dependente. Quando o IdP envia uma resposta SAML ao endpoint da AWS, ele inclui uma *declaração* SAML que contém uma ou mais *reivindicações*. Reivindicação são informações sobre o usuário e seus grupos. Uma regra de solicitação mapeia essas informações aos atributos SAML. Isso permite que você verifique se as respostas de autenticação SAML do seu IdP contêm os atributos necessários que a AWS usa em políticas do IAM para verificar as permissões para entidades principais federadas SAML. Para saber mais, consulte os seguintes tópicos:
+  [Visão geral da função para permitir acesso federado do SAML aos seus recursos da AWS](id_roles_providers_saml.md#CreatingSAML-configuring-role). Este tópico discute o uso de chaves específicas do SAML em políticas do IAM e como usá-las para restringir permissões para entidades principais federadas SAML.
+ [Configurar declarações SAML para a resposta de autenticação](id_roles_providers_create_saml_assertions.md). Este tópico discute como configurar declarações SAML que incluem informações sobre o usuário. As solicitações são fornecidas em uma declaração SAML e incluídas na resposta SAML que é enviada à AWS. Você deve garantir que as informações necessárias às políticas da AWS sejam incluídas na declaração SAML em um formato que a AWS possa reconhecer e usar.
+  [Integrar provedores de soluções SAML de terceiros com a AWS](id_roles_providers_saml_3rd-party.md). Este tópico fornece links para a documentação fornecida por outras organizações sobre como integrar soluções de identidade com a AWS. 

**nota**  
Para melhorar a resiliência da federação, recomendamos que você configure seu IdP e sua  federação da AWS para oferecer suporte a vários endpoints de login do SAML. Para obter detalhes, consulte o artigo do AWS Security Blog [How to use regional SAML endpoints for failover](https://aws.amazon.com/blogs//security/how-to-use-regional-saml-endpoints-for-failover).

# Integrar provedores de soluções SAML de terceiros com a AWS
<a name="id_roles_providers_saml_3rd-party"></a>

**nota**  
Recomendamos exigir que seus usuários humanos usem credenciais temporárias ao acessar a AWS. Você já pensou em usar o Centro de Identidade do AWS IAM? O IAM Identity Center pode ser usado para gerenciar centralmente o acesso a várias Contas da AWS e fornecer aos usuários acesso de logon único protegido por MFA a todas as contas atribuídas em um só lugar. Com o IAM Identity Center, é possível criar e gerenciar identidades de usuários no IAM Identity Center ou conectar facilmente ao provedor de identidades compatível com SAML 2.0 existente. Para obter mais informações, consulte [O que é o IAM Identity Center?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) no *Guia do usuário do Centro de Identidade do AWS IAM*.

Os links a seguir ajudam a configurar soluções de provedor de identidades (IdP) SAML 2.0 de terceiros para trabalhar com as federações do AWS. Consulte seu provedor de identidade para determinar se ele oferece suporte à criptografia de tokens SAML. Para conhecer os requisitos de criptografia SAML, consulte [Gerenciar chaves de criptografia SAML](id_roles_providers_create_saml.md#id_federation_manage-saml-encryption).

**dica**  
AWSOs engenheiros do Support podem ajudar os clientes que tenham planos de suporte Business e Enterprise em algumas tarefas de integração que envolvem software de terceiros. Para obter uma lista atual de plataformas e aplicativos compatíveis, consulte [Quais softwares de terceiros são compatíveis?](https://aws.amazon.com/premiumsupport/faqs/#what3rdParty) nas *Perguntas frequentes do AWS Support*.


****  

| Solução | Mais informações | 
| --- | --- | 
| Auth0 |  [Integrate with Amazon Web services](https://auth0.com/docs/integrations/aws) (Integrar com Amazon Web Services): esta página no site de documentação do Auth0 tem links para recursos que descrevem como configurar a autenticação única (SSO) com o Console de gerenciamento da AWS e inclui um exemplo de JavaScript. Você pode configurar Auth0 para passar [tags de sessão](id_session-tags.md). Para obter mais informações, consulte [Auth0 Announces Partnership with AWS for IAM Session Tags](https://auth0.com/blog/auth0-partners-with-aws-for-iam-session-tags/). | 
| Microsoft Entra |  [Tutorial: Integração do SSO do Microsoft Entra ao AWS Single-Account Access](https://learn.microsoft.com/en-us/azure/active-directory/saas-apps/amazon-web-service-tutorial): este tutorial no site da Microsoft descreve como configurar o Microsoft Entra (anteriormente conhecido como Azure AD) como um provedor de identidades (IdP) usando a federação SAML. | 
| Centrify | [Configure Centrify and Use SAML for SSO to AWS](https://docs.centrify.com/Content/Applications/AppsWeb/AmazonSAML.htm): esta página no site da Centrify explica como configurar o Centrify para usar SAML para SSO na AWS. | 
| CyberArk | Configure o [CyberArk](https://docs.cyberark.com/Product-Doc/OnlineHelp/Idaptive/Latest/en/Content/Applications/AppsWeb/AmazonSAML.htm) para fornecer acesso à Amazon Web Services (AWS) aos usuários que fazem login por meio de autenticação única (SSO) do SAML pelo CyberArk User Portal. | 
| ForgeRock | A [Plataforma de identidade ForgeRock](https://backstage.forgerock.com/docs/am/6.5/saml2-guide/#saml2-create-hosted-idp) integra-se à AWS. É possível configurar a ForgeRock para transmitir [tags de sessão](id_session-tags.md). Para obter mais informações, consulte [Attribute Based Access Control for Amazon Web Services](https://www.forgerock.com/blog/attribute-based-access-control-amazon-web-services). | 
| Google Workspace | [Aplicação na nuvem da Amazon Web Services](https://support.google.com/a/answer/6194963): este artigo no site de ajuda da administração do Google Workspace descreve como configurar o Google Workspace como um IdP SAML 2.0 utilizando a AWS como provedor de serviços. | 
| IBM | Você pode configurar o IBM para passar [tags de sessão](id_session-tags.md). Para obter mais informações, consulte [IBM Cloud Identity IDaaS one of first to support AWS session tags](https://community.ibm.com/community/user/security/blogs/adam-case/2019/11/25/ibm-cloud-identity-idaas-one-of-first-to-support-aws-session-tags). | 
| JumpCloud |  [Conceder acesso por meio de perfis do IAM para autenticação única (SSO) com a Amazon AWS](https://support.jumpcloud.com/support/s/article/Granting-Access-via-IAM-Roles-for-Single-Sign-On-SSO-with-Amazon-AWS): este artigo no site da JumpCloud descreve como configurar e habilitar o SSO com base em perfis do IAM para a AWS. | 
| Matrix42 | [Guia de conceitos básicos do MyWorkspace](https://myworkspace.matrix42.com/documents/MyWorkspace-Getting-Started-with-AWS.pdf): este guia descreve como integrar os serviços de identidade da AWS com o Matrix42 MyWorkspace. | 
| Microsoft Active Directory Federation Services (AD FS) |  [Notas de campo: integração do Active Directory Federation Service com o Centro de Identidade do AWS IAM](https://aws.amazon.com/blogs/architecture/field-notes-integrating-active-directory-federation-service-with-aws-single-sign-on/): esta publicação no blog AWS Architecture explica o fluxo de autenticação entre o AD FS e o Centro de Identidade do AWS IAM (Centro de Identidade do IAM). O IAM Identity Center oferece suporte à federação de identidades com SAML 2.0, permitindo a integração com soluções do AD FS. Os usuários podem fazer login no portal do IAM Identity Center com suas credenciais corporativas reduzindo a sobrecarga administrativa de manter credenciais separadas no IAM Identity Center. Você também pode configurar o AD FS para passar [tags de sessão](id_session-tags.md). Para obter mais informações, consulte [Use attribute-based access control with AD FS to simplify IAM permissions management](https://aws.amazon.com/blogs/security/attribute-based-access-control-ad-fs-simplify-iam-permissions-management/).  | 
| miniOrange | [SSO para a AWS](http://miniorange.com/amazon-web-services-%28aws%29-single-sign-on-%28sso%29): esta página no site do miniOrange descreve como estabelecer acesso seguro à AWS para empresas e controle total sobre o acesso de aplicações da AWS.  | 
| Okta |  [ Integrar a interface da linha de comando da Amazon Web Services com o Okta](https://support.okta.com/help/Documentation/Knowledge_Article/Integrating-the-Amazon-Web-Services-Command-Line-Interface-Using-Okta): nesta página no site de suporte do Okta, você pode aprender a configurar o Okta para uso com a AWS. Você pode configurar o Okta para passar [tags de sessão](id_session-tags.md). Para obter mais informações, consulte [Okta and AWS Partner to Simplify Access Via Session Tags](https://www.okta.com/blog/2019/11/okta-and-aws-partner-to-simplify-access-via-session-tags/). | 
| Okta | [Federação de contas da AWS](https://help.okta.com/oie/en-us/Content/Topics/DeploymentGuides/AWS/aws-deployment.htm): esta seção no site da Okta descreve como configurar e habilitar o Centro de Identidade do IAM para a AWS. | 
| OneLogin | No [OneLogin Knowledgebase](https://onelogin.service-now.com/support), procure SAML AWS para obter uma lista de artigos que explicam como configurar a funcionalidade do IAM Identity Center entre o OneLogin e a AWS para cenários de um ou vários perfis. Você pode configurar o OneLogin para passar [tags de sessão](id_session-tags.md). Para obter mais informações, consulte [OneLogin and Session Tags: Attribute-Based Access Control for AWS Resources](https://www.onelogin.com/blog/aws-session-tags-integration). | 
| Ping Identity |  [Conector PingFederate da AWS](https://support.pingidentity.com/s/marketplace-integration-details?recordId=a7i1W0000004HBwQAM): visualize detalhes sobre o conector PingFederate da AWS, um modelo de conexão rápida para configurar facilmente uma autenticação única (SSO) e uma conexão de provisionamento. Leia a documentação e faça download do conector PingFederate da AWS mais recente para integrações com a AWS. Você pode configurar o Ping Identity para passar [tags de sessão](id_session-tags.md). Para obter mais informações, consulte [Announcing Ping Identity Support for Attribute-Based Access Control in AWS](https://support.pingidentity.com/s/document-item?bundleId=integrations&topicId=pon1571779451105.html).  | 
| RadiantLogic | [Parceiros de tecnologia da Radiant Logic](http://www.radiantlogic.com/about/partners/technology-partners/): o serviço de identidade federada RadiantOne da Radiant Logic se integra à AWS para fornecer um hub de identidade para SSO baseada em SAML.  | 
| RSA | O [Amazon Web Services - RSA Ready Implementation Guide](https://community.rsa.com/s/article/Amazon-Web-Services-RSA-Ready-Implementation-Guide) fornece orientação para integração da AWS e do RSA. Para obter mais informações sobre a configuração do SAML, consulte [Amazon Web Services - SAML My Page SSO Configuration - RSA Ready Implementation Guide](https://community.rsa.com/s/article/Amazon-Web-Services-SAML-My-Page-SSO-Configuration-RSA-Ready-Implementation-Guide). | 
| Salesforce.com |  [Como configurar SSO do Salesforce para a AWS](https://developer.salesforce.com/page/Configuring-SAML-SSO-to-AWS): este artigo de instruções sobre o site do desenvolvedor do Salesforce.com descreve como configurar um provedor de identidade (IdP) no Salesforce e configurar a AWS como um provedor de serviços.  | 
| SecureAuth |  [AWS - SecureAuth SAML SSO](https://docs.secureauth.com/2104/en/amazon-web-services--aws---idp-initiated--integration-guide.html): este artigo no site do SecureAuth descreve como configurar a integração do SAML com a AWS para um dispositivo SecureAuth.  | 
| Shibboleth |  [How to Use Shibboleth for SSO to the Console de gerenciamento da AWS](https://aws.amazon.com/blogs/security/how-to-use-shibboleth-for-single-sign-on-to-the-aws-management-console): este registro no AWS Security Blog fornece um tutorial detalhado sobre como instalar o Shibboleth e configurá-lo como provedor de identidade para a AWS. Você pode configurar o Shibboleth para passar [tags de sessão](id_session-tags.md). | 

Para obter mais detalhes, consulte a página [Parceiros do IAM](https://aws.amazon.com/iam/partners/) no site da AWS. 

# Configurar declarações SAML para a resposta de autenticação
<a name="id_roles_providers_create_saml_assertions"></a>

Após a verificação da identidade de um usuário na sua organização, o provedor de identidades (IdP) externo envia uma resposta de autenticação ao URL do endpoint de início de sessão da AWS. Essa resposta é uma solicitação POST que inclui um token SAML que segue o padrão [Vinculação POST de HTTP para SAML 2.0](http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf) e contém os seguintes elementos ou *solicitações*. Você configura essas solicitações em seu IdP compatível com SAML. Consulte a documentação de seu IdP para obter instruções sobre como inserir essas solicitações.

Quando o IdP envia a resposta contendo as solicitações para a AWS, muitas das solicitações de entrada são mapeadas para as chaves de contexto da AWS. Essas chaves de contexto podem ser verificadas nas políticas do IAM usando o elemento `Condition`. Há uma lista de mapeamentos disponíveis na seção [Mapeamento de atributos SAML para chaves de contexto de política de confiança da AWS](#saml-attribute-mapping).

## `Subject` e da `NameID`
<a name="saml_subject-name-id"></a>

A resposta deve incluir exatamente um elemento `SubjectConfirmation` com um elemento `SubjectConfirmationData` que inclui ambos os atributos `NotOnOrAfter` e `Recipient`. O atributo Recipient deve incluir um valor que corresponda ao URL do endpoint de início de sessão da AWS. Seu IdP pode usar o termo `ACS`, `Recipient` ou `Target` para fazer referência a esse atributo.

Se a criptografia SAML for necessária, o URL de início de sessão deverá incluir o identificador exclusivo que a AWS atribui ao seu provedor de SAML, o qual você pode encontrar na página de detalhes do provedor de identidade. O exemplo a seguir mostra o formato do URL de início de sessão com o `region-code` opcional.

`https://region-code.signin.aws.amazon.com/saml`

No exemplo a seguir, o URL de início de sessão inclui um identificador exclusivo que exige que /acs/ seja anexado ao caminho de início de sessão.

`https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID`

Para obter uma lista dos possíveis valores de *region-code*, consulte a coluna **Região** em [Endpoints de login da AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html). Para o valor AWS, também é possível usar o endpoint de sign-in global `https://signin.aws.amazon.com/saml`.

Os elementos `NameID` podem ter o valor persistente, transitório ou consistir no URI de formato completo, conforme fornecido pela solução IdP. O valor persistente indica que o valor em `NameID` é o mesmo para um usuário entre as sessões. Se o valor for transitório, o usuário terá um valor `NameID` diferente para cada sessão. As interações de login único oferecem suporte aos seguintes tipos de identificadores:
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:transient`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName`
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos`
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:entity`

O trecho a seguir mostra um exemplo. Substitua os valores marcados pelos seus próprios valores.

```
<Subject>
  <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">_cbb88bf52c2510eabe00c1642d4643f41430fe25e3</NameID>
  <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
    <SubjectConfirmationData NotOnOrAfter="2013-11-05T02:06:42.876Z" Recipient="https://region-code.signin.aws.amazon.com/saml/SAMLSP4SHN3UIS2D558H46"/>
  </SubjectConfirmation>
</Subject>
```

**Importante**  
A chave de contexto `saml:aud` vem do atributo *destinatário* SAML porque é o equivalente SAML ao campo de público do OIDC, por exemplo, `accounts.google.com:aud`.

## `PrincipalTag`Atributo SAML
<a name="saml_role-session-tags"></a>

(Opcional) Você pode usar um elemento `Attribute` com o atributo `Name` definido como `https://aws.amazon.com/SAML/Attributes/PrincipalTag:{TagKey}`. Este elemento permite que você passe atributos como tags de sessão na declaração do SAML. Para obter mais informações sobre tags de sessão, consulte [Passar tags de sessão no AWS STS](id_session-tags.md).

Para passar atributos como tags de sessão, inclua o elemento `AttributeValue` que especifica o valor da tag. Por exemplo, para passar os pares chave-valor de tag `Project` = `Marketing` e `CostCenter` = `12345`, use o atributo a seguir. Inclua um elemento `Attribute` separado para cada tag.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project">
  <AttributeValue>Marketing</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter">
  <AttributeValue>12345</AttributeValue>
</Attribute>
```

Para definir as tags acima como transitivas, inclua outro elemento `Attribute` com o atributo `Name` definido como `https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys`. Ele é um atributo multivalor opcional que define suas tags de sessão como transitivas. As tags transitivas persistem quando você usa a sessão do SAML para assumir outra função na AWS. Isso é conhecido como [encadeamento de funções](id_roles.md#iam-term-role-chaining). Por exemplo, para definir as tags `Principal` e `CostCenter` como transitivas, use o atributo a seguir para especificar as chaves.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys">
  <AttributeValue>Project</AttributeValue>
  <AttributeValue>CostCenter</AttributeValue>
</Attribute>
```

## `Role`Atributo SAML
<a name="saml_role-attribute"></a>

Você pode usar um elemento `Attribute` com o atributo `Name` definido como `https://aws.amazon.com/SAML/Attributes/Role` Esse elemento contém um ou mais elementos `AttributeValue` que listam o provedor de identidade do IAM e a função para a qual o usuário é mapeado pelo IdP. A função e o provedor de identidade do IAM são especificados como um par de ARNs delimitado por vírgulas no mesmo formato que os parâmetros `RoleArn` e `PrincipalArn` que são passados para [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html). Esse elemento deve conter pelo menos um par de provedor e função (elemento `AttributeValue`) e pode conter vários pares. Se o elemento contiver vários pares, será solicitado que o usuário escolha qual perfil assumir quando usar o WebSSO para fazer login no Console de gerenciamento da AWS.

**Importante**  
O valor do atributo `Name` na tag `Attribute` faz distinção de maiúsculas e minúsculas. Ele deve ser definido exatamente como `https://aws.amazon.com/SAML/Attributes/Role`.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/Role">
  <AttributeValue>arn:aws:iam::account-number:role/role-name1,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
  <AttributeValue>arn:aws:iam::account-number:role/role-name2,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
  <AttributeValue>arn:aws:iam::account-number:role/role-name3,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
</Attribute>
```

## `RoleSessionName`Atributo SAML
<a name="saml_role-session-attribute"></a>

Você pode usar um elemento `Attribute` com o atributo `Name` definido como `https://aws.amazon.com/SAML/Attributes/RoleSessionName` Este elemento contém um elemento `AttributeValue` que fornece um identificador para as credenciais temporárias que são emitidas quando a função é assumida. Você pode usar isso para associar as credenciais temporárias ao usuário que está usando sua aplicação. Esse elemento é usado para exibir as informações do usuário no Console de gerenciamento da AWS. O valor no elemento `AttributeValue` deve ter entre 2 e 64 caracteres, pode conter apenas caracteres alfanuméricos, sublinhados e os seguintes caracteres: **. , \$1 = @ -** (hífen). Ele nome não pode conter espaços. O valor é geralmente um ID de usuário (`john`) ou um endereço de e-mail (`johndoe@example.com`). Ele não deve ser um valor que inclua espaço, como o nome de exibição de um usuário (`John Doe`).

**Importante**  
O valor do atributo `Name` na tag `Attribute` faz distinção de maiúsculas e minúsculas. Ele deve ser definido exatamente como `https://aws.amazon.com/SAML/Attributes/RoleSessionName`.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/RoleSessionName">
  <AttributeValue>user-id-name</AttributeValue>
</Attribute>
```

## `SessionDuration`Atributo SAML
<a name="saml_role-session-duration"></a>

(Opcional) Você pode usar um elemento `Attribute` com o atributo `Name` definido como `https://aws.amazon.com/SAML/Attributes/SessionDuration"`. Esse elemento contém um elemento `AttributeValue` que especifica por quanto tempo o usuário pode acessar o Console de gerenciamento da AWS antes de precisar solicitar novas credenciais temporárias. O valor é um número inteiro que representa o número de segundos da sessão. O valor pode variar de 900 segundos (15 minutos) a 43.200 segundos (12 horas). Se esse atributo não estiver presente, a credencial será válida por uma hora (o valor padrão do parâmetro `DurationSeconds` da API `AssumeRoleWithSAML`).

Para usar esse atributo, você deve configurar o provedor SAML para fornecer acesso de logon único ao Console de gerenciamento da AWS pelo endpoint da web de entrada do console em `https://region-code.signin.aws.amazon.com/saml`. Para obter uma lista dos possíveis valores de *region-code*, consulte a coluna **Região** em [Endpoints de login da AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html). Ou você pode usar a seguinte URL: `https://signin.aws.amazon.com/static/saml`. Observe que esse atributo estende sessões apenas para o Console de gerenciamento da AWS. Ele não pode ampliar a vida útil de outras credenciais. No entanto, se estiver presente em uma chamada de API `AssumeRoleWithSAML`, ele poderá ser usado para *abreviar* a duração da sessão. O tempo útil padrão das credenciais retornadas pela chamada é de 60 minutos. 

Observe também que, se um atributo `SessionNotOnOrAfter` também estiver definido, o ***menor valor*** entre os dois atributos, `SessionDuration` ou `SessionNotOnOrAfter`, estabelecerá a duração máxima da sessão do console.

Quando você ativa as seções do console com uma duração estendida, o risco de comprometimento das credenciais aumenta. Para ajudar a reduzir esse risco, você pode desabilitar imediatamente as sessões ativas do console para qualquer função escolhendo a opção **Revoke Sessions** (Revogar sessões) na página **Role Summary** (Resumo da função) no console do IAM. Para obter mais informações, consulte [Revogar as credenciais de segurança temporárias do perfil do IAM](id_roles_use_revoke-sessions.md). 

**Importante**  
O valor do atributo `Name` na tag `Attribute` faz distinção de maiúsculas e minúsculas. Ele deve ser definido exatamente como `https://aws.amazon.com/SAML/Attributes/SessionDuration`.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/SessionDuration">
  <AttributeValue>1800</AttributeValue>
</Attribute>
```

## `SourceIdentity`Atributo SAML
<a name="saml_sourceidentity"></a>

(Opcional) Você pode usar um elemento `Attribute` com o atributo `Name` definido como `https://aws.amazon.com/SAML/Attributes/SourceIdentity`. Este elemento contém um elemento `AttributeValue` que fornece um identificador da pessoa ou da aplicação que está usando uma função do IAM. O valor da identidade-fonte persiste quando você usa a sessão do SAML para assumir outra função na AWS conhecida como [encadeamento de funções](id_roles.md#iam-term-role-chaining). O valor da identidade-fonte está presente na solicitação para cada ação executada durante a sessão da função. O valor definido não pode ser alterado durante a sessão da função. Os administradores podem então usar logs do AWS CloudTrail para monitorar e auditar as informações de identidade-fonte para determinar quem executou ações com funções compartilhadas.

O valor no elemento `AttributeValue` deve ter entre 2 e 64 caracteres, pode conter apenas caracteres alfanuméricos, sublinhados e os seguintes caracteres: **. , \$1 = @ -** (hífen). Ele nome não pode conter espaços. O valor geralmente é um atributo associado ao usuário, como um id de usuário (`john`) ou um endereço de e-mail (`johndoe@example.com`). Ele não deve ser um valor que inclua espaço, como o nome de exibição de um usuário (`John Doe`). Para obter mais informações sobre como usar a identidade-fonte, consulte [Monitorar e controlar ações realizadas com funções assumidas](id_credentials_temp_control-access_monitor.md).

**Importante**  
Se sua asserção SAML estiver configurada para usar o atributo [`SourceIdentity`](#saml_sourceidentity), sua política de confiança da função também deverá incluir a ação `sts:SetSourceIdentity`, caso contrário, a operação de assumir função falhará. Para obter mais informações sobre como usar a identidade-fonte, consulte [Monitorar e controlar ações realizadas com funções assumidas](id_credentials_temp_control-access_monitor.md).

Para passar um atributo de identidade-fonte, inclua o elemento `AttributeValue` que especifica o valor da identidade-fonte. Por exemplo, para passar a identidade-fonte `Diego` use o atributo a seguir.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/SourceIdentity">
  <AttributeValue>Diego</AttributeValue>
```

## Mapeamento de atributos SAML para chaves de contexto de política de confiança da AWS
<a name="saml-attribute-mapping"></a>

As tabelas desta seção listam atributos SAML utilizados com frequência e como eles são mapeados para chaves de contexto de condições de política de confiança na AWS. É possível usar essas chaves para controlar o acesso a um perfil. Para isso, compare as chaves com os valores incluídos nas declarações que acompanham uma solicitação de acesso SAML.

**Importante**  
Essas chaves estão disponíveis apenas em políticas de confiança do IAM (políticas que determinam quem pode assumir uma função) e não são aplicáveis a políticas de permissões.

Na tabela de atributos eduPerson e eduOrg, os valores são digitados como strings ou listas de strings. Para valores de string, você pode testar esses valores em políticas de confiança do IAM usando condições `StringEquals` ou `StringLike`. Para valores que contêm uma lista de strings, você pode usar os `ForAnyValue`operadores definidos de política`ForAllValues` [ e ](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys) para testar os valores nas políticas de confiança.

**nota**  
Você deve incluir apenas uma solicitação por chave de contexto da AWS. Se você incluir mais de uma, apenas uma delas será mapeada. 

A tabela a seguir mostra os atributos eduPerson e eduOrg.


| Atributo eduPerson ou eduOrg (chave `Name`) | É mapeado para essa chave de contexto da AWS (chave `FriendlyName`) | Tipo | 
| --- | --- | --- | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.1`   |   `eduPersonAffiliation`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.2`   |   `eduPersonNickname`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.3`   |   `eduPersonOrgDN`   |  String  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.4`   |   `eduPersonOrgUnitDN`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.5`   |   `eduPersonPrimaryAffiliation`   |  String  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.6`   |   `eduPersonPrincipalName`   |  String  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.7`   |   `eduPersonEntitlement`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.8`   |   `eduPersonPrimaryOrgUnitDN`   |  String  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.9`   |   `eduPersonScopedAffiliation`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.10`   |   `eduPersonTargetedID`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.11`   |   `eduPersonAssurance`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.2`   |   `eduOrgHomePageURI`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.3`   |   `eduOrgIdentityAuthNPolicyURI`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.4`   |   `eduOrgLegalName`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.5`   |   `eduOrgSuperiorURI`   |  Lista de strings  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.6`   |   `eduOrgWhitePagesURI`   |  Lista de strings  | 
|   `urn:oid:2.5.4.3`   |   `cn`   |  Lista de strings  | 

A tabela a seguir mostra atributos do Active Directory.


| Atributo do AD | É mapeado para essa chave de contexto da AWS | Tipo | 
| --- | --- | --- | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name`  |  `name`  |  String  | 
|  `http://schemas.xmlsoap.org/claims/CommonName`  |  `commonName`  |  String  | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname`  |  `givenName`  |  String  | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname`  |  `surname`  |  String  | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`  |  `mail`  |  String  | 
|  `http://schemas.microsoft.com/ws/2008/06/identity/claims/primarygroupsid`  |  `uid`  |  String  | 

A tabela a seguir mostra atributos do X.500.


| Atributo X.500 | É mapeado para essa chave de contexto da AWS | Tipo | 
| --- | --- | --- | 
|  `2.5.4.3`  |  `commonName`  |  String  | 
|  `2.5.4.4`  |  `surname`  |  String  | 
|  `2.4.5.42`  |  `givenName`  |  String  | 
|  `2.5.4.45`  |  `x500UniqueIdentifier`  |  String  | 
|  `0.9.2342.19200300100.1.1`  |  `uid`  |  String  | 
|  `0.9.2342.19200300100.1.3`  |  `mail`  |  String  | 
|  `0.9.2342.19200300.100.1.45`  |  `organizationStatus`  |  String  | 

# Habilitar o acesso das entidades principais federadas do SAML 2.0 ao Console de gerenciamento da AWS
<a name="id_roles_providers_enable-console-saml"></a>

É possível usar um perfil para configurar seu provedor de identidades (IdP) compatível com SAML 2.0 e o AWS para permitir que entidades principais federadas acessem o Console de gerenciamento da AWS. A função concede ao usuário permissões para executar tarefas no console. Se você deseja oferecer às entidades principais federadas SAML outras maneiras de acessar a AWS, consulte um dos seguintes tópicos:
+ AWS CLI: [Alterar para uma perfil do IAM (AWS CLI)](id_roles_use_switch-role-cli.md)
+ Tools for Windows PowerShell: [Alternar para um perfil do IAM (Ferramentas para Windows PowerShell)](id_roles_use_switch-role-twp.md)
+ AWS API: [Alternar para um perfil do IAM (API da AWS)](id_roles_use_switch-role-api.md)

## Visão geral
<a name="enable-console-saml-overview"></a>

O diagrama a seguir ilustra o fluxo para logon único habilitado para o SAML. 

**nota**  
Esse uso específico de SAML difere do uso mais geral ilustrado em [Federação SAML 2.0](id_roles_providers_saml.md), pois esse um fluxo de trabalho abre o Console de gerenciamento da AWS em nome do usuário. Isso requer o uso do endpoint de login da AWS em vez de chamar diretamente a API `AssumeRoleWithSAML`. O endpoint chama a API para o usuário e retorna uma URL que redireciona automaticamente o navegador do usuário para o Console de gerenciamento da AWS.

![\[Autenticação única (SSO) no Console de Gerenciamento da AWS usando SAML\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/saml-based-sso-to-console.diagram.png)


O diagrama ilustra as seguintes etapas:

1. O usuário acessa o portal de sua organização e seleciona a opção de ir para o Console de gerenciamento da AWS. Em sua organização, o portal geralmente é uma função do seu IdP que lida com a troca de confiança entre a organização e a AWS. Por exemplo, no Active Directory Federation Services, o portal URL é: `https://ADFSServiceName/adfs/ls/IdpInitiatedSignOn.aspx` 

1. O portal verifica a identidade do usuário na sua organização.

1. O portal gera uma resposta de autenticação SAML que inclui declarações que identificam o usuário e incluem atributos sobre o usuário. Você também pode configurar seu IdP para incluir um atributo de declaração SAML chamado `SessionDuration` que especifica quanto tempo a sessão do console é válida. Você também pode configurar o IdP para passar atributos como [tags de sessão](id_session-tags.md). O portal envia essa resposta ao navegador cliente.

1. O navegador cliente é redirecionado para o endpoint de logon único da AWS e publica a declaração SAML. 

1. O endpoint solicita credenciais de segurança temporárias em nome do usuário e cria um URL de login do console que usa essas credenciais. 

1. AWSA envia o URL de login de volta para o cliente como um redirecionamento.

1. O navegador cliente é redirecionado para o Console de gerenciamento da AWS. Se a resposta de autenticação SAML incluir atributos que sejam mapeados para várias funções do IAM, será solicitado que o usuário selecione a função para acessar o console. 

Do ponto de vista do usuário, o processo ocorre de maneira transparente: o usuário começa no portal interno de sua organização e termina no Console de gerenciamento da AWS, sem nunca precisar fornecer nenhuma credencial da AWS.

Consulte as seções a seguir para obter uma visão geral de como configurar esse comportamento junto com links para ver as etapas detalhadas.

## Configurar sua rede como um provedor SAML para a AWS
<a name="fedconsole-config-network-as-saml"></a>

Na rede de sua organização, configure o armazenamento de identidades (como Windows Active Directory) para trabalhar com um IdP baseado em SAML como Windows Active Directory Federation Services, Shibboleth, etc. Usando seu IdP, gere o documento de metadados que descreve sua organização como um IdP e inclui chaves de autenticação. Você também pode configurar o portal da sua organização para rotear as solicitações do usuário do Console de gerenciamento da AWS para o endpoint SAML da AWS para autenticação usando declarações SAML. Como você configura seu IdP para produzir o arquivo metadata.xml depende do IdP. Consulte a documentação do IdP para obter instruções, ou consulte [Integrar provedores de soluções SAML de terceiros com a AWS](id_roles_providers_saml_3rd-party.md) para obter os links para a documentação da web para muitos dos provedores SAML suportados.

## Criar um provedor SAML no IAM
<a name="fedconsole-create-saml-provider"></a>

Em seguida, faça login no Console de gerenciamento da AWS e vá para o console do IAM. La você cria um novo provedor SAML, que é uma entidade no IAM que mantém informações sobre o IdP de sua organização. Como parte do processo, carregue o documento de metadados produzido pelo software de IdP em sua empresa mencionado na seção anterior. Para obter detalhes, consulte [Criar um provedor de identidades SAML no IAM](id_roles_providers_create_saml.md). 

## Configurar permissões no AWS para entidades principais federadas SAML
<a name="fedconsole-grantperms"></a>

A próxima etapa é criar uma função do IAM que defina uma relação de confiança entre o IAM e o IdP da sua organização. Essa função deve identificar o IdP como um principal (entidade confiável) para fins de federação. Essa função também define o que os usuários autenticados pelo IdP de sua organização têm permissão para fazer na AWS. Você pode usar o console do IAM para criar essa função. Ao criar a política de confiança que indica quem pode assumir a função, especifique o provedor SAML criado anteriormente no IAM. Especifique também um ou mais atributos SAML que o usuário deve atender para poder assumir a função. Por exemplo, você pode especificar que apenas usuários cujo valor `[eduPersonOrgDN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#ck_edupersonorgdn)` SAML seja `ExampleOrg` tenham permissão para fazer login. O assistente de função adiciona automaticamente uma condição para testar o atributo `saml:aud` para garantir que a função seja assumida apenas para login no Console de gerenciamento da AWS.

Se a criptografia SAML for necessária, o URL de início de sessão deverá incluir o identificador exclusivo que a AWS atribui ao seu provedor de SAML, o qual você pode encontrar na página de detalhes do provedor de identidade. A política de confiança da função pode ter a seguinte aparência:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::111122223333:saml-provider/ExampleOrgSSOProvider"
            },
            "Action": "sts:AssumeRoleWithSAML",
            "Condition": {
                "StringEquals": {
                    "saml:edupersonorgdn": "ExampleOrg",
                    "saml:aud": "https://region-code.signin.aws.amazon.com/saml/acs/SAMLSP4SHN3UIS2D558H46"
                }
            }
        }
    ]
}
```

------

**nota**  
Os IdPs do SAML usados em uma política de confiança de função devem estar na mesma conta em que a função está.

Recomendamos o uso de endpoints regionais para o atributo `saml:aud` em `https://region-code.signin.aws.amazon.com/static/saml-metadata.xml`. Para obter uma lista dos possíveis valores de *region-code* (região-código), consulte a coluna **Region** (Região) em [AWS Sign-In endpoints](https://docs.aws.amazon.com/general/latest/gr/signin-service.html) (Endpoints de login da AWS).

Para a [política de permissões](access_policies.md) na função, você especifica permissões como faria para qualquer função, usuário ou grupo. Por exemplo, se os usuários da sua organização tiverem permissão para administrar instâncias do Amazon EC2, você poderá permitir explicitamente as ações do Amazon EC2 na política de permissões. Você pode fazer isso atribuindo uma [política gerenciada](access_policies_manage-attach-detach.md), como a política gerenciada **Acesso total ao Amazon EC2**. 

Para obter detalhes sobre a criação de uma função para um IdP SAML, consulte [Criar um perfil para uma federação do SAML 2.0 (console)](id_roles_create_for-idp_saml.md). 

## Concluir configuração e criar declarações SAML
<a name="fedconsole-configassertions"></a>

Informe a seu IdP de SAML que a AWS é a sua provedora de serviços instalando o arquivo `saml-metadata.xml` encontrado em `https://region-code.signin.aws.amazon.com/static/saml-metadata.xml` ou `https://signin.aws.amazon.com/static/saml-metadata.xml`. Se a criptografia SAML for necessária, o arquivo poderá ser encontrado em `https://region-code.signin.aws.amazon.com/static/saml/SAMLSP4SHN3UIS2D558H46/saml-metadata.xml`.

Para obter uma lista dos possíveis valores de *region-code*, consulte a coluna **Região** em [Endpoints de login da AWS](https://docs.aws.amazon.com/general/latest/gr/signin-service.html). 

A forma de instalação desse arquivo depende do IdP. Alguns provedores dão a opção de digitar o URL, e o IdP obtém e instala o arquivo para você. Outros exigem que você baixe o arquivo pelo URL e forneça como arquivo local. Consulte a documentação do IdP para obter detalhes, ou consulte [Integrar provedores de soluções SAML de terceiros com a AWS](id_roles_providers_saml_3rd-party.md) para obter os links para a documentação da web para muitos dos provedores SAML com suporte.

Você também configura as informações que o IdP deverá transmitir como atributos SAML para a AWS, como parte da resposta de autenticação. A maior parte dessas informações aparece na AWS como chaves de contexto de condição que você pode avaliar em suas políticas. Essas chaves de condição garantem que somente usuários autorizados nos contextos corretos recebam permissão para acessar os seus recursos da AWS. Você pode especificar janelas de tempo que restrinjam quando o console pode ser usado. Você também pode especificar o tempo máximo (até 12 horas) que os usuários podem acessar o console antes de precisar atualizar suas credenciais. Para obter mais detalhes, consulte [Configurar declarações SAML para a resposta de autenticação](id_roles_providers_create_saml_assertions.md).

# Visualizar uma resposta do SAML no navegador
<a name="troubleshoot_saml_view-saml-response"></a>

Os procedimentos a seguir descrevem como visualizar a resposta do SAML do seu provedor de serviços no navegador ao solucionar um problema relacionado ao SAML 2.0. 

Para todos os navegadores, vá para a página onde você possa reproduzir o problema. Em seguida, siga as etapas para o navegador apropriado:

**Topics**
+ [

## Google Chrome
](#chrome)
+ [

## Mozilla Firefox
](#firefox)
+ [

## Apple Safari
](#safari)
+ [

## O que fazer com a resposta do SAML codificada pelo Base64
](#whatnext)

## Google Chrome
<a name="chrome"></a>

**Para visualizar uma resposta do SAML no Chrome**

Essas etapas foram testadas usando a versão 106.0.5249.103 (compilação oficial) (arm64) do Google Chrome. Caso você use outra versão, talvez seja necessário adaptar as etapas adequadamente.

1. Pressione **F12** para iniciar o console **Developer Tools** (Ferramentas de desenvolvimento).

1. Selecione a guia **Network** (Rede) e, em seguida, selecione **Preserve log** (Preservar log) no canto superior esquerdo da janela **Developer Tools** (Ferramentas de desenvolvimento).

1. Reproduza o problema.

1. (Opcional) Se a coluna **Method** (Método) não estiver visível no painel de log **Network** (Rede) de **Developer Tools** (Ferramentas de desenvolvimento), clique com o botão direito do mouse em qualquer rótulo de coluna e escolha **Method** (Método) para adicionar a coluna.

1. Procure uma **publicação SAML** no painel de log **Network** (Rede) de **Developer Tools** (Ferramentas de desenvolvimento). Selecione essa linha e visualize a guia **Payload** (Carga) na parte superior. Procure o elemento **SAMLResponse** que contém a solicitação codificada. O valor associado é a resposta codificada pelo Base64.

## Mozilla Firefox
<a name="firefox"></a>

**Para visualizar uma resposta do SAML no Firefox**

Esse procedimento foi testado na versão 105.0.3 (64 bits) do Mozilla Firefox. Caso você use outra versão, talvez seja necessário adaptar as etapas adequadamente.

1. Pressione **F12** para iniciar o console **Ferramentas de desenvolvimento na Web**.

1. Selecione a guia **Rede**. 

1. Na parte superior direita da janela **Web Developer Tools **(Ferramentas de desenvolvimento na Web), escolha opções (o pequeno ícone de engrenagem). Selecione **Persist logs** (Persistir logs). 

1. Reproduza o problema.

1. (Opcional) Se a coluna **Method** (Método) não estiver visível no painel de log **Network** (Rede) de **Web Developer Tools** (Ferramentas de desenvolvimento na Web), clique com o botão direito do mouse em qualquer rótulo de coluna e escolha **Method** (Método) para adicionar a coluna.

1. Procure um **POST** **SAML** na tabela. Selecione essa linha e, em seguida, visualize a guia **Request** (Solicitação) e encontre o elemento **SAMLResponse**. O valor associado é a resposta codificada pelo Base64.

## Apple Safari
<a name="safari"></a>

**Para visualizar uma resposta do SAML no Safari**

Essas etapas foram testadas usando a versão 16.0 (17614.1.25.9.10, 17614) do Apple Safari. Caso você use outra versão, talvez seja necessário adaptar as etapas adequadamente.

1. Habilite o Inspetor Web no Safari. Abra a janela **Preferências**, selecione a guia **Avançado** e **Mostrar menu de desenvolvimento na barra de menus**.

1. Agora você pode abrir o Inspector Web. Escolha **Develop** (Desenvolver) na barra de menu e selecione **Show Web Inspector** (Mostrar o Inspetor da Web).

1. Selecione a guia **Rede**.

1. No canto superior esquerdo da janela **Web Inspector** (Inspetor da Web), escolha opções (o pequeno ícone de círculo contendo três linhas horizontais). Selecione **Preserve Log** (Preservar log).

1. (Opcional) Se a coluna **Method** (Método) não estiver visível no painel de log **Network** (Rede) de **Web Inspector** (Inspetor da Web), clique com o botão direito do mouse em qualquer rótulo de coluna e escolha **Method** (Método) para adicionar a coluna.

1. Reproduza o problema.

1. Procure um **POST** **SAML** na tabela. Selecione essa linha e visualize a guia Headers (Cabeçalhos).

1. Procure o elemento **SAMLResponse** que contém a solicitação codificada. Desça até encontrar `Request Data` com o nome `SAMLResponse`. O valor associado é a resposta codificada pelo Base64.

## O que fazer com a resposta do SAML codificada pelo Base64
<a name="whatnext"></a>

Assim que você encontrar o elemento de resposta do SAML codificado em Base64 no navegador, copie e use sua ferramenta de decodificação Base-64 de sua preferência para extrair a resposta marcada do XML.

**Dica de segurança**  
Como os dados da resposta do SAML que você está visualizando podem conter dados de segurança confidenciais, recomendamos que não use um decodificador base64 *online*. Em vez disso, use uma ferramenta instalada no seu computador local que não envie seus dados do SAML pela rede.

**Opção integrada para sistemas do Windows (PowerShell):**

```
PS C:\> [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("base64encodedtext"))
```

**Opção integrada para sistemas MacOS e Linux:**

```
$ echo "base64encodedtext" | base64 --decode
```

**Revisar os valores no arquivo decodificado**  
Revise os valores no arquivo de resposta SAML decodificado. 
+ Verifique se o valor do atributo saml:nameID corresponde ao nome de usuário do usuário autenticado.
+ Revise o valor de https://aws.amazon.com/SAML/Attributes/Role. O provedor de ARN e SAML diferencia maiúsculas de minúsculas, e o [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) deve corresponder ao recurso em sua conta.
+ Revise o valor de https://aws.amazon.com/SAML/Attributes/RoleSessionName. O valor deverá corresponder ao valor na [regra de declaração](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html).
+ Se você configurar o valor do atributo para um endereço de e-mail ou nome de conta, verifique se os valores estão corretos. Os valores deverão corresponder ao endereço de e-mail ou nome da conta do usuário autenticado.

**Verificar se há erros e confirmar a configuração**  
Verifique se os valores contêm erros e confirme se as configurações a seguir estão corretas.
+ As regras de declaração atendem aos elementos necessários e todos os ARNs estão corretos. Para obter mais informações, consulte [Configurar o IdP SAML 2.0 com objeto de confiança de terceira parte confiável e adição de declarações](id_roles_providers_create_saml_relying-party.md).
+ Você fez o upload do arquivo de metadados mais recente do seu IdP para o AWS em seu provedor de SAML. Para obter mais informações, consulte [Habilitar o acesso das entidades principais federadas do SAML 2.0 ao Console de gerenciamento da AWS](id_roles_providers_enable-console-saml.md).
+ Você configurou corretamente a política de confiança do perfil do IAM. Para obter mais informações, consulte [Métodos para assumir um perfil](id_roles_manage-assume.md).

# Federação de identidades da AWS para serviços externos
<a name="id_roles_providers_outbound"></a>

A federação de identidades de saída do IAM permite que suas workloads da AWS acessem com segurança serviços externos sem armazenar credenciais de longo prazo. Suas workloads da AWS podem solicitar JSON Web Tokens (JWTs) de curta duração do AWS Security Token Service (AWS STS) chamando a API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html). Esses tokens são assinados criptograficamente, verificáveis publicamente e contêm um conjunto abrangente de dados que comprovam a identidade da sua workload da AWS em serviços externos. Você pode usar esses tokens com uma ampla variedade de provedores de nuvem terceiros, plataformas SaaS e aplicações auto-hospedadas. Os serviços externos verificam a autenticidade do token usando as chaves de verificação da AWS publicadas em endpoints conhecidos e usam as informações nos tokens para tomar decisões de autenticação e autorização.

A federação de identidades de saída elimina a necessidade de armazenar credenciais de longo prazo, como chaves de API ou senhas, no código da aplicação ou nas variáveis de ambiente, melhorando sua postura de segurança. Você pode controlar o acesso à geração de tokens e aplicar propriedades de tokens, como algoritmos de assinatura, públicos permitidos e a duração, usando políticas do IAM. Todas as solicitações de token são registradas em log na AWS, fornecendo trilhas de auditoria completas para monitoramento de segurança e relatórios de conformidade. Você também pode personalizar tokens com tags que aparecem como reivindicações personalizadas, permitindo que serviços externos implementem um controle de acesso refinado e baseado em atributos.

## Casos de uso comuns
<a name="outbound-federation-use-cases"></a>

Usando a federação de identidades de saída, suas workloads da AWS podem:
+ Acessar recursos e serviços em provedores de nuvem externos. Por exemplo, uma função do Lambda que processa dados pode gravar resultados no serviço de armazenamento de um provedor de nuvem externo ou consultar seu banco de dados.
+ Integrar-se com provedores externos de software como serviço (SaaS) para analytics, processamento de dados, monitoramento etc. Por exemplo, suas funções do Lambda podem enviar métricas para plataformas de observabilidade.
+ Autenticar-se com suas próprias aplicações hospedadas na AWS, em provedores de nuvem externos ou em data centers on-premises, permitindo arquiteturas híbridas e multinuvem seguras. Por exemplo, suas workloads da AWS podem interagir com aplicações em contêineres em execução no seu cluster do Kubernetes on-premises.

## Como funciona
<a name="outbound-federation-how-it-works"></a>

![\[alt text not found\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/outbound-use-cases.png)


1. A função do Lambda chama a API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) para solicitar um JSON Web Token (JWT) do AWS Security Token Service (AWS STS).

1. O AWS STS valida a solicitação e retorna um JWT assinado para a função do Lambda.

1. A função do Lambda envia o JWT para o serviço externo.

1. O serviço externo extrai o URL do emissor do token, verifica se ele corresponde a um emissor confiável conhecido e obtém os metadados e as chaves de verificação da AWS do endpoint de descoberta do OIDC.

1. O serviço externo usa as chaves de verificação para verificar a assinatura do token e valida as reivindicações como prazo de validade, assunto e público.

1. Após a validação com êxito, o serviço externo concede acesso à função do Lambda.

# Conceitos básicos da federação de identidades de saída
<a name="id_roles_providers_outbound_getting_started"></a>

Este guia mostra como habilitar a federação de identidades de saída para sua conta da AWS e obter seu primeiro JSON Web Token (JWT) (usando a API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html)). Você habilitará o recurso, estabelecerá uma relação de confiança com um serviço externo, configurará as permissões do IAM e solicitará um token usando a AWS CLI ou o AWS SDK para Python (Boto3).

## Pré-requisitos
<a name="outbound-federation-prerequisites"></a>

Antes de começar, verifique se você tem:
+ Versão mais recente da AWS CLI ou do Python 3.8 (ou posterior) e do Boto3 instalado (para exemplos do AWS SDK)
+ Uma conta de serviço externa em que você pode configurar relações de confiança (como um provedor de nuvem externo, um provedor de SaaS ou uma aplicação de teste)

**nota**  
A API `GetWebIdentityToken` não está disponível no endpoint global do STS.
Os JSON Web Tokens (JWTs) gerados pela API `GetWebIdentityToken` não podem ser usados para a federação do OpenID Connect (OIDC) na AWS (por meio da API [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)).

## Habilitar a federação de identidades de saída para sua conta
<a name="enable-outbound-federation"></a>

Você deve habilitar a federação de identidades de saída antes de solicitar tokens. Você pode habilitar o recurso usando o Console de Gerenciamento da AWS, ou programaticamente usando a API [EnableOutboundWebIdentityFederation](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableOutboundWebIdentityFederation.html).

### Usar a AWS CLI
<a name="enable-using-cli"></a>

```
aws iam enable-outbound-web-identity-federation
```

### Uso do AWS SDK para Python
<a name="enable-using-sdk"></a>

```
import boto3

# Create IAM client
iam_client = boto3.client('iam')

# Enable outbound identity federation
response = iam_client.enable_outbound_web_identity_federation()
print(f"Feature enabled. Issuer URL: {response['IssuerUrl']}")
print(f"Status: {response['Status']}")
```

### Usar o console AWS
<a name="enable-using-console"></a>

Navegue até IAM e selecione **Configurações da conta** na seção **Gerenciamento de acesso** do menu de navegação à esquerda.

![\[alt text not found\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/outbound-screen-1.png)


Depois de habilitar o recurso, anote o URL do emissor específico da sua conta. Você usará esse URL ao configurar relações de confiança em serviços externos. Você também pode recuperar esse URL do emissor, conforme necessário, usando a API [GetOutboundWebIdentityFederationInfo](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOutboundWebIdentityFederationInfo.html).

![\[alt text not found\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/outbound-screen-2.png)


## Estabelecer uma relação de confiança no serviço externo
<a name="establish-trust-relationship"></a>

Configure o serviço externo para confiar e aceitar os tokens emitidos por sua conta da AWS. As etapas específicas variam de acordo com o serviço, mas geralmente envolvem:
+ Registrar o URL do emissor da sua conta da AWS como um provedor de identidades confiável
+ Configurar quais reivindicações validar (público, padrões de assunto)
+ Mapear reivindicações de tokens para permissões no serviço externo

Consulte a documentação do serviço externo para obter instruções detalhadas de configuração.

## Configurar permissões do IAM
<a name="configure-iam-permissions"></a>

Crie uma política do IAM que conceda permissão para chamar a API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) e anexe a política a um perfil do IAM que precisa gerar tokens.

Este exemplo de política concede acesso à geração de tokens com restrições específicas. Ela permite solicitar tokens somente para “https://api.example.com” como público e aplica uma vida útil máxima do token de cinco minutos (300 segundos). Consulte [Chaves de contexto de condição do IAM e do AWS STS](reference_policies_iam-condition-keys.md) para obter uma lista das chaves de condição que você pode usar para aplicar as propriedades do token.

### Exemplo de política do IAM
<a name="example-iam-policy"></a>

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:GetWebIdentityToken",
            "Resource": "*",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "sts:IdentityTokenAudience": "https://api.example.com"
                },
                "NumericLessThanEquals": {
                    "sts:DurationSeconds": 300
                }
            }
        }
    ]
}
```

## Solicitar seu primeiro JSON Web Token (JWT)
<a name="request-first-jwt"></a>

Você pode solicitar um JSON Web Token usando a API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html). Você pode especificar os seguintes parâmetros ao chamar a API:
+ **Audience (obrigatório):** o destinatário pretendido do token. Esse valor preenche a reivindicação “aud” no JWT. Os serviços externos validam essa reivindicação para garantir que o token foi destinado a eles.
+ **SigningAlgorithm (obrigatório):** o algoritmo criptográfico usado para assinar o token. Os valores válidos são ES384 e RS256. Use o ES384 para obter segurança e desempenho ideais, ou o RS256 para uma compatibilidade mais ampla com sistemas que não são compatíveis com o ECDSA.
+ **DurationSeconds (opcional):** a vida útil do token em segundos. Os valores válidos variam de 60 a 3600. O padrão é 300 (5 minutos). Recomendamos uma vida útil mais curta do token para aumentar a segurança.
+ **Tags (opcional):** uma lista de pares de chave/valor a serem incluídos como reivindicações personalizadas no token. Os serviços externos podem usar essas reivindicações para uma autorização refinada.

A API retorna os seguintes campos:
+ **IdentityToken:** o JWT assinado como uma string codificada em base64url. Inclua esse token nas reivindicações para serviços externos.
+ **Expiration:** é um carimbo de data e hora UTC para quando o token expirar.

### Usar a AWS CLI
<a name="using-aws-cli"></a>

```
aws sts get-web-identity-token \
    --audience "https://api.example.com" \
    --signing-algorithm ES384 \
    --duration-seconds 300 \
    --tags Key=team,Value=data-engineering \
           Key=environment,Value=production \
           Key=cost-center,Value=analytics
```

### Uso do AWS SDK para Python
<a name="using-aws-sdk-python"></a>

```
import boto3

sts_client = boto3.client('sts')

response = sts_client.get_web_identity_token(
    Audience=['https://api.example.com'],
    DurationSeconds=300,
    SigningAlgorithm='RS256',
    Tags=[
        {'Key': 'team', 'Value': 'data-engineering'},
        {'Key': 'environment', 'Value': 'production'},
        {'Key': 'cost-center', 'Value': 'analytics'}
    ]
)

token = response['WebIdentityToken']
```

Você também pode decodificar o JWT para inspecionar seu conteúdo usando bibliotecas JWT padrão como PyJWT, Python-jose para Python, Nimbus JOSE\$1JWT para Java ou depuradores como jwt.io. Consulte [Análise de reivindicações de tokens](id_roles_providers_outbound_token_claims.md) para obter mais informações sobre as reivindicações incluídas no token.

## Usar o token com um serviço externo
<a name="use-token-with-external-service"></a>

Depois de receber o token, inclua-o nas solicitações para o serviço externo. O método varia de acordo com o serviço, mas a maioria dos serviços aceita tokens no cabeçalho de autorização. O serviço externo deve implementar uma lógica de validação de tokens que obtenha as chaves JWKS do endpoint conhecido do emissor, verifique a assinatura do token e valide as reivindicações essenciais antes de conceder acesso às suas workloads da AWS.

## Obter chaves de verificação e metadados dos endpoints do OpenID Connect (OIDC)
<a name="fetch-verification-keys"></a>

O URL exclusivo do emissor da sua conta da AWS hospeda os endpoints de descoberta do OpenID Connect (OIDC) que contêm as chaves de verificação e os metadados necessários para a verificação do token.

O URL do endpoint de descoberta do OIDC contém metadados que alguns provedores usam para verificar os tokens. Está disponível em:

```
{issuer_url}/.well-known/openid-configuration
```

O endpoint do JWKS (JSON Web Key Set) contém as chaves usadas para verificar as assinaturas de tokens. Está disponível em:

```
{issuer_url}/.well-known/jwks.json
```

### Obter o JWKS usando curl
<a name="fetch-jwks-curl"></a>

```
curl https://{issuer_url}/.well-known/jwks.json
```

Resposta:

```
{
  "keys": [
    {
      "kty": "EC",
      "use": "sig",
      "kid": "key-id-1",
      "alg": "ES384",
      "crv": "P-384",
      "x": "base64-encoded-x-coordinate",
      "y": "base64-encoded-y-coordinate"
    },
    {
      "kty": "RSA",
      "use": "sig",
      "kid": "key-id-2",
      "n": "base64-encoded-modulus",
      "e": "AQAB"
    }
  ]
}
```

### Uso do AWS SDK para Python
<a name="fetch-using-sdk"></a>

```
import requests

# Fetch Openid Configuration
open_id_config_response = requests.get("https://{issuer_url}/.well-known/openid-configuration")
open_id_config = open_id_config_response.json()

# Fetch JWKS
jwks_response = requests.get("https://{issuer_url}/.well-known/jwks.json")
jwks = jwks_response.json()
```

Recomendamos armazenar essas chaves em cache para evitar ter de obtê-las em cada verificação de token.

### Validações essenciais de reivindicações
<a name="essential-claim-validations"></a>
+ **Subject (sub):** verifique se a reivindicação do assunto contém o padrão de ARN da entidade principal esperada do IAM.
+ **Expiration (exp):** verifique se o token não expirou. As bibliotecas JWT normalmente lidam com isso automaticamente.
+ **Audience (aud):** verifique se o público corresponde ao valor esperado. Isso evita que tokens destinados a outros serviços sejam usados com os seus.
+ **Issuer (es):** verifique se o emissor corresponde às contas da AWS em que você confia. Mantenha uma lista de URLs de emissores confiáveis.

Sempre que possível, você deve validar reivindicações adicionais específicas da AWS para implementar um controle de acesso refinado em seu serviço externo. Por exemplo, valide a reivindicação org\$1id para restringir o acesso às entidades principais do IAM em sua organização da AWS, verifique principal\$1tags para aplicar o controle de acesso baseado em atributos (como permitir somente ambientes de produção ou equipes específicas) ou verifique as reivindicações de contexto de sessão, como lambda\$1source\$1function\$1arn ou ec2\$1instance\$1source\$1vpc, para restringir o acesso com base no recurso computacional. Consulte [Análise das reivindicações de tokens](id_roles_providers_outbound_token_claims.md) para obter uma lista completa das reivindicações incluídas no token.

# Análise de reivindicações de tokens
<a name="id_roles_providers_outbound_token_claims"></a>

Quando você chama a API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html), o AWS Security Token Service retorna um JSON Web Token (JWT) assinado que contém um conjunto de reivindicações que representam a identidade da entidade principal do IAM. Esses tokens são compatíveis com a [RFC 7519](https://datatracker.ietf.org/doc/html/rfc7519). Compreender a estrutura e o conteúdo desses tokens ajuda você a implementar fluxos de autenticação seguros, configurar validações de reivindicações apropriadas em serviços externos e usar com eficácia reivindicações personalizadas para um controle de acesso refinado.

O JWT inclui reivindicações padrão do OpenID Connect (OIDC), como subject (“sub”), audience (“aud”), issuer (“iss”), para facilitar a interoperabilidade entre diferentes serviços externos. O AWS STS preenche o token com reivindicações específicas de identidade da AWS (como as tags da entidade principal e do ID da conta da AWS) e reivindicações de contexto de sessão (como ARNs de instância do EC2), quando aplicável. Você também pode adicionar reivindicações personalizadas ao token transmitindo-as como tags de solicitação para a API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html). As reivindicações específicas de identidade da AWS, as reivindicações de contexto da sessão e as reivindicações personalizadas estão aninhadas no namespace “https://sts.amazonaws.com/” no token.

Consulte o exemplo de token abaixo para ver uma lista das reivindicações incluídas no token. Observe que todas essas reivindicações podem não estar presentes em um token ao mesmo tempo. 

```
{
  "iss": "https://abc123-def456-ghi789-jkl012.tokens.sts.global.api.aws",
  "aud": "https://api.example.com",
  "sub": "arn:aws:iam::123456789012:role/DataProcessingRole",
  "iat": 1700000000,
  "exp": 1700000900,
  "jti": "xyz123-def456-ghi789-jkl012",
  "https://sts.amazonaws.com/": {
    "aws_account": "123456789012",
    "source_region": "us-east-1",
    "org_id": "o-abc1234567",
    "ou_path": "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/",
    "principal_tags": {
      "environment": "production",
      "team": "data-engineering",
      "cost-center": "engineering"
    },
    "lambda_source_function_arn": "arn:aws:lambda:us-east-1:123456789012:function:process-data",
    "request_tags": {
        "job-id": "job-2024-001",
        "priority": "high",
        "data-classification": "sensitive"
    }
  }
}
```

## Reivindicações padrão
<a name="standard-claims"></a>

As reivindicações padrão do OIDC presentes nos tokens facilitam a interoperabilidade com uma ampla gama de serviços externos. Essas reivindicações podem ser validadas usando a maioria das bibliotecas JWT.


| Reivindicar | Name (Nome) | Descrição | Valor de exemplo | 
| --- | --- | --- | --- | 
| iss | Emissor | URL do emissor específico da sua conta. Os serviços externos validam essa reivindicação para garantir que ela corresponda ao emissor confiável. | https://abc123-def456-ghi789-jkl012.tokens.sts.global.api.aws | 
| aud | Público | O destinatário pretendido para o token especificado na solicitação [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html). | https://api.example.com | 
| sub | Assunto | O ARN da entidade principal do IAM que solicitou o token. | arn:aws:iam::123456789012:role/DataProcessingRole | 
| iat | Emitido em | Valor NumericDate que identifica a hora em que o JWT foi emitido. | 1700000000 | 
| exp | Expiração | Valor NumericDate que identifica o prazo de expiração, após o qual o JWT NÃO DEVE ser aceito para processamento. | 1700000900 | 
| jti | ID do JWT | Identificador exclusivo dessa instância de token. | xyz123-def456-ghi789-jkl012 | 

## Reivindicações personalizadas
<a name="custom-claims"></a>

Além das reivindicações padrão do OIDC, o AWS STS adiciona reivindicações sobre a identidade e o contexto da sessão, quando aplicável. Você também pode adicionar suas próprias reivindicações ao token ao transmiti-las como tags de solicitação. As reivindicações personalizadas estão aninhadas no namespace https://sts.amazonaws.com/.

### Reivindicações de identidade da AWS
<a name="aws-identity-claims"></a>

Essas reivindicações fornecem informações detalhadas sobre sua conta da AWS, estrutura organizacional e entidade principal do IAM.


| Reivindicar | Descrição | Mapas para a chave de condição | Valor de exemplo | 
| --- | --- | --- | --- | 
| aws\$1account | O ID da sua conta da AWS | [aws:PrincipalAccount](reference_policies_condition-keys.md#condition-keys-principalaccount) | 123456789012 | 
| source\$1region | A região da AWS em que o token foi solicitado | [aws:RequestedRegion](reference_policies_condition-keys.md#condition-keys-requestedregion) | us-east-1 | 
| org\$1id | Seu ID do AWS Organizations (se a sua conta fizer parte de uma organização) | [aws:PrincipalOrgID](reference_policies_condition-keys.md#condition-keys-principalorgid) | o-abc1234567 | 
| ou\$1path | O caminho da sua unidade organizacional (se aplicável) | [aws:PrincipalOrgPaths](reference_policies_condition-keys.md#condition-keys-principalorgpaths) | o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/ou-ab12-22222222/ | 
| principal\$1tags | Tags anexadas à entidade principal do IAM ou à sessão de perfil assumido. Quando um token é solicitado em que a entidade principal do IAM solicitante tem tags da entidade principal e de sessão, as tags de sessão estarão presentes no JWT. | [aws:PrincipalTag/<tag-key>](reference_policies_condition-keys.md#condition-keys-principaltag) | \$1"environment": "production", "team": "data-engineering", "cost-center":"engineering"\$1 | 

### Reivindicações de contexto de sessão
<a name="session-context-claims"></a>

Essas reivindicações fornecem informações sobre o ambiente computacional e a sessão em que a solicitação de token foi originada. O AWS AWS STS inclui automaticamente essas reivindicações, quando aplicável, com base no contexto da sessão da entidade principal solicitante.


| Reivindicar | Descrição | Mapas para a chave de condição | Valor de exemplo | 
| --- | --- | --- | --- | 
| original\$1session\$1exp | Quando as credenciais da sessão de perfil original expirarão (para perfis assumidos) | N/D | 2024-01-15T10:00:00Z | 
| federated\$1provider | O nome do provedor de identidade para sessões federadas | [aws:FederatedProvider](reference_policies_condition-keys.md#condition-keys-federatedprovider) | arn:aws:iam::111122223333:oidc-provider/your\$1oidc\$1provider | 
| identity\$1store\$1user\$1id | ID do usuário do Centro de Identidade do IAM | [identitystore:UserId](reference_policies_condition-keys.md#condition-keys-identity-store-user-id) | user-abc123def456 | 
| identity\$1store\$1arn | ARN do armazenamento de identidades do Centro de Identidade do IAM | [identitystore:IdentityStoreArn](https://docs.aws.amazon.com/singlesignon/latest/userguide/condition-context-keys-sts-idc.html#condition-keys-identity-store-arn) | arn:aws:identitystore::123456789012:identitystore/d-abc1234567 | 
| ec2\$1source\$1instance\$1arn | ARN da instância solicitante do EC2 | [ec2:SourceInstanceArn](reference_policies_condition-keys.md#condition-keys-ec2-source-instance-arn) | arn:aws:ec2:us-east-1:123456789012:instance/i-abc123def456 | 
| ec2\$1instance\$1source\$1vpc | ID da VPC em que as credenciais de perfil do EC2 foram entregues | [aws:Ec2InstanceSourceVpc](reference_policies_condition-keys.md#condition-keys-ec2instancesourcevpc) | vpc-abc123def456 | 
| ec2\$1instance\$1source\$1private\$1ipv4 | Endereço IPv4 privado da instância do EC2 | [aws:Ec2InstanceSourcePrivateIPv4](reference_policies_condition-keys.md#condition-keys-ec2instancesourceprivateip4) | 10.0.1.25 | 
| ec2\$1role\$1delivery | Versão do serviço de metadados da instância | [ec2:RoleDelivery](reference_policies_condition-keys.md#condition-keys-ec2-role-delivery) | 2 | 
| source\$1identity | Identidade de origem definida pela entidade principal | [aws:SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) | admin-user | 
| lambda\$1source\$1function\$1arn | O ARN da função do Lambda chamadora | [lambda:SourceFunctionArn](reference_policies_condition-keys.md#condition-keys-lambda-source-function-arn) | arn:aws:lambda:us-east-1:123456789012:function:my-function | 
| glue\$1credential\$1issuing\$1service | Identificador do serviço do AWS Glue para trabalhos do Glue | [glue:CredentialIssuingService](reference_policies_condition-keys.md#condition-keys-glue-credential-issuing) | glue.amazonaws.com | 

### Tags da solicitação
<a name="request-tags"></a>

Você pode adicionar reivindicações personalizadas aos tokens especificando tags na solicitação da API [GetWebIdentityToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html). Essas reivindicações aparecem no campo request\$1tags no token e permitem que você transmita informações específicas que os serviços externos podem usar para decisões de autorização refinadas. Você pode especificar até 50 tags por solicitação.

Exemplo de solicitação:

```
response = sts_client.get_web_identity_token(
    Audience=['https://api.example.com'],
    SigningAlgorithm='ES384'
    Tags=[
        {'Key': 'team', 'Value': 'data-engineering'},
        {'Key': 'cost-center', 'Value': 'analytics'},
        {'Key': 'environment', 'Value': 'production'}
    ]
)
```

Reivindicações resultantes no token:

```
{
  "request_tags": {
    "team": "data-engineering",
    "cost-center": "analytics",
    "environment": "production"
  }
}
```

# Controle do acesso com políticas do IAM
<a name="id_roles_providers_outbound_policies"></a>

O IAM fornece vários tipos de políticas para controlar o acesso ao recurso de federação de identidades de saída. Você pode usar [políticas baseadas em identidade](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) para controlar quais entidades principais do IAM podem solicitar tokens e aplicar propriedades específicas de tokens, como público, vida útil e algoritmos de assinatura. As [políticas de controle de serviços](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) (SCPs) permitem que você aplique restrições em toda a organização à geração de tokens em todas as contas no seu AWS Organizations. As [políticas de controle de recursos](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) (RCPs) controlam o acesso no nível do recurso. Você também pode usar [políticas de endpoint da VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) para restringir quais entidades principais podem acessar a API `GetWebIdentityToken` do AWS STS por meio de seus endpoints da VPC, adicionando controles em nível de rede à sua postura de segurança. Esta seção explica como implementar controles de acesso refinados usando esses tipos de política e chaves de condição.

Para solicitar tokens de identidade, uma entidade principal do IAM deve ter a permissão `sts:GetWebIdentityToken`. Conceda essa permissão por meio de políticas de identidade anexadas aos usuários ou perfis do IAM. Para permitir que tags (pares de chave/valor) sejam transmitidas para a chamada de GetWebIdentityToken, a entidade principal do IAM deve ter a permissão `sts:TagGetWebIdentityToken`.
+ Use a chave de condição [sts:IdentityTokenAudience](reference_policies_iam-condition-keys.md#ck_identitytokenaudience) para limitar quais serviços externos podem receber tokens.
+ Use a chave de condição [sts:DurationSeconds](reference_policies_iam-condition-keys.md#ck_durationseconds) para aplicar a vida útil máxima do token.
+ Use a chave de condição [sts:SigningAlgorithm](reference_policies_iam-condition-keys.md#ck_signingalgorithm) para exigir algoritmos criptográficos específicos.
+ Use a chave de condição [aws:RequestTag](reference_policies_condition-keys.md#condition-keys-requesttag) para comparar o par de chave/valor da tag que foi transmitido na solicitação com o par de tags especificado na política.
+ Use a chave de condição [aws:RequestTag](reference_policies_condition-keys.md#condition-keys-tagkeys) para comparar as chaves de tags em uma solicitação com as chaves especificadas na política.

Consulte as chaves de condição do [IAM e AWS STS](reference_policies_iam-condition-keys.md) para saber mais sobre as chaves de condição disponíveis nas políticas do IAM.

Esse exemplo de política de identidade combina várias chaves de condição:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowTokenGenerationWithRestrictions",
            "Effect": "Allow",
            "Action": "sts:GetWebIdentityToken",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "sts:IdentityTokenAudience": [
                        "https://api1.example.com",
                        "https://api2.example.com"
                    ]
                },
                "NumericLessThanEquals": {
                    "sts:DurationSeconds": 300
                },
                "StringEquals": {
                    "sts:SigningAlgorithm": "ES384"
                }
            }
        }
    ]
}
```

## Práticas recomendadas
<a name="outbound-best-practices"></a>

Siga essas recomendações para federar com segurança suas identidades da AWS em serviços externos.
+ **Use tokens com vida útil curta:** solicite tokens com a vida útil mais curta que atenda às suas necessidades operacionais.
+ **Implemente o acesso com privilégio mínimo e restrinja as propriedades do token com as políticas do IAM:** conceda a permissão `sts:GetWebIdentityToken` somente às entidades principais do IAM que a exijam. Use chaves de condição para especificar algoritmos de assinatura, públicos permitidos de tokens e vida útil máxima de tokens, conforme necessário.
+ **Valide reivindicações em serviços externos:** por questões de segurança, sempre valide as reivindicações relevantes, como subject (“sub”), audience (“aud”) etc. para garantir que elas correspondam aos valores esperados. Valide as reivindicações personalizadas sempre que possível para permitir decisões de autorização detalhadas em serviços externos.

# Credenciais de segurança temporárias no IAM
<a name="id_credentials_temp"></a>

É possível usar o AWS Security Token Service (AWS STS) para criar e fornecer aos usuários confiáveis credenciais de segurança temporárias que podem controlar o acesso aos seus recursos da AWS. As credenciais de segurança temporárias funcionam quase de forma idêntica às credenciais de chave de acesso de longo prazo, com as seguintes diferenças:
+ As credenciais de segurança temporárias são de *curto prazo*, como o nome indica. Elas podem ser configuradas para durar de alguns minutos a várias horas. Depois que as credenciais expiram, a AWS não as reconhece mais ou permite qualquer tipo de acesso de solicitações de API feitas com elas.
+ As credenciais de segurança temporárias não são armazenadas com o usuário, mas são geradas dinamicamente e fornecidas ao usuário quando solicitadas. Quando (ou até mesmo antes) as credenciais de segurança temporárias expiram, o usuário pode solicitar novas credenciais, desde que o usuário solicitante ainda tenha permissões para fazê-lo.

Como resultado, as credenciais temporárias apresentam as seguintes vantagens em relação às credenciais de longo prazo:
+ Você não tem que distribuir ou incorporar credenciais de segurança da AWS de longo prazo com um aplicativo.
+ É possível fornecer acesso aos seus recursos da AWS para os usuários sem a necessidade de definir uma identidade da AWS para eles. As credenciais temporárias são a base para [perfis](id_roles.md) e a [federação de identidades](id_roles_providers.md).
+ As credenciais de segurança temporárias têm vida limitada. Portanto, não é necessário atualizá-las ou explicitamente revogá-las quando elas não forem mais necessárias. Quando as credenciais de segurança temporárias expiram, elas não podem ser reutilizadas. É possível especificar por quanto tempo as credenciais são válidas, até um limite máximo. 

## AWS STS e regiões da AWS
<a name="sts-regionalization"></a>

Credenciais de segurança temporárias são geradas pelo AWS STS. Por padrão, o AWS STS é um serviço global com um único endpoint em `https://sts.amazonaws.com`. No entanto, você também pode optar por fazer chamadas de API do AWS STS para endpoints em qualquer outra região com suporte. Isso pode reduzir a latência (atraso do servidor), enviando as solicitações para servidores em uma região que está geograficamente mais perto de você. Não importa de qual região suas credenciais são, elas funcionam globalmente. Para obter mais informações, consulte [Gerenciar o AWS STS em uma Região da AWS](id_credentials_temp_enable-regions.md).

## Cenários comuns para credenciais temporárias
<a name="sts-introduction"></a>

As credenciais temporárias são úteis em cenários que envolvem federação de identidades, delegação, acesso entre contas e funções do IAM.

### Federação de identidades
<a name="id-federation"></a>

Você pode gerenciar suas identidades de usuários em um sistema externo fora da AWS e conceder acesso aos usuários que fazem login a partir desses sistemas para realizar tarefas da AWS e acessar seu recursos da AWS. O IAM é compatível com dois tipos de federação de identidades. Em ambos os casos, as identidades são armazenadas fora da AWS. A distinção é onde o sistema externo reside, em seu data center ou em um terceiro externo na Web. Para comparar os recursos das credenciais de segurança temporárias para federação de identidades, consulte [Compare credenciais do AWS STS](id_credentials_sts-comparison.md).

Para obter mais informações sobre provedores de identidade externos, consulte [Federação e provedores de identidade na AWS](id_roles_providers.md).
+ **Federação OpenID Connect (OIDC)**: é possível permitir que os usuários iniciem sessão usando um provedor de identidade de terceiros conhecido, como Login with Amazon, Facebook, Google ou qualquer provedor compatível com o OIDC 2.0 para sua aplicação móvel ou Web. Não é necessário criar um código de início de sessão personalizado nem gerenciar suas próprias identidades de usuário. O uso da federação OIDC ajuda a manter sua Conta da AWS segura, pois você não precisa distribuir credenciais de segurança de longo prazo, como chaves de acesso de usuários do IAM, com a aplicação. Para obter mais informações, consulte [Federação OIDC](id_roles_providers_oidc.md).

  A federação OIDC do AWS STS oferece suporte a Login with Amazon, Facebook, Google e qualquer provedor de identidades compatível com OpenID Connect (OIDC).
**nota**  
Para aplicações móveis, recomendamos o uso do Amazon Cognito. Você pode usar esse serviço com SDKs da AWS para desenvolvimento de dispositivos móveis para criar identidades exclusivas para os usuários e autenticá-las para acesso seguro aos recursos da AWS. O Amazon Cognito oferece suporte aos mesmos provedores de identidade do AWS STS e também oferece suporte ao acesso não autenticado (de convidado) e permite que você migre os dados do usuário quando um usuário faz login. O Amazon Cognito também fornece operações de API para sincronização de dados de usuário para que eles sejam preservados à medida que passarem de um dispositivo para outro. Para obter mais informações, consulte [Autenticação com o Amplify](https://docs.amplify.aws/lib/auth/getting-started/q/platform/js/#authentication-with-amplify) na *documentação do Amplify*.
+ **Federação SAML**: é possível autenticar usuários na rede da sua organização e, em seguida, fornecer a eles acesso à AWS sem criar novas identidades da AWS para eles nem exigir que façam login com credenciais de login diferentes. Isso é conhecido como a abordagem de *logon único* para acesso temporário. O AWS STS é compatível com padrões abertos, como o Security Assertion Markup Language (SAML) 2.0, com o qual você pode usar o Microsoft AD FS para utilizar seu Microsoft Active Directory. Você também pode usar o SAML 2.0 para gerenciar sua própria solução para federação de identidades de usuários. Para obter mais informações, consulte [Federação SAML 2.0](id_roles_providers_saml.md).
  + **Agente de federação personalizado**: você pode usar o sistema de autenticação da sua organização para conceder acesso aos recursos da AWS. Para obter um cenário de exemplo, consulte [Habilitar o acesso do intermediador de identidades personalizado ao console da AWS](id_roles_providers_enable-console-custom-url.md).
  + **Federação com SAML 2.0**: você pode usar o sistema de autenticação da sua organização e o SAML para conceder acesso aos recursos da AWS. Para obter mais informações e um cenário de exemplo, consulte [Federação SAML 2.0](id_roles_providers_saml.md).

### Funções para acesso entre contas
<a name="role_cross-account"></a>

Muitas organizações mantêm mais de uma Conta da AWS. Com o uso de funções e acesso entre contas, você pode definir identidades de usuários em uma conta e usar essas identidades para acessar recursos da AWS em outras contas que pertencem à sua organização. Isso é conhecido como a abordagem de *delegação* para acesso temporário. Para obter mais informações sobre a criação de funções entre contas, consulte [Criar um perfil para conceder permissões a um usuário do IAM](id_roles_create_for-user.md). Para saber se as entidades de contas fora de sua zona de confiança (organização confiável ou conta) têm acesso para assumir as suas funções, consulte [O que é o IAM Access Analyzer?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html).

### Funções do Amazon EC2
<a name="role_ec2"></a>

Se você executa aplicações em instâncias do Amazon EC2 e essas aplicações precisam de acesso a recursos da AWS, você pode fornecer credenciais de segurança temporárias para suas instâncias ao executá-las. Essas credenciais de segurança temporárias estão disponíveis para todos os aplicativos que são executados na instância, portanto você não precisa armazenar qualquer credencial de longo prazo na instância. Para obter mais informações, consulte [Use um perfil do IAM para conceder permissões a aplicações em execução em instâncias do Amazon EC2](id_roles_use_switch-role-ec2.md).

Para saber mais sobre as credenciais de perfil do IAM do Amazon EC2, consulte [Perfis do IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) no *Guia do usuário do Amazon Elastic Compute Cloud*.

### Outros serviços da AWS
<a name="other-services"></a>

Você pode usar credenciais de segurança temporárias para acessar a maioria dos serviços da AWS. Para obter uma lista dos serviços que aceitam credenciais de segurança temporárias, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md).

## Amostra de aplicações que usam credenciais temporárias
<a name="id_credentials_temp_sample-apps"></a>

É possível usar o AWS Security Token Service (AWS STS) para criar e fornecer aos usuários confiáveis credenciais de segurança temporárias que podem controlar o acesso aos seus recursos da AWS. Para obter mais informações sobre o AWS STS, consulte [Credenciais de segurança temporárias no IAM](#id_credentials_temp). Para ver como usar AWS STS para gerenciar credenciais de segurança temporárias, você pode fazer download dos seguintes exemplos de aplicativos que implementam exemplos de cenários completos:
+ [Habilitar a federação na AWS usando o Windows Active Directory, o ADFS e o SAML 2.0](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/). Demonstra como delegar o acesso usando a federação corporativa na AWS usando Windows Active Directory (AD), Active Directory Federation Services (ADFS) 2.0 e SAML (Security Assertion Markup Language) 2.0.
+ [Habilitar o acesso do intermediador de identidades personalizado ao console da AWS](id_roles_providers_enable-console-custom-url.md). Demonstra como criar um proxy de federação personalizado que permite autenticação única (SSO) para que os usuários do Active Directory existentes possam iniciar sessão no Console de gerenciamento da AWS.
+ [Como usar o Shibboleth para autenticação única no Console de gerenciamento da AWS.](https://aws.amazon.com/blogs/security/how-to-use-shibboleth-for-single-sign-on-to-the-aws-management-console/). Mostra como usar o [Shibboleth](http://shibboleth.net/) e o [SAML](id_roles_providers_saml.md) para fornecer aos usuários logon único (SSO) ao Console de gerenciamento da AWS.

### Exemplos de federação OIDC
<a name="sts-sample-apps-wif"></a>

Os exemplos de apliacações a seguir ilustram como usar a federação OIDC com provedores como Login with Amazon, Amazon Cognito, Facebook ou Google. Você pode trocar a autenticação desses provedores por credenciais de segurança temporárias da AWS para acessar serviços da AWS.
+ [Tutoriais do Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorials.html): recomendamos que você use o Amazon Cognito com os AWS SDKs para desenvolvimento móvel. O Amazon Cognito é a maneira mais simples de gerenciar identidades para aplicativos móveis e fornece recursos adicionais como sincronização e identidade entre dispositivos. Para obter mais informações sobre o Amazon Cognito, consulte [Autenticação com o Amplify](https://docs.amplify.aws/lib/auth/getting-started/q/platform/js/#authentication-with-amplify) na *documentação do Amplify*.

## Recursos adicionais para credenciais de segurança temporárias
<a name="id_credentials_temp_related-topics"></a>

Os seguintes cenários e aplicativos podem orientá-lo quanto ao uso de credenciais de segurança temporárias: 
+ [Como integrar o AWS STS SourceIdentity ao seu provedor de identidade](https://aws.amazon.com/blogs/security/how-to-integrate-aws-sts-sourceidentity-with-your-identity-provider/). Esta postagem mostra como configurar o atributo do AWS STS `SourceIdentity` ao usar Okta, Ping ou OneLogin como IdP.
+  [Federação OIDC](id_roles_providers_oidc.md). Esta seção discute como configurar perfis do IAM ao usar federação OIDC e a API `AssumeRoleWithWebIdentity`. 
+ [Acesso seguro à API com a MFA](id_credentials_mfa_configure-api-require.md). Este tópico explica como usar funções para exigir a autenticação multifator (MFA) para proteger ações de API confidenciais em sua conta.

Para obter mais informações sobre políticas e permissões na AWS, consulte os seguintes tópicos:
+ [Gerenciamento de acesso para recursos da AWS](access.md)
+ [Lógica da avaliação de política](reference_policies_evaluation-logic.md).
+ [Gerenciar permissões de acesso aos seus recursos do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html) no *Guia do usuário do Amazon Simple Storage Service*.
+  Para saber se as entidades de contas fora de sua zona de confiança (organização confiável ou conta) têm acesso para assumir as suas funções, consulte [O que é o IAM Access Analyzer?](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html).

# Compare credenciais do AWS STS
<a name="id_credentials_sts-comparison"></a>

A tabela a seguir compara os recursos das operações da API no AWS STS que retornam credenciais de segurança temporárias. Para saber mais sobre os diferentes métodos que você pode usar para solicitar credenciais de segurança temporárias ao assumir uma função, consulte [Métodos para assumir um perfil](id_roles_manage-assume.md). Para saber mais sobre as diferentes operações de API do AWS STS que permitem passar tags de sessão, consulte [Passar tags de sessão no AWS STS](id_session-tags.md).

**nota**  
Você pode enviar chamadas de API do AWS STS para um endpoint global ou para um dos endpoints regionais. Se escolher um endpoint mais próximo a você, você poderá reduzir a latência e melhorar a performance de suas chamadas de API. Você também pode optar por direcionar suas chamadas para um endpoint regional alternativo se não puder mais se comunicar com o endpoint original. Se estiver usando um dos vários SDKs da AWS, use o método do respectivo SDK para especificar uma região antes de fazer a chamada de API. Se construir manualmente as solicitações de API HTTP, você deverá direcionar a solicitação para o endpoint correto. Para obter mais informações, consulte a seção [AWS STS de *Regiões e endpoints*](https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region) e [Gerenciar o AWS STS em uma Região da AWS](id_credentials_temp_enable-regions.md).


|  **API do AWS STS**  |  **Quem pode chamar**  |  **Vida útil da credencial (mín.\$1máx.\$1padrão)**  |  **Suporte a MFA**¹  |  **Suporte à política de sessão**²  |  **Restrições nas credenciais temporárias resultantes**  | 
| --- | --- | --- | --- | --- | --- | 
|  [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)  | Usuário do IAM ou função do IAM com credenciais de segurança temporárias existentes  | 15 min \$1 Configuração de duração máxima da sessão³ \$1 1 h  | Sim  | Sim |  Não pode chamar `GetFederationToken` ou `GetSessionToken`.  | 
|  [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)  | Todo chamador de usuário; deve passar uma resposta de autenticação de SAML que indica a autenticação de um provedor de identidade conhecido | 15 min \$1 Configuração de duração máxima da sessão³ \$1 1 h  | Não | Sim |  Não pode chamar `GetFederationToken` ou `GetSessionToken`.  | 
|  [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)  | Qualquer usuário; o chamador deve passar um token JWT compatível com OIDC que indique a autenticação por um provedor de identidade conhecido | 15 min \$1 Configuração de duração máxima da sessão³ \$1 1 h  | Não | Sim |  Não pode chamar `GetFederationToken` ou `GetSessionToken`.  | 
| [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) | Usuário do IAM ou Usuário raiz da conta da AWS |  Usuário do IAM: 15 min \$1 36 h \$1 12 h Usuário raiz: 15 min \$1 1 h \$1 1 h  | Não  | Sim  |  Não é possível chamar operações do IAM usando a AWS CLI ou a API da AWS. Essa limitação não se aplica a sessões do console. Não é possível chamar operações do AWS STS, exceto `GetCallerIdentity`.⁴ Logon único para console é permitido.⁵  | 
| [GetSessionToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) | Usuário do IAM ou Usuário raiz da conta da AWS |  Usuário do IAM: 15 min \$1 36 h \$1 12 h Usuário raiz: 15 min \$1 1 h \$1 1 h  | Sim  | Não  |  Não é possível chamar as operações da API do IAM, a menos que as informações da MFA sejam incluídas na solicitação. Não pode chamar as operações de API do AWS STS exceto `AssumeRole` ou `GetCallerIdentity`. Logon único para console não é permitido.⁶  | 

 ¹ **Compatibildade com MFA**. Você pode incluir informações sobre um dispositivo de autenticação multifator (MFA) quando chamar as operações de API AssumeRole e GetSessionToken. Isso garante que as credenciais de segurança temporárias que resultam da chamada de API possam ser usadas somente pelos usuários que são autenticados com um dispositivo MFA. Para obter mais informações, consulte [Acesso seguro à API com a MFA](id_credentials_mfa_configure-api-require.md). 

 ² **Suporte à política de sessão**. As políticas de sessão são políticas que você transmite como um parâmetro quando você cria de forma programática uma sessão temporária para uma sessão de usuário federado do AWS STS ou perfil. Esta política limita as permissões da política baseada em identidade da função ou do usuário que são atribuídas à sessão. As permissões da sessão resultam da interseção das políticas baseadas em identidade da entidade e das políticas de sessão. As políticas de sessão não podem ser usadas para conceder mais permissões do que as permitidas pela política baseada em identidade da função que está sendo assumida. Para obter mais informações sobre as permissões de sessão da função, consulte [Políticas de sessão](access_policies.md#policies_session).

³ **Configuração de duração máxima da sessão**. Use o parâmetro `DurationSeconds` para especificar a duração da sessão da função de 900 segundos (15 minutos) até o valor configurado de duração máxima da sessão para a função. Para saber como visualizar o valor máximo para sua função, consulte [Atualizar a duração máxima da sessão de um perfil](id_roles_update-role-settings.md#id_roles_update-session-duration).

⁴ **GetCallerIdentity**. Nenhuma permissão é necessária para executar essa operação. Se um administrador adicionar uma política ao seu usuário ou função do IAM que negue explicitamente o acesso à ação `sts:GetCallerIdentity`, você ainda poderá executar esta operação. As permissões não são necessárias porque as mesmas informações são retornadas quando um usuário ou uma função do IAM tem acesso negado. Para visualizar uma resposta de exemplo, consulte [Não estou autorizado a executar: iam:DeleteVirtualMFADevice](troubleshoot.md#troubleshoot_general_access-denied-delete-mfa).

⁵ **Logon único (SSO) para o console**. Para dar suporte a SSO, a AWS permite chamar um endpoint da federação (`https://signin.aws.amazon.com/federation`) e passar credenciais de segurança temporárias. O endpoint retorna um token que pode ser usado para construir um URL que assina um usuário diretamente no console sem a necessidade de uma senha. Para obter mais informações, consulte [Habilitar o acesso das entidades principais federadas do SAML 2.0 ao Console de gerenciamento da AWS](id_roles_providers_enable-console-saml.md) e [ Como habilitar o acesso entre contas ao Console de Gerenciamento da AWS](https://aws.amazon.com/blogs/security/how-to-enable-cross-account-access-to-the-aws-management-console) no Blog de segurança da AWS. 

⁶ Depois de recuperar as credenciais temporárias, você não poderá acessar o Console de gerenciamento da AWS transmitindo as credenciais para o endpoint de logon único de federação. Para obter mais informações, consulte [Habilitar o acesso do intermediador de identidades personalizado ao console da AWS](id_roles_providers_enable-console-custom-url.md).

# Tokens de portador de serviço
<a name="id_credentials_bearer"></a>

Alguns serviços da AWS exigem que você tenha permissão para obter um token de portador do serviço AWS STS para poder acessar seus recursos de forma programática. Esses serviços são compatíveis com um protocolo que requer que você use um token de portador em vez de usar uma tradicional [AWS Signature Version 4 para solicitações de API](reference_sigv.md). Quando você executa operações da AWS CLI ou da API da AWS que exigem tokens de portador, o serviço da AWS solicita um token de portador em seu nome. O serviço fornece o token que você pode usar para executar operações subsequentes nesse serviço. 

AWS STSOs tokens de portador do serviço incluem informações de sua autenticação principal original que podem afetar suas permissões. Essas informações podem incluir tags de principal, tags de sessão e políticas de sessão. O ID de chave de acesso do token começa com o prefixo `ABIA`. Isso ajuda você a identificar operações que foram realizadas usando tokens de portador de serviço em seus logs do CloudTrail.

**Importante**  
O token de portador pode ser usado apenas para chamadas ao serviço que o gera e na região onde ele foi gerado. Você não pode usar o token de portador para executar operações em outros serviços ou regiões.

Um exemplo de serviço compatível com tokens de portador é o AWS CodeArtifact. Para poder interagir com o AWS CodeArtifact usando um gerenciador de pacotes, como NPM, Maven ou PIP, você deve chamar a operação `aws codeartifact get-authorization-token`. Essa operação retorna um token de portador que você pode usar para executar operações do AWS CodeArtifact. Como alternativa, você pode usar o comando `aws codeartifact login` que conclui a mesma operação e configura seu cliente automaticamente. 

Para executar uma ação em um serviço da AWS que gera um token de portador para você, você deverá ter as seguintes permissões em sua política do IAM:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowServiceBearerToken",
            "Effect": "Allow",
            "Action": "sts:GetServiceBearerToken",
            "Resource": "*"
        }
    ]
}
```

------

Para obter um exemplo de token de portador do serviço, consulte [Usar políticas baseadas em identidade para o AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/auth-and-access-control-iam-identity-based-access-control.html) no *Guia do usuário do AWS CodeArtifact*.

# Solicitar credenciais de segurança temporárias
<a name="id_credentials_temp_request"></a>

Para solicitar credenciais de segurança temporárias, você pode usar as operações do AWS Security Token Service (AWS STS) na API da AWS. É possível usar operações para criar e fornecer aos usuários confiáveis credenciais de segurança temporárias que podem controlar o acesso aos seus recursos da AWS. Para obter mais informações sobre o AWS STS, consulte [Credenciais de segurança temporárias no IAM](id_credentials_temp.md). Para saber mais sobre os diferentes métodos que você pode usar para solicitar credenciais de segurança temporárias ao assumir uma função, consulte [Métodos para assumir um perfil](id_roles_manage-assume.md).

Para chamar as operações de API, você pode usar um dos [AWS SDKs](https://aws.amazon.com/tools/). Os SDKs estão disponíveis para uma grande variedade de ambientes e linguagens de programação, incluindo Java, .NET, Python, Ruby, Android e iOS. Os SDKs processam tarefas como a assinatura criptográfica de suas solicitações, a solicitação de novas tentativas (se necessário) e o tratamento das respostas de erro. Você também pode usar a API de consulta do AWS STS, descrita na [Referência de API do AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/). Por fim, duas ferramentas de linha de comando são suporte aos comandos do AWS STS: a [AWS Command Line Interface](https://aws.amazon.com/documentation/cli) e o [AWS Tools for Windows PowerShell](https://aws.amazon.com/documentation/powershell). 

As operações da API do AWS STS criam uma nova sessão com credenciais de segurança temporárias que incluem um par de chaves de acesso e um token de sessão. O par de chaves de acesso consiste em um ID de chave de acesso e uma chave secreta. Os usuários (ou um aplicativo que o usuário executa) pode usar essas credenciais para acessar seus recursos. Você pode criar uma sessão de função e aprovar políticas e tags de sessão programaticamente usando operações de API do AWS STS. As permissões de sessão resultante são a interseção das políticas baseadas em identidade da função e das políticas de sessão. Para obter mais informações sobre políticas de sessão, consulte [Políticas de sessão](access_policies.md#policies_session). Para obter mais informações sobre tags de sessão, consulte [Passar tags de sessão no AWS STS](id_session-tags.md).

**nota**  
O tamanho do token de sessão que as operações de API do AWS STS retornam não é fixo. É altamente recomendável que você não faça suposições sobre o tamanho máximo. O tamanho típico do token é menos de 4096 bytes, mas pode variar.

## Uso do AWS STS com regiões da AWS
<a name="using_sts_regions"></a>

Você pode enviar chamadas de API do AWS STS para um endpoint global ou para um dos endpoints regionais. Se escolher um endpoint mais próximo a você, você poderá reduzir a latência e melhorar a performance de suas chamadas de API. Você também pode optar por direcionar suas chamadas para um endpoint regional alternativo se não puder mais se comunicar com o endpoint original. Se estiver usando um dos vários SDKs da AWS, use o método do respectivo SDK para especificar uma região antes de fazer a chamada de API. Se construir manualmente as solicitações de API HTTP, você deverá direcionar a solicitação para o endpoint correto. Para obter mais informações, consulte a seção [AWS STS de *Regiões e endpoints*](https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region) e [Gerenciar o AWS STS em uma Região da AWS](id_credentials_temp_enable-regions.md).

A seguir veja as operações de API que podem ser usadas para adquirir credenciais temporárias para o uso em seu ambiente e aplicativos da AWS.

## Solicitar credenciais para delegação e federação entre contas por meio de um intermediador de identidades personalizado
<a name="api_assumerole"></a>

A operação da API [https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html) é útil para permitir que os usuários existentes do IAM acessem os recursos da AWS aos quais eles ainda não têm acesso. Por exemplo, o usuário pode precisar de acesso a recursos em outra Conta da AWS. Ela também é útil como um meio de obter acesso privilegiado temporariamente, por exemplo, para fornecer uma autenticação multifator (MFA). Você deve chamar essa API usando credenciais ativas. Para saber quem pode chamar essa operação, consulte [Compare credenciais do AWS STS](id_credentials_sts-comparison.md). Para obter mais informações, consulte [Criar um perfil para conceder permissões a um usuário do IAM](id_roles_create_for-user.md) e [Acesso seguro à API com a MFA](id_credentials_mfa_configure-api-require.md).

**Para solicitar credenciais de segurança temporárias para delegação e federação entre contas por meio de um intermediador de identidades personalizado**

1. Autentique-se com suas credenciais de segurança da AWS. Essa chamada deve ser feita usando credenciais de segurança da AWS válidas.

1. Chame a operação [https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html).

O exemplo a seguir mostra uma solicitação e resposta de exemplo usando `AssumeRole`. Este exemplo de solicitação assume a função `demo` para a duração especificada com a [política de sessão](access_policies.md#policies_session) incluída, [etiquetas de sessão](id_session-tags.md), [ID externo](id_roles_common-scenarios_third-party.md) e [identidade-fonte](id_credentials_temp_control-access_monitor.md). A sessão resultante é nomeada `John-session`. 

**Example Exemplo de solicitação**  

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=AssumeRole
&RoleSessionName=John-session
&RoleArn=arn:aws::iam::123456789012:role/demo
&Policy=%7B%22Version%22%3A%222012-10-17		 	 	 %22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%20%22Stmt1%22%2C%22Effect%22%3A%20%22Allow%22%2C%22Action%22%3A%20%22s3%3A*%22%2C%22Resource%22%3A%20%22*%22%7D%5D%7D
&DurationSeconds=1800
&Tags.member.1.Key=Project
&Tags.member.1.Value=Pegasus
&Tags.member.2.Key=Cost-Center
&Tags.member.2.Value=12345
&ExternalId=123ABC
&SourceIdentity=DevUser123
&AUTHPARAMS
```

O valor da política mostrado no exemplo anterior é a versão codificada por URL da seguinte política:

------
#### [ JSON ]

****  

```
{"Version":"2012-10-17",		 	 	 "Statement":[{"Sid":"Stmt1","Effect":"Allow","Action":"s3:*","Resource":"*"}]}
```

------

O parâmetro `AUTHPARAMS` no exemplo é um espaço reservado para a sua *assinatura*. Uma assinatura é a informação de autenticação que você deve incluir com as solicitações de API HTTP da AWS. Recomendamos usar os [SDKs da AWS](https://aws.amazon.com/tools/) para criar solicitações de API. Um dos benefícios de se fazer isso é que os SDKs tratam da assinatura das solicitações por você. Se você tiver que criar e assinar as solicitações de API manualmente, acesse [Assinaturas e solicitações da AWS usando o Signature versão 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) no *Referência geral da Amazon Web Services* para saber como assinar uma solicitação.

Além das credenciais de segurança temporárias, a resposta inclui o nome de recurso da Amazon (ARN) para o usuário federado e o tempo de expiração das credenciais.

**Example Exemplo de resposta**  

```
<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<AssumeRoleResult>
<SourceIdentity>DevUser123</SourceIdentity>
<Credentials>
  <SessionToken>
   AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
   LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
   QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
   9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
   +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==
  </SessionToken>
  <SecretAccessKey>
   wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
  </SecretAccessKey>
  <Expiration>2019-07-15T23:28:33.359Z</Expiration>
  <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId>
</Credentials>
<AssumedRoleUser>
  <Arn>arn:aws:sts::123456789012:assumed-role/demo/John</Arn>
  <AssumedRoleId>ARO123EXAMPLE123:John</AssumedRoleId>
</AssumedRoleUser>
<PackedPolicySize>8</PackedPolicySize>
</AssumeRoleResult>
<ResponseMetadata>
<RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
</ResponseMetadata>
</AssumeRoleResponse>
```

**nota**  
Uma conversão da AWS compacta as políticas de sessão e as tags de sessão passadas em um formato binário compactado que têm um limite separado. Sua solicitação pode falhar para esse limite mesmo que seu texto simples atenda aos outros requisitos. O elemento de resposta `PackedPolicySize` indica, em porcentagem, o quão perto as políticas e tags da sua solicitação estão do limite de tamanho superior.

## Solicitar credenciais por meio de um provedor OIDC
<a name="api_assumerolewithwebidentity"></a>

A operação da API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) retorna um conjunto de credenciais de segurança temporárias da AWS em troca de um JSON Web Token (JWT). Isso inclui provedores de identidade públicos, como Login with Amazon, Facebook, Google e provedores que emitem JWTs compatíveis com a descoberta do OpenID Connect (OIDC), como GitHub Actions ou Azure DevOps. Para obter mais informações, consulte [Federação OIDC](id_roles_providers_oidc.md).

**nota**  
As solicitações `AssumeRoleWithWebIdentity` não são assinadas com as credenciais da AWS nem as exigem.

**Solicitar credenciais por meio de um provedor OIDC**

1. Chame a operação [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html).

   Quando você chama `AssumeRoleWithWebIdentity`, a AWS valida o token apresentado verificando a assinatura digital usando chaves públicas disponibilizadas por meio do conjunto de chaves da Web JSON (JWKS) do seu IdP. Se o token for válido e todas as condições estabelecidas na política de confiança do perfil do IAM forem atendidas, a AWS retornará as seguintes informações para você:
   + Um conjunto de credenciais de segurança temporárias. Elas consistem em um ID de chave de acesso, chave de acesso secreta e um token de sessão.
   + O ID da função e o ARN da função assumida.
   + Um valor `SubjectFromWebIdentityToken` que contém o ID de usuário exclusivo.

1. A aplicação pode então usar as credenciais de segurança temporárias que foram retornadas na resposta para fazer chamadas de API da AWS. Esse é o mesmo processo de fazer uma chamada de API da AWS com credenciais de segurança de longo prazo. A diferença é que você deve incluir o token de sessão, o que permite que a AWS verifique se as credenciais de segurança temporárias são válidas.

A aplicação deve armazenar em cache as credenciais retornadas pelo AWS STS e atualizá-las conforme necessário. Se a aplicação foi criada usando um AWS SDK, ele tem provedores de credenciais que podem lidar com as chamadas `AssumeRoleWithWebIdentity` e a atualização de credenciais da AWS antes que elas expirem. Para obter mais informações, consulte [AWS SDKs and Tools standardized credential providers](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html) no *Guia de referência de ferramentas e SDKs da AWS*.

## Solicitar credenciais por meio de um provedor de identidades SAML 2.0
<a name="api_assumerolewithsaml"></a>

A operação de API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) retorna um conjunto de credenciais de segurança temporárias para entidades principais federadas SAML que são autenticadas pelo sistema de identidade existente da sua organização. Os usuários também devem usar [SAML](https://www.oasis-open.org/standards#samlv2.0) 2.0 (Security Assertion Markup Language) para passar informações de autenticação e autorização para a AWS. Esta operação de API é útil em organizações que integraram seus sistemas de identidade (como o Windows Active Directory ou OpenLDAP) a um software que pode produzir declarações em SAML. Essa integração fornece informações sobre a identidade e as permissões do usuário (como o Active Directory Federation Services ou o Shibboleth). Para obter mais informações, consulte [Federação SAML 2.0](id_roles_providers_saml.md).

1. Chame a operação [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html).

   Essa é uma chamada não assinada, o que significa que você não precisa autenticar as credenciais de segurança da AWS antes de fazer a solicitação.
**nota**  
Uma chamada para `AssumeRoleWithSAML` não é assinada (criptografada). Portanto, você deve incluir somente as políticas de sessão opcionais se a solicitação é transmitida por meio de um intermediário de confiança. Nesse caso, alguém poderia alterar a política para remover as restrições.

1. Quando você chama `AssumeRoleWithSAML`, a AWS verifica a autenticidade da declaração do SAML. Supondo que o provedor de identidade valide a declaração, a AWS retorna as seguintes informações:
   + Um conjunto de credenciais de segurança temporárias. Elas consistem em um ID de chave de acesso, chave de acesso secreta e um token de sessão. 
   + O ID da função e o ARN da função assumida. 
   + Um valor `Audience` que contém o valor do atributo `Recipient` do elemento `SubjectConfirmationData` da declaração do SAML.
   + Um valor `Issuer` que contém o valor do o elemento `Issuer` da declaração do SAML.
   + Um elemento `NameQualifier` que contém um valor de hash criado a partir do valor `Issuer`, o ID da Conta da AWS e o nome amigável do provedor de SAML. Quando combinado com o elemento `Subject`, eles podem identificar exclusivamente a entidade principal federada SAML.
   + Um elemento `Subject` que contém o valor do elemento `NameID` no elemento `Subject` da declaração do SAML.
   + Um elemento `SubjectType` que indica o formato do elemento `Subject`. O valor pode ser `persistent`, `transient`ou o URI `Format` completo dos elementos `Subject` e `NameID` usados em sua declaração do SAML. Para obter mais informações sobre o atributo `NameID` do elemento `Format`, consulte [Configurar declarações SAML para a resposta de autenticação](id_roles_providers_create_saml_assertions.md). 

1. Use as credenciais de segurança temporárias devolvidas na resposta para fazer chamadas de API da AWS. Esse é o mesmo processo de fazer uma chamada de API da AWS com credenciais de segurança de longo prazo. A diferença é que você deve incluir o token de sessão, o que permite que a AWS verifique se as credenciais de segurança temporárias são válidas.

Seu aplicativo deve armazenar as credenciais em cache. Por padrão, as credenciais expiram após uma hora. Se você não estiver usando a ação [AmazonSTSCredentialsProvider](https://aws.amazon.com/blogs/mobile/using-the-amazoncredentialsprovider-protocol-in-the-aws-sdk-for-ios) no SDK da AWS, caberá a você e ao seu aplicativo chamar `AssumeRoleWithSAML` novamente. Chame esta operação para obter um novo conjunto de credenciais de segurança temporárias antes que as antigas expirem.

## Solicitar credenciais por meio de um intermediador de identidades personalizado
<a name="api_getfederationtoken"></a>

A operação de API [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) retorna um conjunto de credenciais de segurança temporárias para usuários federados do AWS STS. A API é diferente de `AssumeRole`, em que o período de expiração padrão é significativamente maior (até 12 horas, em vez de 1 hora). Além disso, você pode usar o parâmetro `DurationSeconds` para especificar uma duração para que as credenciais de segurança temporárias permaneçam válidas. As credenciais resultantes são válidas pela duração especificada, de 900 segundos (15 minutos) até 129.600 segundos (36 horas). O período de expiração maior pode ajudar a reduzir o número de chamadas para a AWS porque você não precisa obter novas credenciais com a mesma frequência.

1. Faça a autenticação com as credenciais de segurança da AWS do seu usuário do IAM específico. Essa chamada deve ser feita usando credenciais de segurança da AWS válidas.

1. Chame a operação [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html).

A chamada `GetFederationToken` retorna credenciais de segurança temporárias que consistem em um token de segurança, chave de acesso, chave secreta e expiração. Você pode usar `GetFederationToken` se deseja gerenciar permissões dentro de sua organização (por exemplo, usando o aplicativo de proxy para atribuir permissões).

O exemplo a seguir mostra uma solicitação e resposta de exemplo que usa `GetFederationToken`. Esta solicitação de exemplo agrupa o usuário de chamada pela duração especificada ao ARN da [política de sessão](access_policies.md#policies_session) e às [tags de sessão](id_session-tags.md). A sessão resultante é nomeada `Jane-session`.

**Example Exemplo de solicitação**  

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=GetFederationToken
&Name=Jane-session
&PolicyArns.member.1.arn==arn%3Aaws%3Aiam%3A%3A123456789012%3Apolicy%2FRole1policy
&DurationSeconds=1800
&Tags.member.1.Key=Project
&Tags.member.1.Value=Pegasus
&Tags.member.2.Key=Cost-Center
&Tags.member.2.Value=12345
&AUTHPARAMS
```

O ARN da política mostrado no exemplo anterior inclui o seguinte ARN codificado em URL: 

`arn:aws:iam::123456789012:policy/Role1policy`

Além disso, observe que o parâmetro `&AUTHPARAMS` no exemplo destina-se a ser o espaço reservado para as informações de autenticação. Esta é a *assinatura*, que é necessário incluir às solicitações de API HTTP da AWS. Recomendamos usar os [SDKs da AWS](https://aws.amazon.com/tools/) para criar solicitações de API. Um dos benefícios de se fazer isso é que os SDKs tratam da assinatura das solicitações por você. Se você tiver que criar e assinar as solicitações de API manualmente, acesse [Assinaturas e solicitações da AWS usando o Signature versão 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) no *Referência geral da Amazon Web Services* para saber como assinar uma solicitação.

Além das credenciais de segurança temporárias, a resposta inclui o nome de recurso da Amazon (ARN) para o usuário federado e o tempo de expiração das credenciais.

**Example Exemplo de resposta**  

```
<GetFederationTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<GetFederationTokenResult>
<Credentials>
  <SessionToken>
   AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
   LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
   QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
   9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
   +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCEXAMPLE==
  </SessionToken>
  <SecretAccessKey>
  wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
  </SecretAccessKey>
  <Expiration>2019-04-15T23:28:33.359Z</Expiration>
  <AccessKeyId>AKIAIOSFODNN7EXAMPLE;</AccessKeyId>
</Credentials>
<FederatedUser>
  <Arn>arn:aws:sts::123456789012:federated-user/Jean</Arn>
  <FederatedUserId>123456789012:Jean</FederatedUserId>
</FederatedUser>
<PackedPolicySize>4</PackedPolicySize>
</GetFederationTokenResult>
<ResponseMetadata>
<RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
</ResponseMetadata>
</GetFederationTokenResponse>
```

**nota**  
Uma conversão da AWS compacta as políticas de sessão e as tags de sessão passadas em um formato binário compactado que têm um limite separado. Sua solicitação pode falhar para esse limite mesmo que seu texto simples atenda aos outros requisitos. O elemento de resposta `PackedPolicySize` indica, em porcentagem, o quão perto as políticas e tags da sua solicitação estão do limite de tamanho superior.

A AWS recomenda que você conceda permissões no nível do recurso (por exemplo, você anexa uma política baseada em recurso a um bucket do Amazon S3). Você pode omitir o parâmetro `Policy`. No entanto, se você não incluir uma política para a entidade principal do usuário federado do AWS STS, as credenciais de segurança temporárias não concederão permissões. Neste caso, você *deve* usar as políticas de recurso para conceder ao usuário federado o acesso aos seus recursos da AWS.

Por exemplo, suponha que o número da sua Conta da AWS seja 111122223333 e você tenha um bucket do Amazon S3 que deseja permitir que Susan acesse. As credenciais de segurança temporárias da Susan não incluem uma política para o bucket. Nesse caso, é necessário certificar-se de que o bucket tem uma política com um ARN que corresponde ao de Susan, como `arn:aws:sts::111122223333:federated-user/Susan`. 

## Solicitar credenciais para usuários em ambientes não confiáveis
<a name="api_getsessiontoken"></a>

A operação da API [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) retorna um conjunto de credenciais de segurança temporárias para um usuário do IAM existente. Ela é útil para fornecer segurança aprimorada, como, por exemplo, permitir solicitações da AWS somente quando a MFA estiver habilitada para o usuário do IAM. Como as credenciais são temporárias, elas fornecem segurança aprimorada quando você tem um usuário do IAM que acessa seus recursos por meio de um ambiente menos seguro. Exemplos de ambientes menos seguros incluem um dispositivo móvel ou navegador da web.

1. Faça a autenticação com as credenciais de segurança da AWS do seu usuário do IAM específico. Essa chamada deve ser feita usando credenciais de segurança da AWS válidas.

1. Chame a operação [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html).

1. `GetSessionToken` retorna as credenciais de segurança temporárias que consistem em um token de sessão, um ID de chave de acesso e uma chave de acesso secreta.

Por padrão, as credenciais de segurança temporárias de um usuário do IAM são válidas por no máximo 12 horas. Mas você pode solicitar uma duração de, no mínimo, 15 minutos ou, no máximo, 36 horas usando o parâmetro `DurationSeconds`. Por motivos de segurança, um token para um Usuário raiz da conta da AWS é restrito a uma hora de duração.

O exemplo a seguir mostra uma solicitação e resposta de exemplo usando `GetSessionToken`. A resposta também inclui o tempo de expiração das credenciais de segurança temporárias. 

**Example Exemplo de solicitação**  

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=GetSessionToken
&DurationSeconds=1800
&AUTHPARAMS
```

O parâmetro `AUTHPARAMS` no exemplo é um espaço reservado para a sua *assinatura*. Uma assinatura é a informação de autenticação que você deve incluir com as solicitações de API HTTP da AWS. Recomendamos usar os [SDKs da AWS](https://aws.amazon.com/tools/) para criar solicitações de API. Um dos benefícios de se fazer isso é que os SDKs tratam da assinatura das solicitações por você. Se você tiver que criar e assinar as solicitações de API manualmente, acesse [Assinaturas e solicitações da AWS usando o Signature versão 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) no *Referência geral da Amazon Web Services* para saber como assinar uma solicitação.

**Example Exemplo de resposta**  

```
<GetSessionTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<GetSessionTokenResult>
<Credentials>
  <SessionToken>
   AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/L
   To6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3z
   rkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtp
   Z3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE
  </SessionToken>
  <SecretAccessKey>
  wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
  </SecretAccessKey>
  <Expiration>2011-07-11T19:55:29.611Z</Expiration>
  <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId>
</Credentials>
</GetSessionTokenResult>
<ResponseMetadata>
<RequestId>58c5dbae-abef-11e0-8cfe-09039844ac7d</RequestId>
</ResponseMetadata>
</GetSessionTokenResponse>
```

Opcionalmente, a solicitação `GetSessionToken` pode incluir os valores `SerialNumber` e `TokenCode` para a verificação da autenticação multifator (MFA) da AWS. Se os valores fornecidos forem válidos, o AWS STS fornecerá credenciais de segurança temporárias que incluem o estado da autenticação MFA. As credenciais de segurança temporárias podem ser usadas para acessar as operações de API protegidas por MFA ou os sites da AWS pelo tempo em que a autenticação MFA for válida. 

O exemplo a seguir mostra uma solicitação `GetSessionToken` que inclui um código de verificação de MFA e número de série do dispositivo. 

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=GetSessionToken
&DurationSeconds=7200
&SerialNumber=YourMFADeviceSerialNumber
&TokenCode=123456
&AUTHPARAMS
```

**nota**  
A chamada para o AWS STS pode ser para o endpoint global ou para qualquer um dos endpoints regionais para os quais você ativar sua Conta da AWS. Para obter mais informações, consulte a [seção do AWS STS de *Regiões e endpoints*](https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region).  
O parâmetro `AUTHPARAMS` no exemplo é um espaço reservado para a sua *assinatura*. Uma assinatura é a informação de autenticação que você deve incluir com as solicitações de API HTTP da AWS. Recomendamos usar os [SDKs da AWS](https://aws.amazon.com/tools/) para criar solicitações de API. Um dos benefícios de se fazer isso é que os SDKs tratam da assinatura das solicitações por você. Se você tiver que criar e assinar as solicitações de API manualmente, acesse [Assinaturas e solicitações da AWS usando o Signature versão 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) no *Referência geral da Amazon Web Services* para saber como assinar uma solicitação.

# Usar credenciais temporárias com recursos da AWS
<a name="id_credentials_temp_use-resources"></a>

Você pode usar credenciais de segurança temporárias para fazer solicitações programáticas de recursos da AWS usando a AWS CLI ou API da AWS (usando os [SDKs da AWS](https://aws.amazon.com/tools/)). As credenciais temporárias fornecem as mesmas permissões que as credenciais de segurança de longo prazo, como as credenciais de usuário do IAM. No entanto, há algumas diferenças:
+ Ao fazer uma chamada usando credenciais de segurança temporárias, ela deve incluir um token de sessão, que é retornado junto com essas credenciais temporárias. O AWS usa o token de sessão para validar as credenciais de segurança temporárias. 
+ As credenciais temporárias expiram após um intervalo especificado. Após a expiração das credenciais temporárias, ocorrerá falha em todas as chamadas que você fizer com essas credenciais, portanto, você deve gerar um novo conjunto de credenciais temporárias. As credenciais temporárias não podem ser estendidas nem renovadas além do intervalo original especificado.
+ Ao usar credenciais temporárias para fazer uma solicitação, seu principal pode incluir um conjunto de tags. Essas tags vêm de tags de sessão e tags anexadas à função que você assume. Para obter mais informações sobre tags de sessão, consulte [Passar tags de sessão no AWS STS](id_session-tags.md).

Se você usar os [SDKs da AWS](https://aws.amazon.com/tools), a [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/) (AWS CLI) ou o [Tools for Windows PowerShell](https://aws.amazon.com/powershell), a maneira de obter e usar credenciais de segurança temporárias será diferente conforme o contexto. Se você estiver executando código, comandos da AWS CLI ou do Tools for Windows PowerShell em uma instância do EC2, poderá aproveitar as funções do Amazon EC2. Caso contrário, é possível chamar uma [API do AWS STS](https://docs.aws.amazon.com/STS/latest/APIReference/) para obter as credenciais temporárias e, em seguida, usá-las explicitamente para fazer chamadas de serviços da AWS.

**nota**  
É possível usar o AWS Security Token Service (AWS STS) para criar e fornecer aos usuários confiáveis credenciais de segurança temporárias que podem controlar o acesso aos seus recursos da AWS. Para obter mais informações sobre o AWS STS, consulte [Credenciais de segurança temporárias no IAM](id_credentials_temp.md). AWS STS é um serviço global que tem um endpoint padrão em `https://sts.amazonaws.com`. Esse endpoint fica na região Leste dos EUA (N. da Virgínia)), embora as credenciais obtidas desse e de outros endpoints sejam válidas globalmente. Essas credenciais funcionam com serviços e recursos em qualquer região. Você também pode optar por fazer chamadas de API do AWS STS para endpoints em qualquer uma das regiões com suporte. Isso pode reduzir a latência fazendo as solicitações de servidores em uma região que está geograficamente mais perto de você. Não importa de qual região suas credenciais são, elas funcionam globalmente. Para obter mais informações, consulte [Gerenciar o AWS STS em uma Região da AWS](id_credentials_temp_enable-regions.md).

**Contents**
+ [

## Uso de credenciais temporárias em instâncias do Amazon EC2
](#using-temp-creds-sdk-ec2-instances)
+ [

## Uso de credenciais de segurança temporárias com os AWS SDKs
](#using-temp-creds-sdk)
+ [

## Uso de credenciais de segurança temporárias com a AWS CLI
](#using-temp-creds-sdk-cli)
+ [

## Uso de credenciais de segurança temporárias com operações de API
](#RequestWithSTS)
+ [

## Mais informações
](#using-temp-creds-more-info)

## Uso de credenciais temporárias em instâncias do Amazon EC2
<a name="using-temp-creds-sdk-ec2-instances"></a>

Se você deseja executar comandos da AWS CLI ou código dentro de uma instância do EC2, a forma recomendada de obter credenciais é usar [funções para o Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html). Você cria uma função do IAM que especifica as permissões a serem concedidas a aplicações em execução nas instâncias do EC2. Ao executar a instância, você associa a função à instância.

Aplicações, a AWS CLI e comandos do Tools for Windows PowerShell executados na instância podem, então, obter credenciais de segurança temporárias automáticas dos metadados da instância. Você não precisa obter explicitamente as credenciais de segurança temporárias. Os AWS SDKs, a AWS CLI e as Tools for Windows PowerShell obtêm automaticamente as credenciais do serviço de metadados da instância (IMDS) do EC2 e as utilizam. As credenciais temporárias têm as permissões que você define para a função que está associada à instância.

Para obter mais informações e exemplos, veja a seguir:
+  [Usar funções do IAM para conceder acesso a recursos da AWS no Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-roles.html) — AWS SDK para Java
+  [Conceder acesso utilizando uma função do IAM](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-hosm.html) — AWS SDK para .NET 
+  [Criar uma função](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/iam-example-create-role.html): AWS SDK para Ruby 

## Uso de credenciais de segurança temporárias com os AWS SDKs
<a name="using-temp-creds-sdk"></a>

Para usar credenciais de segurança temporárias em código, você chama programaticamente uma API do AWS STS como `AssumeRole` e extrai as credenciais resultantes e o token de sessão. Depois, use esses valores como credenciais em chamadas subsequentes para a AWS. O exemplo a seguir mostra o pseudocódigo de como usar credenciais de segurança temporárias se você estiver usando um SDK da AWS:

```
assumeRoleResult = AssumeRole(role-arn);
tempCredentials = new SessionAWSCredentials(
   assumeRoleResult.AccessKeyId, 
   assumeRoleResult.SecretAccessKey, 
   assumeRoleResult.SessionToken);
s3Request = CreateAmazonS3Client(tempCredentials);
```

Para obter um exemplo escrito em Python (usando o [AWS SDK para Python (Boto)](https://aws.amazon.com/sdk-for-python/)), consulte [Alternar para um perfil do IAM (API da AWS)](id_roles_use_switch-role-api.md). Este exemplo mostra como chamar `AssumeRole` para obter credenciais de segurança temporárias e usar essas credenciais para fazer uma chamada para o Amazon S3.

Para obter detalhes sobre como chamar `AssumeRole`, `GetFederationToken` e outras operações de API, consulte a [Referência da API do AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/). Para obter informações sobre como obter as credenciais de segurança temporárias e o token de sessão provenientes do resultado, consulte a documentação do SDK com o qual você está trabalhando. Você pode encontrar a documentação de todos os AWS SDKs na principal [página da documentação da AWS](https://aws.amazon.com/documentation), na seção **SDKs e toolkits**.

É necessário obter um novo conjunto de credenciais antes que o antigo expire. Em alguns SDKs, você pode usar um provedor que gerencie o processo de atualização de credenciais para você; verifique a documentação do SDK que você está usando. 

## Uso de credenciais de segurança temporárias com a AWS CLI
<a name="using-temp-creds-sdk-cli"></a>

Você pode usar credenciais de segurança temporárias com a AWS CLI. Isso pode ser útil para testar políticas. 

Usando a [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/), você pode chamar uma [API do AWS STS](https://docs.aws.amazon.com/STS/latest/APIReference/) como `AssumeRole` ou `GetFederationToken` e, depois capturar os resultados gerados. O exemplo a seguir mostra uma chamada para `AssumeRole` que envia a saída para um arquivo. No exemplo, o parâmetro `profile` é considerado um perfil no arquivo de configuração da AWS CLI. Ele também é considerado como referência às credenciais de um usuário do IAM que tem permissões para assumir a função.

```
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/role-name --role-session-name "RoleSession1" --profile IAM-user-name > assume-role-output.txt
```

Quando o comando for concluído, você poderá extrair o ID de chave de acesso, a chave de acesso secreta e o token de sessão de onde quer que você o tenha roteado. Você pode fazer isso manualmente ou usando um script. Em seguida, você pode atribuir esses valores a variáveis do ambiente. 

Quando você executa comandos da AWS CLI, a AWS CLI procura as credenciais em uma ordem específica – primeiro em variáveis do ambiente e, em seguida, no arquivo de configuração. Portanto, depois de colocar as credenciais temporárias em variáveis do ambiente, a AWS CLI usa essas credenciais por padrão. (Se você especificar um parâmetro `profile` no comando, a AWS CLI ignorará as variáveis de ambiente. Em vez disso, a AWS CLI procurará no arquivo de configuração, que permite substituir as credenciais nas variáveis de ambiente, se necessário.) 

O exemplo a seguir mostra como definir as variáveis do ambiente para credenciais de segurança temporárias e, em seguida, chamar um comando da AWS CLI. Como nenhum parâmetro `profile` está incluído no comando da AWS CLI, a AWS CLI procura credenciais primeiro em variáveis do ambiente e depois usa as credenciais temporárias. 

**Linux**

```
$ export AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of session token>
$ aws ec2 describe-instances --region us-west-1
```

**Windows**

```
C:\> SET AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
C:\> SET AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
C:\> SET AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of token> 
C:\> aws ec2 describe-instances --region us-west-1
```

## Uso de credenciais de segurança temporárias com operações de API
<a name="RequestWithSTS"></a>

Se estiver fazendo solicitações de API de HTTPS diretas à AWS, será possível assinar essas solicitações com as credenciais de segurança temporárias obtidas do AWS Security Token Service (AWS STS). Para isso, você pode usar o ID de chave de acesso e a chave de acesso secreta recebidos do AWS STS. Use o ID da chave de acesso e a chave de acesso secreta do mesmo modo que você usaria credenciais de longo prazo para assinar uma solicitação. Você também adiciona à sua solicitação de API o token de sessão que você recebe do AWS STS. Você adiciona o token de sessão a um cabeçalho HTTP ou a um parâmetro de string de consulta denominado `X-Amz-Security-Token`. Você adiciona o token de sessão ao cabeçalho HTTP *ou* ao parâmetro de string de consulta, mas não a ambos. Para obter mais informações sobre como assinar solicitações da API HTTPS, consulte [Como assinar solicitações de API da AWS](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html) na *Referência geral da AWS*.

## Mais informações
<a name="using-temp-creds-more-info"></a>

Para obter mais informações sobre como usar o AWS STS com outros produtos da AWS, consulte os seguintes links:
+ **Amazon S3**. Consulte [Fazer solicitações usando credenciais temporárias de usuário do IAM](https://docs.aws.amazon.com/AmazonS3/latest/userguide/AuthUsingTempSessionToken.html) ou [Fazer solicitações usando credenciais temporárias de usuário federado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/AuthUsingTempFederationToken.html), no *Guia do usuário do Amazon Simple Storage Service*.
+ **Amazon SNS**. Consulte [Usar políticas baseadas em identidade com o Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/UsingIAMwithSNS.html#UsingTemporarySecurityCredentials_SNS), no *Guia do desenvolvedor do Amazon Simple Notification Service*.
+ **Amazon SQS**. Consulte [Gerenciamento de identidade e acesso no Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html#UsingTemporarySecurityCredentials_SQS) no *Guia do desenvolvedor do Amazon Simple Queue Service*.
+ **Amazon SimpleDB**. Consulte [Usar credenciais de segurança temporárias](https://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/index.html?UsingTemporarySecurityCredentials_SDB.html) no *Guia do desenvolvedor do Amazon SimpleDB*.

# Permissões de credenciais de segurança temporárias
<a name="id_credentials_temp_control-access"></a>

É possível usar o AWS Security Token Service (AWS STS) para criar e fornecer aos usuários confiáveis credenciais de segurança temporárias que podem controlar o acesso aos seus recursos da AWS. Para obter mais informações sobre o AWS STS, consulte [Credenciais de segurança temporárias no IAM](id_credentials_temp.md). Assim que o AWS STS emite credenciais de segurança temporárias, elas são válidas durante o período de expiração e não podem ser revogadas. No entanto, as permissões atribuídas a credenciais de segurança temporárias são avaliadas todas as vezes que uma solicitação é feita usando as credenciais, portanto você pode atingir o resultado da revogação de credenciais alterando seus direitos de acesso depois que elas forem emitidas. 

Os tópicos a seguir presumem que você tenha conhecimento das permissões e políticas da AWS. Para mais informações sobre esses tópicos, consulte [Gerenciamento de acesso para recursos da AWS](access.md). 

**Topics**
+ [

# Permissões para AssumeRole, AssumeRoleWithSAML e AssumeRoleWithWebIdentity
](id_credentials_temp_control-access_assumerole.md)
+ [

# Monitorar e controlar ações realizadas com funções assumidas
](id_credentials_temp_control-access_monitor.md)
+ [

# Permissões para GetFederationToken
](id_credentials_temp_control-access_getfederationtoken.md)
+ [

# Permissões para GetSessionToken
](id_credentials_temp_control-access_getsessiontoken.md)
+ [

# Desabilitar permissões de credenciais de segurança temporárias
](id_credentials_temp_control-access_disable-perms.md)
+ [

# Conceder permissões para criar credenciais de segurança temporárias
](id_credentials_temp_control-access_enable-create.md)
+ [

# Concessão de permissões para o uso de sessões de console aprimoradas com identidade
](id_credentials_temp_control-access_sts-setcontext.md)

# Permissões para AssumeRole, AssumeRoleWithSAML e AssumeRoleWithWebIdentity
<a name="id_credentials_temp_control-access_assumerole"></a>

A política de permissões da função que está sendo assumida determina as permissões para as credenciais de segurança temporárias retornadas por `AssumeRole`, `AssumeRoleWithSAML` e `AssumeRoleWithWebIdentity`. Você define essas permissões quando cria ou atualiza uma função. 

Você também pode transmitir as [políticas de sessão](access_policies.md#policies_session) gerenciadas ou em linha como parâmetros das operações de API `AssumeRole`, `AssumeRoleWithWebIdentity` ou `AssumeRoleWithSAML`. As políticas de sessão limitam as permissões para a sessão de credencial temporária da função. As permissões da sessão resultante são a interseção da política baseada em identidade da função e das políticas de sessão. Você pode usar as credenciais temporárias da função em chamadas subsequentes à API da AWS para acessar recursos na conta que possui a função. Você não pode usar políticas de sessão para conceder mais permissões do que as permitidas pela política baseada em identidade da função que está sendo assumida. Para saber mais sobre como a AWS determina as permissões efetivas de uma função, consulte [Lógica da avaliação de política](reference_policies_evaluation-logic.md).

![\[PermissionsWhenPassingRoles_Diagram\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/role_passed_policy_permissions.png)


As políticas que são anexadas às credenciais que fizeram a chamada original para o `AssumeRole` não são avaliadas pela AWS ao tomar a decisão de autorização "permitir" ou "negar". O usuário fornece temporariamente suas permissões originais em favor das permissões atribuídas pelo função assumida. No caso das operações de API `AssumeRoleWithSAML` e `AssumeRoleWithWebIdentity`, não há políticas para avaliar porque o chamador da API não é uma identidade da AWS.

## Exemplo: atribuição de permissões usando AssumeRole
<a name="permissions-assume-role-example"></a>

Você pode usar uma operação de API `AssumeRole` com diferentes tipos de políticas. Veja a seguir alguns exemplos.

### Política de permissões da função
<a name="permissions-assume-role-example-role-access-policy"></a>

Neste exemplo, você chama a operação de API `AssumeRole` sem especificar a política da sessão no parâmetro `Policy` opcional. As permissões atribuídas às credenciais temporárias são determinadas pela política de permissões da função que está sendo assumida. O exemplo a seguir de política de permissões concede à função permissão para listar todos os objetos contidos em um bucket do S3 chamado `productionapp`. Ele também permite que a função obtenha, adicione e exclua objetos dentro desse bucket.

**Example Exemplo de política de permissões da função**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::productionapp"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::productionapp/*"
    }
  ]
}
```

### Política de sessão transmitida como parâmetro
<a name="permissions-assume-role-example-passed-policy"></a>

Imagine que você deseja permitir que um usuário assuma a mesma função do exemplo anterior. No entanto, neste caso, você deseja que a sessão de função tenha permissão apenas para obter e colocar objetos no bucket `productionapp` do S3. Você não deseja permitir que ele exclua objetos. Uma forma de conseguir isso é criar uma nova função e especificar as permissões desejadas nessa política de permissão da função. Outra forma de fazer isso é chamar a API `AssumeRole` e incluir políticas de sessão no parâmetro opcional `Policy` como parte da operação de API. As permissões da sessão resultante são a interseção das políticas baseadas em identidade da função e das políticas de sessão. As políticas de sessão não podem ser usadas para conceder mais permissões do que as permitidas pela política baseada em identidade da função que está sendo assumida. Para obter mais informações sobre as permissões de sessão da função, consulte [Políticas de sessão](access_policies.md#policies_session). 

Depois de recuperar as credenciais temporárias da nova sessão, você pode transmiti-las para o usuário que você deseja que tenha essas permissões.

Por exemplo, imagine que a seguinte política é transmitida como um parâmetro da chamada de API. A pessoa que usa a sessão tem permissões para executar apenas as seguintes ações: 
+ Listar todos os objetos no bucket `productionapp`.
+ Obter e colocar objetos no bucket `productionapp`.

Na política de sessão a seguir, a permissão `s3:DeleteObject` é filtrada e a sessão assumida não recebe a permissão `s3:DeleteObject`. A política define o máximo de permissões para a sessão da função de forma que ele substitui todas as políticas de permissões existentes na função.

**Example Exemplo de política de sessão passada com a chamada da API `AssumeRole`**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::productionapp"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::productionapp/*"
    }
  ]
}
```

### Política baseada em recurso
<a name="permissions-assume-role-example-resource-based-policy"></a>

Alguns recursos da AWS dão suporte às políticas baseadas em recursos, e essas políticas fornecem outro mecanismo para definir permissões que afetam credenciais de segurança temporárias. Apenas alguns recursos, como buckets do Amazon S3, tópicos do Amazon SNS e filas do Amazon SQS oferecem suporte a políticas baseadas em recurso. O exemplo a seguir expande os exemplos anteriores usando um bucket do S3 denominado `productionapp`. A política a seguir é anexada ao bucket. 

Quando você anexa a seguinte política baseada em recurso ao bucket `productionapp`, *todos* os usuários ficam impedidos de excluir objetos do bucket. (Consulte o elemento `Principal` na política). Isso inclui todos os usuários da função assumida, mesmo que a política de permissões da função conceda a permissão `DeleteObject`. Uma declaração explicita `Deny` sempre tem precedência sobre uma instrução `Allow`.

**Example Exemplo de política de bucket**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Principal": {"AWS": "*"},
    "Effect": "Deny",
    "Action": "s3:DeleteObject",
    "Resource": "arn:aws:s3:::productionapp/*"
  }
}
```

Para obter mais informações sobre como vários tipos de políticas são combinados e avaliados pela AWS, consulte [Lógica da avaliação de política](reference_policies_evaluation-logic.md).

# Monitorar e controlar ações realizadas com funções assumidas
<a name="id_credentials_temp_control-access_monitor"></a>

Uma [função do IAM](id_roles.md) é um objeto no IAM ao qual são atribuídas [permissões](access_policies.md). Ao [assumir essa função](id_roles_manage-assume.md) usando uma identidade do IAM ou uma identidade de fora da AWS, você recebe uma sessão com as permissões atribuídas à função. 

Quando você executa ações na AWS, as informações sobre sua sessão podem ser registradas no AWS CloudTrail para o administrador da conta monitorar. Os administradores podem configurar funções para exigir que as identidades passem uma string personalizada que identifica a pessoa ou a aplicação que está executando ações na AWS. Essas informações de identidade são armazenadas como a *identidade-fonte* no AWS CloudTrail. Quando o administrador revisa a atividade no CloudTrail, ele pode visualizar as informações de identidade-fonte para determinar quem ou o que executou ações com sessões de funções assumidas.

Depois que uma identidade-fonte é definida, ela estará presente em solicitações para qualquer ação da AWS realizada durante a sessão de função. O valor definido persiste quando uma função é usada para assumir outra função por meio da AWS CLI ou da API da AWS, o que é conhecido como [encadeamento de funções](id_roles.md#iam-term-role-chaining). O valor definido não pode ser alterado durante a sessão da função. Os administradores podem configurar permissões detalhadas com base na presença ou no valor da identidade-fonte para controlar ainda mais as ações da AWS que são tomadas com funções compartilhadas. Você pode decidir se o atributo de identidade-fonte pode ser usado, se é necessário e qual valor pode ser usado.



A maneira como você usa a identidade-fonte difere do nome da sessão de função e das etiquetas de sessão de uma maneira importante. O valor da identidade-fonte não pode ser alterado depois de definido, e ele persiste para quaisquer ações adicionais realizadas com a sessão de função. Veja como você pode usar etiquetas de sessão e nome de sessão de função: 
+ **Etiquetas de sessão**: você também pode passar etiquetas de sessão ao assumir uma função ou federar um usuário. As etiquetas de sessão estão presentes quando uma função é assumida. Você pode ainda definir políticas que usam chaves de condição de tag para conceder permissões aos seus principais com base nas tags. Em seguida, você pode usar o CloudTrail para visualizar as solicitações feitas para assumir funções ou federar usuários. Para saber mais sobre tags de sessão, consulte [Passar tags de sessão no AWS STS](id_session-tags.md).
+ **Nome da sessão de função**: você pode usar a chave de condição `sts:RoleSessionName` em uma política de confiança de função para exigir que seus usuários forneçam um nome de sessão específico quando assumirem uma função. O nome da sessão de função pode ser usado para diferenciar sessões de função quando uma função é usada por diferentes entidades de segurança. Para saber mais sobre o nome da sessão de função, consulte [sts:RoleSessionName](reference_policies_iam-condition-keys.md#ck_rolesessionname).

Recomendamos que você use a identidade-fonte quando quiser controlar a identidade que assume uma função. A identidade-fonte também é útil para mineração de logs do CloudTrail para determinar quem usou a função para executar ações. 

**Topics**
+ [

## Configuração para usar a identidade-fonte
](#id_credentials_temp_control-access_monitor-setup)
+ [

## O que é preciso saber sobre a identidade-fonte
](#id_credentials_temp_control-access_monitor-know)
+ [

## Permissões necessárias para definir a identidade-fonte
](#id_credentials_temp_control-access_monitor-perms)
+ [

## Especificação de uma identidade-fonte ao assumir uma função
](#id_credentials_temp_control-access_monitor-specify-sourceid)
+ [

## Uso da identidade-fonte com AssumeRole
](#id_credentials_temp_control-access_monitor-assume-role)
+ [

## Uso da identidade-fonte com AssumeRoleWithSAML
](#id_credentials_temp_control-access_monitor-assume-role-saml)
+ [

## Uso da identidade-fonte com AssumeRoleWithWebIdentity
](#id_credentials_temp_control-access_monitor-assume-role-web-id)
+ [

## Controlar o acesso usando informações de identidade-fonte
](#id_credentials_temp_control-access_monitor-control-access)
+ [

## Visualização de uma identidade-fonte no CloudTrail
](#id_credentials_temp_control-access_monitor-ct)

## Configuração para usar a identidade-fonte
<a name="id_credentials_temp_control-access_monitor-setup"></a>

A maneira que você configura para usar a identidade-fonte depende do método usado quando suas funções são assumidas. Por exemplo, seus usuários do IAM podem assumir funções diretamente usando a operação `AssumeRole`. Se você tiver identidades empresariais, também conhecidas como identidades do quadro de funcionários, elas poderão acessar seus recursos da AWS usando `AssumeRoleWithSAML`. Se os usuários finais acessarem suas aplicações móveis ou Web, eles poderão fazer isso usando `AssumeRoleWithWebIdentity`. Veja a seguir uma visão geral do fluxo de trabalho de alto nível para ajudar você a entender como configurar para uso as informações de identidade-fonte em seu ambiente existente.

1. **Configure usuários e funções de teste**: usando um ambiente de pré-produção, configure usuários e funções de teste e configure suas respectivas políticas para permitir a definição de uma identidade-fonte.

   Se você usar um provedor de identidade (IdP) para suas identidades federadas, configure seu IdP para passar um atributo de usuário de sua escolha para a identidade-fonte na asserção ou no token.

1. **Assuma a função**: teste assumindo funções e passando uma identidade-fonte com os usuários e funções que você configurou para teste.

1. **Reveja o CloudTrail**: reveja as informações de identidade-fonte para suas funções de teste nos logs do CloudTrail.

1. **Treine seus usuários**: depois de testar em seu ambiente de pré-produção, certifique-se de que seus usuários saibam como transmitir as informações de identidade-fonte, se necessário. Defina um prazo para quando você exigirá que seus usuários forneçam uma identidade-fonte em seu ambiente de produção.

1. **Configure políticas de produção**: configure as políticas para o ambiente de produção e, em seguida, adicione-as aos usuários e funções de produção.

1. **Monitore a atividade**: monitore sua atividade de função de produção usando logs do CloudTrail.

## O que é preciso saber sobre a identidade-fonte
<a name="id_credentials_temp_control-access_monitor-know"></a>

Lembre-se do seguinte ao trabalhar com a identidade-fonte.
+ As políticas de confiança para todas as funções conectadas a um provedor de identidade (IdP) devem ter a permissão `sts:SetSourceIdentity`. Para funções que não têm essa permissão na política de confiança de função, a operação `AssumeRole*` falhará. Se não quiser atualizar a política de confiança de função para cada função, você pode usar uma instância do IdP separada para passar a identidade-fonte. Em seguida, adicione a `sts:SetSourceIdentity` permissão apenas às funções que estiverem conectadas ao IdP separado.
+ Quando uma identidade define uma identidade-fonte, a chave `sts:SourceIdentity` fica presente na solicitação. Para ações subsequentes realizadas durante a sessão de função, a chave `aws:SourceIdentity` estará presente na solicitação. A AWS não controla o valor da identidade-fonte nas chaves `sts:SourceIdentity` ou `aws:SourceIdentity`. Se você optar por exigir uma identidade-fonte, deverá escolher um atributo que deseja que seus usuários ou o IdP forneçam. Por motivos de segurança, você deve garantir que pode controlar como esses valores são fornecidos.
+ O valor da identidade-fonte deve ter entre 2 e 64 caracteres, pode conter apenas caracteres alfanuméricos, sublinhados e os seguintes caracteres: **. , \$1 = @ -** (hífen). Você não pode usar um valor que comece com o texto **aws:**. Este prefixo está reservado para uso interno da AWS.
+ As informações de identidade-fonte não são capturadas pelo CloudTrail quando um produto da AWS ou uma função vinculada ao serviço executa uma ação em nome de uma identidade do quadro de funcionários ou federada. 

**Importante**  
Você não pode alternar para uma função no Console de gerenciamento da AWS ue exija que uma identidade-fonte seja definida quando a função for assumida. Para assumir essa função, você pode usar a AWS CLI ou a API da AWS para chamar a operação `AssumeRole` e especificar o parâmetro da identidade-fonte.

## Permissões necessárias para definir a identidade-fonte
<a name="id_credentials_temp_control-access_monitor-perms"></a>

Além da ação que corresponde à operação da API, é necessário ter a seguinte ação somente com permissão em sua política: 

```
sts:SetSourceIdentity
```
+ Para especificar uma identidade-fonte, as entidades de segurança (usuários e funções do IAM) devem ter permissões para `sts:SetSourceIdentity`. Como administrador, você pode configurar isso na política de confiança da função e na política de permissões da entidade de segurança.
+ Quando você assume uma função com outra função, chamada de [encadeamento de funções](id_roles.md#iam-term-role-chaining), as permissões para `sts:SetSourceIdentity` são necessárias na política de permissões da entidade de segurança que está assumindo a função e na política de confiança da função de destino. Caso contrário, a operação de assumir função falhará.
+ Ao usar a identidade-fonte, as políticas de confiança de função para todas as funções conectadas a um IdP devem ter a permissão `sts:SetSourceIdentity`. A operação `AssumeRole*` falhará para qualquer função conectada a um IdP sem essa permissão. Se você não quiser atualizar a política de confiança de função para cada função, use uma instância de IdP separada para passar a identidade-fonte e adicionar a permissão `sts:SetSourceIdentity` apenas às funções que estão conectadas ao IdP separado.
+ Para definir uma identidade-fonte entre os limites da conta, você deve incluir a permissão `sts:SetSourceIdentity` em dois lugares. Ela deve estar na política de permissões da entidade de segurança na conta originadora e na política de confiança da função na conta de destino. Talvez seja necessário fazer isso, por exemplo, quando uma função for usada para assumir uma função em outra conta com o[encadeamento de funções](id_roles.md#iam-term-role-chaining).

Como administrador da conta, imagine que você deseja permitir que o usuário do IAM `DevUser` em sua conta assuma a `Developer_Role` na mesma conta. Mas você deseja permitir essa ação somente se o usuário tiver definido a identidade-fonte como seu próprio nome de usuário do IAM. Você pode anexar a política a seguir ao usuário do IAM.

**Example Exemplo de política baseada em identidade anexada ao DevUser**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AssumeRole",
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::123456789012:role/Developer_Role"
    },
    {
      "Sid": "SetAwsUserNameAsSourceIdentity",
      "Effect": "Allow",
      "Action": "sts:SetSourceIdentity",
      "Resource": "arn:aws:iam::123456789012:role/Developer_Role",
      "Condition": {
        "StringLike": {
          "sts:SourceIdentity": "${aws:username}"
        }
      }
    }
  ]
}
```

Para impor os valores de identidade-fonte aceitáveis, você pode configurar a política de confiança de função a seguir. A política fornece ao usuário do IAM `DevUser` permissões para assumir a função e definir uma identidade-fonte. A chave de condição `sts:SourceIdentity` define o valor da identidade-fonte aceitável.

**Example Exemplo de política de confiança de função para identidade-fonte**  

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDevUserAssumeRole",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/DevUser"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringEquals": {
          "sts:SourceIdentity": "DevUser"
        }
      }
    }
  ]
}
```

------

Usando as credenciais `DevUser` do usuário do IAM, o usuário tenta assumir a função `DeveloperRole` usando a solicitação da AWS CLI a seguir.

**Example Exemplo de solicitação da CLI AssumeRole**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Developer_Role \
--role-session-name Dev-project \ 
--source-identity DevUser \
```

Quando a AWS avalia a solicitação, o contexto da solicitação contém a `sts:SourceIdentity` de `DevUser`.

## Especificação de uma identidade-fonte ao assumir uma função
<a name="id_credentials_temp_control-access_monitor-specify-sourceid"></a>

Você pode especificar uma identidade-fonte ao usar uma das operações da API `AssumeRole*` do AWS STS para obter credenciais de segurança temporárias para uma função. A operação de API que você usa difere dependendo do seu caso de uso. Por exemplo, se você usar funções do IAM para dar aos usuários do IAM acesso aos recursos da AWS quais eles normalmente não têm acesso, você poderá usar a operação `AssumeRole`. Se você usar a federação de identidade empresarial para gerenciar os usuários do quadro de funcionários, poderá usar a operação `AssumeRoleWithSAML`. Se você usar a federação OIDC para permitir que os usuários finais acessem suas aplicações móveis ou Web, use a operação `AssumeRoleWithWebIdentity`. As seções a seguir explicam como usar a identidade-fonte em cada operação. Para saber mais sobre cenários comuns de credenciais temporárias, consulte [Cenários comuns para credenciais temporárias](id_credentials_temp.md#sts-introduction).

## Uso da identidade-fonte com AssumeRole
<a name="id_credentials_temp_control-access_monitor-assume-role"></a>

A operação `AssumeRole` retorna um conjunto de credenciais temporárias que você pode usar para acessar recursos da AWS. Você pode usar o usuário do IAM ou credenciais de função para chamar `AssumeRole`. Para passar a identidade-fonte enquanto assume uma função, use a opção `-–source-identity` da AWS CLI ou o parâmetro `SourceIdentity` da API da AWS. O exemplo a seguir mostra como especificar a identidade-fonte usando a AWS CLI.

**Example Exemplo de solicitação da CLI AssumeRole**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/developer \
--role-session-name Audit \ 
--source-identity Admin \
```

## Uso da identidade-fonte com AssumeRoleWithSAML
<a name="id_credentials_temp_control-access_monitor-assume-role-saml"></a>

A entidade de segurança que chama a operação `AssumeRoleWithSAML` é autenticada usando a federação baseada em SAML. Essa operação retorna um conjunto de credenciais temporárias que você pode usar para acessar os recursos da AWS. Para obter mais informações sobre como usar a federação baseada em SAML para acesso ao Console de gerenciamento da AWS, consulte [Habilitar o acesso das entidades principais federadas do SAML 2.0 ao Console de gerenciamento da AWS](id_roles_providers_enable-console-saml.md). Para obter detalhes sobre acesso à AWS CLI ou à API da AWS, consulte [Federação SAML 2.0](id_roles_providers_saml.md). Para obter um tutorial sobre como configurar a federação do SAML para seus usuários do Active Directory, consulte [AWS Federated Authentication with Active Directory Federation Services (ADFS)](https://aws.amazon.com/blogs/security/aws-federated-authentication-with-active-directory-federation-services-ad-fs/) no AWS Security Blog. 

Como administrador, você pode permitir que os membros do diretório da empresa se agrupem na AWS usando a operação AWS STS da `AssumeRoleWithSAML`. Para isso, é necessário concluir as seguintes tarefas:

1. [Configure um provedor SAML na sua organização](id_roles_providers_saml_3rd-party.md).

1. [Criar um provedor SAML no IAM](id_roles_providers_create_saml.md).

1. [Configurar um perfil e suas permissões na AWS para suas entidades principais federadas SAML](id_roles_create_for-idp_saml.md).

1. [Concluir a configuração do IdP SAML e criar declarações para a resposta de autenticação SAML](id_roles_providers_create_saml_assertions.md).

Para definir um atributo SAML para a identidade-fonte, inclua o elemento `Attribute` com o atributo `Name` definido como `https://aws.amazon.com/SAML/Attributes/SourceIdentity`. Use o elemento `AttributeValue` para especificar o valor da identidade-fonte. Por exemplo, suponha que você deseja passar o seguinte atributo de identidade como a identidade-fonte. 

`SourceIdentity:DiegoRamirez`

Para passar esse atributo, inclua o seguinte elemento em sua declaração SAML.

**Example Exemplo de trecho de uma declaração SAML**  

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/SourceIdentity">
<AttributeValue>DiegoRamirez</AttributeValue>
</Attribute>
```

## Uso da identidade-fonte com AssumeRoleWithWebIdentity
<a name="id_credentials_temp_control-access_monitor-assume-role-web-id"></a>

A entidade principal que chama a operação `AssumeRoleWithWebIdentity` é autenticada usando federação compatível com o OpenID Connect (OIDC). Essa operação retorna um conjunto de credenciais temporárias que você pode usar para acessar os recursos da AWS. Para obter mais informações sobre como usar a federação OIDC para acesso ao Console de gerenciamento da AWS, consulte [Federação OIDC](id_roles_providers_oidc.md).

Para passar a identidade-fonte do OpenID Connect (OIDC), é necessário incluir a identidade-fonte no JSON Web Token (JWT). Inclua a identidade-fonte no namespace `[https://aws.amazon.com/](https://aws.amazon.com/)source_identity` no token ao enviar a solicitação `AssumeRoleWithWebIdentity`. Para saber mais sobre tokens e reivindicações OIDC, consulte [Usar tokens com grupos de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) no *Guia do desenvolvedor Amazon Cognito*.

Por exemplo, o JWT decodificado a seguir é um token usado para chamar `AssumeRoleWithWebIdentity` com a identidade-fonte`Admin`.

**Example Exemplo de JSON Web Token decodificado**  

```
{
    "sub": "john",
    "aud": "ac_oic_client",
    "jti": "ZYUCeRMQVtqHypVPWAN3VB",
    "iss": "https://xyz.com",
    "iat": 1566583294,
    "exp": 1566583354,
    "auth_time": 1566583292,
    "https://aws.amazon.com/source_identity":"Admin"
}
```

## Controlar o acesso usando informações de identidade-fonte
<a name="id_credentials_temp_control-access_monitor-control-access"></a>

Quando uma identidade-fonte é definida inicialmente, a chave [sts:SourceIdentity](reference_policies_iam-condition-keys.md#ck_sourceidentity) fica presente na solicitação. Depois que uma identidade-fonte for definida, a chave [aws:SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) estará presente em todas as solicitações subsequentes feitas durante a sessão de função. Como administrador, você pode escrever políticas que concedem autorização condicional para realizar ações da AWS com base na existência ou no valor do atributo de identidade-fonte.

Imagine que você deseja exigir que seus desenvolvedores definam uma identidade-fonte para assumir uma função crítica que tenha permissão para gravar em um recurso crítico de produção da AWS. Imagine também que você conceda acesso da AWS às identidades do quadro de funcionários usando `AssumeRoleWithSAML`. Você deseja que apenas os desenvolvedores sênior Saanvi e Diego tenham acesso à função, portanto, você cria a seguinte política de confiança para a função.

**Example Exemplo de política de confiança de função para identidade-fonte (SAML)**  

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "SAMLProviderAssumeRoleWithSAML",
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::111122223333:saml-provider/name-of-identity-provider"
      },
      "Action": [
        "sts:AssumeRoleWithSAML"
      ],
      "Condition": {
        "StringEquals": {
          "SAML:aud": "https://signin.aws.amazon.com/saml"
        }
      }
    },
    {
      "Sid": "SetSourceIdentitySrEngs",
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::111122223333:saml-provider/name-of-identity-provider"
      },
      "Action": [
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringLike": {
          "sts:SourceIdentity": [
            "Saanvi",
            "Diego"
          ]
        }
      }
    }
  ]
}
```

------

A política de confiança possui uma condição para `sts:SourceIdentity` que requer uma identidade-fonte definida como Saanvi ou Diego para assumir a função crítica.

Como alternativa, se você usar um provedor OIDC para federação e os usuários forem autenticados com `AssumeRoleWithWebIdentity`, sua política de confiança de perfil poderá ser semelhante à mostrada a seguir.

**Example Exemplo de política de confiança de função para identidade-fonte (provedor OIDC)**  

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::111122223333:oidc-provider/server.example.com"
      },
      "Action": [
        "sts:AssumeRoleWithWebIdentity",
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringEquals": {
          "server.example.com:aud": "oidc-audience-id"
        },
        "StringLike": {
          "sts:SourceIdentity": [
            "Saanvi",
            "Diego"
          ]
        }
      }
    }
  ]
}
```

------

### Requisitos de encadeamento de funções e entre contas
<a name="id_credentials_temp_control-access_monitor-chain"></a>

Imagine que você deseja permitir que os usuários que assumiram a `CriticalRole` assumam uma `CriticalRole_2` em outra conta. As credenciais da sessão de função que foram obtidas para assumir `CriticalRole` são usadas para [encadear funções](id_roles.md#iam-term-role-chaining) para uma segunda função, `CriticalRole_2`, em outra conta. A função está sendo assumida além dos limites de uma conta. Portanto, a permissão `sts:SetSourceIdentity` deve ser concedida na política de permissões em `CriticalRole` e na política de confiança de função em `CriticalRole_2`.

**Example Exemplo de política de permissões em CriticalRole**  

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AssumeRoleAndSetSourceIdentity",
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity"
      ],
      "Resource": "arn:aws:iam::222222222222:role/CriticalRole_2"
    }
  ]
}
```

------

Para proteger a definição de identidade-fonte além do limite da conta, a seguinte política de confiança de função confia apenas na entidade de segurança da função de `CriticalRole` para definir a identidade-fonte.

**Example Exemplo de política de confiança de função em CriticalRole\$12**  

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:role/CriticalRole"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:SetSourceIdentity"
      ],
      "Condition": {
        "StringLike": {
          "aws:SourceIdentity": ["Saanvi","Diego"]
        }
      }
    }
  ]
}
```

------

O usuário faz a seguinte chamada usando credenciais de sessão de função obtidas assumindo a CriticalRole. A identidade-fonte foi definida durante a suposição de CriticalRole, portanto, ela não precisa ser explicitamente definida novamente. Se o usuário tentar definir uma identidade-fonte diferente do valor definido quando `CriticalRole` foi assumida, a solicitação de assumir função será negada.

**Example Exemplo de solicitação da CLI AssumeRole**  

```
aws sts assume-role \ 
--role-arn arn:aws:iam::222222222222:role/CriticalRole_2 \
--role-session-name Audit \
```

Quando a entidade de segurança de chamada assume a função, a identidade-fonte na solicitação persiste desde a primeira sessão de função assumida. Portanto, as chaves `aws:SourceIdentity` e `sts:SourceIdentity` estão presentes no contexto da solicitação.

## Visualização de uma identidade-fonte no CloudTrail
<a name="id_credentials_temp_control-access_monitor-ct"></a>

Você pode usar o CloudTrail para visualizar as solicitações feitas para assumir funções ou federar usuários. Você também pode visualizar as solicitações de função ou do usuário para realizar ações na AWS. O arquivo de log do CloudTrail inclui informações sobre a identidade-fonte definida para a função assumida ou a sessão de usuário federado. Para obter mais informações, consulte . [Registro em log de chamadas de API do IAM e do AWS STS com o AWS CloudTrail](cloudtrail-integration.md)

Por exemplo, suponha que um usuário faça uma solicitção `AssumeRole` ao AWS STS e defina uma identidade-fonte. Você pode encontrar as informações de `sourceIdentity` na chave `requestParameters` em seu log do CloudTrail.

**Example Exemplo de seção requestParameters em um log do AWS CloudTrail**  

```
"eventVersion": "1.05",
    "userIdentity": {
        "type": "AWSAccount",
        "principalId": "AIDAJ45Q7YFFAREXAMPLE",
        "accountId": "111122223333"
    },
    "eventTime": "2020-04-02T18:20:53Z",
    "eventSource": "sts.amazonaws.com",
    "eventName": "AssumeRole",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "203.0.113.64",
    "userAgent": "aws-cli/1.16.96 Python/3.6.0 Windows/10 botocore/1.12.86",
    "requestParameters": {
        "roleArn": "arn:aws:iam::123456789012:role/DevRole",
        "roleSessionName": "Dev1",
        "sourceIdentity": "source-identity-value-set"
    }
```

Se o usuário usar a sessão de função assumida para executar uma ação, as informações da identidade-fonte estarão presentes na chave `userIdentity` no log do CloudTrail.

**Example Exemplo de chave userIdentity em um log do AWS CloudTrail**  

```
{
  "eventVersion": "1.08",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "AROAJ45Q7YFFAREXAMPLE:Dev1",
    "arn": "arn:aws:sts::123456789012:assumed-role/DevRole/Dev1",
    "accountId": "123456789012",
    "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AROAJ45Q7YFFAREXAMPLE",
        "arn": "arn:aws:iam::123456789012:role/DevRole",
        "accountId": "123456789012",
        "userName": "DevRole"
      },
      "webIdFederationData": {},
      "attributes": {
        "mfaAuthenticated": "false",
        "creationDate": "2021-02-21T23:46:28Z"
      },
      "sourceIdentity": "source-identity-value-present"
    }
  }
}
```

Para ver exemplos de eventos de API do AWS STS em logs do CloudTrail, consulte [Exemplo de eventos de API do IAM no log do CloudTrail](cloudtrail-integration.md#cloudtrail-integration_examples-iam-api). Para obter mais detalhes sobre as informações contidas nos arquivos de log do CloudTrail, consulte [Referência de evento do CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/eventreference.html) no *Guia do usuário do AWS CloudTrail*.

# Permissões para GetFederationToken
<a name="id_credentials_temp_control-access_getfederationtoken"></a>

A operação `GetFederationToken` é chamada por um usuário do IAM e retorna credenciais temporárias para esse usuário. Essa operação *federa* o usuário. As permissões atribuídas a uma sessão de usuário federado do AWS STS são definidas em um de dois lugares: 
+ A política de sessão transmitida como um parâmetro da chamada de API `GetFederationToken`. (Isso é mais comum.)
+ Uma política com base em recursos que nomeia explicitamente o usuário federado do AWS STS no elemento `Principal` da política. (Isso é menos comum.)

As políticas de sessão são políticas avançadas que você transmite como parâmetros ao criar de forma programática uma sessão temporária. Quando você cria uma sessão de usuário federado do AWS STS e transmite as políticas de sessão, as permissões da sessão resultante são a interseção da política baseada em identidade do usuário e das políticas da sessão. Você não pode usar a política de sessão para conceder mais permissões do que as permitidas pela política baseada em identidade do usuário que está sendo federado.

Na maioria dos casos, se você não transmitir uma política com a chamada de API `GetFederationToken`, as credenciais de segurança temporárias não terão permissões. No entanto, uma política baseada em recurso pode fornecer permissões adicionais para a sessão. Você pode acessar um recurso com uma política baseada em recurso que especifica sua sessão como a entidade principal permitida. 

As figuras a seguir mostram uma representação visual de como as políticas interagem para determinar permissões para as credenciais de segurança temporárias retornadas por uma chamada de `GetFederationToken`.

![\[Usuário do IAMAs ilustrações a seguir mostram marcas de seleção para indicar que as permissões de sessão são a interseção entre a política baseada em identidade do usuário e as políticas de sessão. As permissões de sessão também podem ser a interseção entre a política baseada em identidade do usuário e as políticas baseadas em recurso.\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/getfederationtoken-permissions.diagram.png)


## Exemplo: atribuição de permissões usando GetFederationToken
<a name="permissions-get-federation-token-example"></a>

Você pode usar a ação de API `GetFederationToken` com diferentes tipos de políticas. Veja a seguir alguns exemplos.

### Política anexada ao usuário do IAM
<a name="permissions-get-federation-token-example-iam-user"></a>

Neste exemplo, você tem uma aplicação cliente baseada em navegador que conta com dois serviços da Web de backend. Um serviço de backend é o seu próprio servidor de autenticação que usa o seu próprio sistema de identidade para autenticar a aplicação cliente. O outro serviço de backend é um serviço do AWS que fornece algumas das funcionalidades da aplicação cliente. O aplicativo cliente é autenticado pelo seu servidor, e este cria ou recupera a política de permissões apropriada. Seu servidor chama a API `GetFederationToken` para obter as credenciais de segurança temporárias e retorna essas credenciais para o aplicativo cliente. O aplicativo cliente pode então fazer solicitações diretamente ao serviço da AWS com as credenciais de segurança temporárias. Essa arquitetura permite que o aplicativo cliente faça solicitações da AWS sem incorporação das credenciais da AWS de longo prazo.

Seu servidor de autenticação chama a API `GetFederationToken` com as credenciais de segurança de longo prazo de um usuário do IAM chamado `token-app`. No entanto, as credenciais do usuário do IAM de longo prazo permanecem no servidor e nunca são distribuídas para o cliente. A política do exemplo a seguir está anexada ao usuário `token-app` do IAM e define o mais amplo conjunto de permissões necessários para seus usuários federados do AWS STS (clientes). Observe que a permissão `sts:GetFederationToken` é necessária para o seu serviço de autenticação para obter credenciais de segurança temporárias para os usuários federados do AWS STS.

**Example Exemplo de política anexada ao usuário do IAM `token-app` que chama `GetFederationToken`**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:GetFederationToken",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "dynamodb:ListTables",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "sqs:ReceiveMessage",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "sns:ListSubscriptions",
      "Resource": "*"
    }
  ]
}
```

A política anterior concede várias permissões ao usuário do IAM. No entanto, essa política sozinha não concede permissões ao usuário federado do AWS STS. Se esse usuário do IAM chamar `GetFederationToken` e não transmitir uma política como um parâmetro da chamada de API, o usuário federado do AWS STS resultante não terá permissões efetivas. 

### Política de sessão transmitida como um parâmetro
<a name="permissions-get-federation-token-example-passed-policy"></a>

A forma mais comum para garantir que o usuário federado do AWS STS tenha a atribuição da permissão apropriada é transmitir políticas de sessão na chamada de API `GetFederationToken`. Expandindo o exemplo anterior, imagine que ação `GetFederationToken` é chamada com as credenciais do usuário do IAM `token-app`. Por exemplo, imagine que a seguinte política de sessão seja transmitida como um parâmetro da chamada de API. O usuário federado do AWS STS resultante tem permissão para listar o conteúdo do bucket do Amazon S3 chamado `productionapp`. O usuário não pode executar as ações do `GetObject` `PutObject` e `DeleteObject` do Amazon S3 em itens no bucket `productionapp`.

Essas permissões são atribuídas ao usuário federado porque as permissões são a interseção das políticas de usuário do IAM e das políticas de sessão que você transmite.

O usuário federado do AWS STS não podia executar ações no Amazon SNS, Amazon SQS, Amazon DynamoDB ou em qualquer bucket do S3, exceto `productionapp`. Essas ações são negadas mesmo que essas permissões sejam concedidas ao usuário do IAM que está associado à chamada `GetFederationToken`.

**Example Exemplo de política de sessão passada como parâmetro de chamada de API `GetFederationToken`**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::productionapp"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": ["arn:aws:s3:::productionapp/*"]
    }
  ]
}
```

### Políticas baseadas em recursos
<a name="permissions-get-federation-token-resource-based-policy"></a>

Alguns recursos da AWS oferecem suporte às políticas baseadas em recursos, e essas políticas fornecem outro mecanismo para conceder permissões diretamente ao usuário federado do AWS STS. Apenas alguns serviços da AWS oferecem suporte para políticas baseadas em recursos. Por exemplo, o Amazon S3 tem buckets, o Amazon SNS tem tópicos e o Amazon SQS tem filas às quais você pode anexar políticas. Para obter uma lista de todos os serviços que oferecem suporte às políticas baseadas em recurso, consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md) e analise a coluna "Políticas baseadas em recurso" das tabelas. Você pode usar as políticas baseadas em recurso para atribuir permissões diretamente a um usuário federado do AWS STS. Faça isso ao especificar o nome do recurso da Amazon (ARN) do usuário federado do AWS STS no elemento `Principal` da política baseada em recurso. O exemplo a seguir ilustra isso e explora mais os exemplos anteriores, usando um bucket do S3 chamado `productionapp`. 

A seguinte política baseada em recurso é anexada a um bucket. Essa política do bucket permite que um usuário federado do AWS STS chamado Carol acesse o bucket. Quando a política de exemplo descrita anteriormente é anexada ao usuário do IAM `token-app`, o usuário federado do AWS STS chamado Carol tem permissão para executar as ações `s3:DeleteObject`, `s3:GetObject` e `s3:PutObject` no bucket chamado `productionapp`. Isso é verdadeiro mesmo quando nenhuma política de sessão é transmitida como um parâmetro da chamada de API `GetFederationToken`. Isso porque, nesse caso, a política baseada em recursos a seguir concedeu explicitamente permissões ao usuário federado do AWS STS chamado Carol. 

Lembre-se de que um usuário federado do AWS STS recebe permissões apenas quando essas permissões são concedidas explicitamente ao usuário do IAM ***e*** ao usuário federado do AWS STS. Elas também podem ser concedidas (dentro de uma conta) por uma política baseada em recurso que nomeie explicitamente o usuário federado do AWS STS no elemento `Principal` da política, como no exemplo a seguir.

**Example Exemplo de política de bucket que permite acesso ao usuário federado**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Principal": {
            "AWS": "arn:aws:sts::111122223333:federated-user/Carol"
        },
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:DeleteObject"
        ],
        "Resource": [
            "arn:aws:s3:::productionapp/*"
        ]
    }
}
```

Para obter mais informações sobre como as políticas são avaliadas, consulte [Lógica de avaliação da política](reference_policies_evaluation-logic.md).

# Permissões para GetSessionToken
<a name="id_credentials_temp_control-access_getsessiontoken"></a>

A principal ocasião para chamar a operação de API `GetSessionToken` ou o comando `get-session-token` da CLI é quando um usuário deve ser autenticado com Multi-Factor Authentication (MFA). É possível gravar uma política que permite determinadas ações somente quando essas ações são solicitadas por um usuário que foi autenticado com o MFA. Para passar na verificação de autorização MFA, um usuário deve primeiro chamar `GetSessionToken` e incluir os parâmetros `SerialNumber` e `TokenCode` opcionais. Se o usuário for autenticado com êxito com um dispositivo MFA, as credenciais retornadas pela operação de API `GetSessionToken` incluirão o contexto de MFA. Esse contexto indica que o usuário é autenticado com a MFA e é autorizado para operações de API que exigem autenticação de MFA.

## Permissões necessárias para GetSessionToken
<a name="getsessiontoken-permissions-required"></a>

Nenhuma permissão é necessária para que um usuário obtenha um token de sessão. O objetivo da operação `GetSessionToken` é autenticar o usuário que usa a MFA. Não é possível usar políticas para controlar as operações de autenticação.

Para conceder permissões para a execução da maioria das operações da AWS, adicione a ação com o mesmo nome a uma política. Por exemplo, para criar um usuário, você deve usar a operação de API `CreateUser`, o comando `create-user` da CLI ou o Console de gerenciamento da AWS. Para executar essas operações, você deve ter uma política que permite acessar a ação `CreateUser`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateUser",
            "Resource": "*"
        }
    ]
}
```

------

Você pode incluir a ação `GetSessionToken` em suas políticas, mas não terá efeito sobre a capacidade de um usuário executar a operação `GetSessionToken`.

## Permissões concedias por GetSessionToken
<a name="getsessiontoken-permissions-granted"></a>

Se a ação `GetSessionToken` for chamada com as credenciais de um usuário do IAM, as credenciais de segurança temporárias terão as mesmas permissões que o usuário do IAM. Da mesma forma, se a ação `GetSessionToken` for chamada com credenciais de Usuário raiz da conta da AWS, as credenciais de segurança temporárias terão permissões de usuário raiz.

**nota**  
Recomendamos que você não chame a ação `GetSessionToken` com as credenciais de usuário raiz. Em vez disso, siga nossas [práticas recomendadas](best-practices-use-cases.md) e crie usuários do IAM com as permissões de que precisam. Em seguida, use esses usuários do IAM para a interação diária com a AWS.

As credenciais temporárias que você obtém ao chamar `GetSessionToken` têm os seguintes recursos e limitações:
+ Você pode usar as credenciais para acessar o Console de gerenciamento da AWS especificando as credenciais para o endpoint de logon único de federação em `https://signin.aws.amazon.com/federation`. Para obter mais informações, consulte [Habilitar o acesso do intermediador de identidades personalizado ao console da AWS](id_roles_providers_enable-console-custom-url.md).
+ Você **não pode** usar as credenciais para chamar as operações de API do IAM ou do AWS STS. Você **pode** usá-las para chamar operações de API para outros serviços da AWS.

Compare essa operação de API e suas limitações e recursos com as outras operações de API que criam credenciais de segurança temporárias em [Compare credenciais do AWS STS](id_credentials_sts-comparison.md)

Para obter mais informações sobre o acesso de API protegido por MFA usando `GetSessionToken`, consulte [Acesso seguro à API com a MFA](id_credentials_mfa_configure-api-require.md).

# Desabilitar permissões de credenciais de segurança temporárias
<a name="id_credentials_temp_control-access_disable-perms"></a>

As credenciais de segurança temporárias são válidas até que expirem. Essas credenciais são válidas pela duração especificada, de 900 segundos (15 minutos) até um máximo de 129.600 segundos (36 horas). A duração padrão da sessão é de 43.200 segundos (12 horas). Você pode revogar essas credenciais, mas deverá também alterar as permissões do usuário ou perfil do IAM para impedir o uso de credenciais comprometidas para atividades de conta maliciosas. As permissões atribuídas às credenciais de segurança temporárias são avaliadas cada vez que são usadas para fazer uma solicitação da AWS. Quando você remove todas as permissões das credenciais, as solicitações da AWS que as usam falham.

Pode levar alguns minutos para que as atualizações da política entrem em vigor. Para sessões de perfil do IAM, você pode revogar as credenciais de segurança temporárias do perfil para forçar todos os usuários que assumirem o perfil a se autenticar novamente e a solicitar novas credenciais. Para obter mais informações, consulte [Revogar as credenciais de segurança temporárias do perfil](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html).

Não é possível alterar as permissões para um Usuário raiz da conta da AWS. Da mesma forma, você não pode alterar as permissões para as credenciais de segurança temporárias criadas chamando `GetFederationToken` ou `GetSessionToken` enquanto estiver conectado como usuário raiz. Por esse motivo, recomendamos que você não chame o `GetFederationToken` nem o `GetSessionToken` como usuário raiz.

Para obter os procedimentos sobre como alterar as permissões para um usuário do IAM, consulte [Alterar permissões de um usuário do IAM](id_users_change-permissions.md).

Para obter os procedimentos sobre como alterar as permissões para um perfil do IAM, consulte [Atualizar permissões para um perfil](id_roles_update-role-permissions.md).

**Importante**  
Não é possível editar perfis no IAM que foram criados a partir de conjuntos de permissões do Centro de Identidade do IAM. É necessário revogar a sessão ativa do conjunto de permissões de um usuário no Centro de Identidade do IAM. Para obter mais informações, consulte [Revogar sessões ativas de perfil do IAM criadas por conjuntos de permissões](https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html#revoke-user-permissions), no *Guia do usuário do Centro de Identidade do IAM*.

**Topics**
+ [

## Negar acesso a todas as sessões de perfil do IAM associadas a um perfil
](#deny-access-to-all-sessions)
+ [

## Negar acesso a uma determinada sessão de perfil do IAM
](#deny-access-to-specific-session)
+ [

## Negar acesso a sessões de credenciais de segurança temporárias com chaves de contexto de condição
](#deny-access-to-specific-session-condition-key)
+ [

## Negar acesso a uma determinada entidade principal com políticas baseadas em identidade
](#deny-access-with-resource-based)

## Negar acesso a todas as sessões de perfil do IAM associadas a um perfil
<a name="deny-access-to-all-sessions"></a>

Esse procedimento nega permissões para **todas** as sessões de perfil do IAM associadas a um perfil. Use essa abordagem quando tiver preocupações com relação a acesso suspeito por meio de:


+ Entidades principais de outra conta usando acesso entre contas
+ Identidades de usuários externos com permissões de acesso a recursos da AWS em sua conta
+ Os usuários que foram autenticados em uma aplicação móvel ou Web com um provedor de OIDC

Para alterar ou remover as permissões atribuídas às credenciais de segurança temporárias obtidas chamando as APIs `AssumeRole`, `AssumeRoleWithSAML`, `AssumeRoleWithWebIdentity`, `GetFederationToken` ou `GetSessionToken`, você pode editar ou excluir a política baseada em identidade que define as permissões do perfil.

**Importante**  
Se houver uma política baseada em recursos que permita o acesso da entidade principal, você também deverá adicionar uma negação explícita para o recurso. Para mais detalhes, consulte [Negar acesso a uma determinada entidade principal com políticas baseadas em identidade](#deny-access-with-resource-based).

**Para negar acesso a **todas** as sessões de perfil do IAM associadas a um perfil**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM.

1. No painel de navegação, escolha **Perfis**.

1. Selecione o nome do perfil a editar. Você pode usar a caixa de pesquisa para filtrar a lista.

1. Escolha a aba **Permissões**.

1. Selecione a política relevante a editar. Antes de editar uma política gerenciada pelo cliente, revise a guia **Entidades anexadas** para evitar interromper o acesso a outras identidades que tenham a mesma política anexada.

1. Escolha a guia **JSON** e atualize a política para negar todos os recursos e ações.
**nota**  
Essas permissões são as mesmas da política gerenciada pela AWS [AWSDenyAll](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSDenyAll.html). Você pode anexar essa política gerenciada pela AWS a qualquer usuário ou perfil do IAM ao qual você queira negar acesso.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "DenyAll",
               "Effect": "Deny",
               "Action": [
                   "*"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Na página **Revisão**, revise o **Resumo** da política e, em seguida, selecione **Salvar alterações** para salvar seu trabalho.

Quando você atualiza a política, as alterações afetam as permissões de todas as credenciais de segurança temporárias associadas ao perfil, incluindo credenciais emitidas antes da alteração da política de permissões do perfil. 

Após atualizar a política, você poderá [revogar as credenciais de segurança temporárias do perfil](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html) para revogar imediatamente todas as permissões às credenciais emitidas pelo perfil.

## Negar acesso a uma determinada sessão de perfil do IAM
<a name="deny-access-to-specific-session"></a>

Quando você atualiza perfis do IAM com uma política de negação total ou exclui o perfil, todos os usuários que têm acesso ao perfil são afetados. Você pode negar acesso sem afetar as permissões de todas as outras sessões associadas ao perfil.

É possível negar permissões à `Principal` usando [chaves de contexto de condição](#deny-access-to-specific-session-condition-key) ou [políticas baseadas em recursos](#deny-access-with-resource-based).

**dica**  
Você pode encontrar os ARNs de usuários federados usando logs do AWS CloudTrail. Para obter mais informações, consulte  a página [How to Easily Identify Your Federated Users by Using AWS CloudTrail](https://aws.amazon.com/blogs/security/how-to-easily-identify-your-federated-users-by-using-aws-cloudtrail/).

## Negar acesso a sessões de credenciais de segurança temporárias com chaves de contexto de condição
<a name="deny-access-to-specific-session-condition-key"></a>

Você pode usar chaves de contexto de condição nas políticas baseadas em identidade quando desejar negar acesso a sessões específicas de credenciais de segurança temporárias sem afetar as permissões do usuário ou perfil do IAM que criou as credenciais. Para perfis do IAM, depois de atualizar a política, você também pode [revogar as sessões de credenciais de segurança temporárias do perfil](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html) para revogar imediatamente todas as credenciais emitidas.

Para obter mais informações sobre chaves de contexto de condição, consulte [AWSChaves de contexto de condições globais da](reference_policies_condition-keys.md).

### aws:PrincipalArn
<a name="deny-access-condition-key-principalarn"></a>

Você pode usar a chave de contexto de condição [aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) em uma política baseada em identidade para negar acesso a uma determinada entidade principal por seu nome do recurso da Amazon (ARN). Para fazer isso, especifique o ARN da sessão do usuário do IAM, do perfil ou do usuário federado do AWS STS à qual as credenciais de segurança temporárias estão associadas no elemento de condição de uma política.

**Para negar acesso a uma determinada entidade principal por ARN**

1. No painel de navegação do console do IAM, escolha **Usuários** ou **Perfis**.

1. Escolha o nome do usuário ou perfil do IAM a editar. Você pode usar a caixa de pesquisa para filtrar a lista.

1. Escolha a aba **Permissões**.

1. Selecione a política relevante a editar. Antes de editar uma política gerenciada pelo cliente, revise a guia **Entidades anexadas** para evitar interromper o acesso a outras identidades que tenham a mesma política anexada.

1. Escolha a guia **JSON** e adicione uma instrução de negação para o ARN da entidade principal, conforme mostrado no exemplo a seguir.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Deny",
         "Action": "*",
         "Resource": "*",
         "Condition": {
           "ArnEquals": {
             "aws:PrincipalArn": [
               "arn:aws:iam::222222222222:role/ROLENAME",
               "arn:aws:iam::222222222222:user/USERNAME",
               "arn:aws:iam::222222222222:federated-user/USERNAME" 
             ]
           }
         }
       }
     ]
   }
   ```

------

1. Na página **Revisão**, revise o **Resumo** da política e, em seguida, selecione **Salvar alterações** para salvar seu trabalho.

### aws:SourceIdentity
<a name="deny-access-condition-key-sourceidentity"></a>

Você pode usar a chave de contexto de condição [aws:SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) em uma política baseada em identidade para negar acesso a uma determinada identidade de origem associada a uma sessão de perfil do IAM. Isso se aplica contanto que a sessão de perfil tenha sido emitida definindo o parâmetro de solicitação `SourceIdentity` quando a entidade principal assumiu um perfil usando qualquer comando `assume-role` da CLI do AWS STS\$1 ou operações da API `AssumeRole` do AWS STS\$1. Faça isso especificando a identidade de origem à qual as credenciais de segurança temporárias estão associadas no elemento `Condition` de uma política. 

Ao contrário da chave de contexto [sts:RoleSessionName](reference_policies_iam-condition-keys.md#ck_rolesessionname), após a definição da identidade-fonte, o valor não poderá ser alterado. A chave `aws:SourceIdentity` estará presente no contexto da solicitação para todas as ações executadas pelo perfil. A identidade-fonte persiste nas sessões de perfil subsequentes quando você usa as credenciais da sessão para assumir outro perfil. Assumir uma função de outra é chamado de [encadeamento de funções](id_roles.md#iam-term-role-chaining).

A política a seguir mostra um exemplo de como é possível negar acesso a sessões temporárias de credenciais de segurança usando a chave de contexto de condição `aws:SourceIdentity`. Se você especificar a identidade-fonte associada a uma sessão de perfil, serão negadas sessões de perfil com a identidade-fonte nomeada sem afetar as permissões da perfil que criou as credenciais. Neste exemplo, a identidade de origem definida pela entidade principal quando a sessão de perfil foi emitida é `nikki_wolf@example.com`. Qualquer solicitação feita por uma sessão de perfil com a identidade-fonte `nikki_wolf@example.com` será negada porque a identidade-fonte está incluída na condição da política e a política Efeito está definida como `Deny`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "aws:SourceIdentity": [
            "nikki_wolf@example.com",
            "<source identity value>"
          ]
        }
      }
    }
  ]
}
```

------

### aws:userid
<a name="deny-access-condition-key-userid"></a>

Você pode usar a chave de contexto de condição [aws:userid](reference_policies_condition-keys.md#condition-keys-userid) em uma política baseada em identidade para negar acesso a todas ou a determinadas sessões de credenciais de segurança temporárias associadas ao usuário ou perfil do IAM. Isso é feito especificando o identificador exclusivo (ID) da sessão do usuário do IAM, do perfil ou do usuário federado do AWS STS à qual as credenciais de segurança temporárias estão associadas no elemento `Condition` de uma política.

A política a seguir mostra um exemplo de como é possível negar acesso a sessões temporárias de credenciais de segurança usando a chave de contexto de condição `aws:userid`.
+ `AIDAXUSER1` representa o ID exclusivo de um usuário do IAM. Especificar o ID exclusivo de um usuário do IAM como um valor para a chave de contexto `aws:userid` negará acesso ao usuário do IAM. Isso inclui todas as sessões de credenciais de segurança temporárias que foram criadas chamando a API `GetSessionToken`.
+ `AROAXROLE1:*` representa o ID exclusivo de todas as sessões associadas ao perfil do IAM. Especificar o ID exclusivo de um perfil do IAM e um caractere curinga (\$1) na porção caller-specified-role-session-name como um valor para a chave de contexto `aws:userid` negará todas as sessões associadas ao perfil.
+ `AROAXROLE2:<caller-specified-role-session-name>` representa o ID exclusivo de uma sessão de perfil assumido. Na porção caller-specified-role-session-name do ID exclusivo do perfil assumido, você poderá especificar o nome da sessão do perfil ou um caractere curinga se o operador de condição StringLike for usado. Se você especificar o nome da sessão do perfil, isso negará a sessão do perfil nomeada sem afetar as permissões do perfil que criou as credenciais. Se você especificar um caractere curinga para o nome da sessão do perfil, negará todas as sessões associadas ao perfil.
**nota**  
O nome da sessão de perfil especificada pelo chamador, que faz parte do identificador exclusivo de uma sessão de perfil assumida, pode mudar durante o encadeamento de perfis. O encadeamento de perfis ocorre quando um perfil assume outro perfil. O nome da sessão do perfil é definido usando o parâmetro de solicitação `RoleSessionName` quando a entidade principal assume um perfil usando a operação da API `AssumeRole` do AWS STS.
+ `account-id:<federated-user-caller-specified-name>` representa o ID exclusivo de uma sessão de usuário federado do AWS STS. Um usuário do IAM cria essa sessão chamando a API `GetFederationToken`. Especificar o ID exclusivo de uma sessão de usuário federado do AWS STS nega a sessão federada nomeada sem afetar as permissões do usuário do IAM que criou as credenciais.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "aws:userId": [
            "AIDAXUSER1",
            "AROAXROLE1:*",
            "AROAXROLE2:<caller-specified-role-session-name>",
            "123456789012:<federated-user-caller-specified-name>"
          ]
        }
      }
    }
  ]
}
```

------

Para exemplos específicos de valores de chave de entidade principal, consulte [Valores de chave de principal](reference_policies_variables.md#principaltable). Para obter informações sobre os identificadores exclusivos do IAM e como obtê-los, consulte [Identificadores exclusivos](reference_identifiers.md#identifiers-unique-ids).

## Negar acesso a uma determinada entidade principal com políticas baseadas em identidade
<a name="deny-access-with-resource-based"></a>

Para restringir o acesso a uma determinada entidade principal com uma política baseada em recurso, você pode usar as chaves de contexto de condição [aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) ou [aws:SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) no elemento `Condition`. Uma política baseada em recurso é uma política de permissão anexada a um recurso e controla quem pode acessar o recurso e quais ações a pessoa pode executar nele. 

Quando usar a chave de contexto `aws:PrincipalARN`, especifique o ARN da sessão do usuário do IAM, do perfil ou do usuário federado do AWS STS associada às credenciais de segurança temporárias no elemento de condição de uma política. O exemplo de política a seguir demonstra como usar a chave de contexto `aws:PrincipalARN`em uma política baseada em recurso:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Principal": "*",
    "Effect": "Deny",
    "Action": "s3:*",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
    "Condition": {
      "ArnEquals": {
        "aws:PrincipalArn": [
          "arn:aws:iam::222222222222:role/ROLENAME",
          "arn:aws:iam::222222222222:user/USERNAME",
          "arn:aws:sts::222222222222:federated-user/USERNAME"
        ]
      }
    }
  }
}
```

------

Quando usar a chave de contexto `aws:SourceIdentity`, especifique o valor da identidade de origem associada às credenciais de segurança temporárias do perfil no elemento `Condition` de uma política. Isso se aplica contanto que a sessão de perfil tenha sido emitida definindo o parâmetro de solicitação `SourceIdentity` quando a entidade principal assumiu um perfil usando qualquer comando `assume-role` da CLI do AWS STS\$1 ou operações da API `AssumeRole` do AWS STS\$1. O exemplo a seguir demonstra como usar a chave de contexto `aws:SourceIdentity` em uma política baseada em recurso:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Principal": "*",
    "Effect": "Deny",
    "Action": "s3:*",
    "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
    "Condition": {
      "StringLike": {
        "aws:SourceIdentity": [
          "nikki_wolf@example.com",
          "<source identity value>"
        ]
      }
    }
  }
}
```

------

Se você atualizar apenas a política baseada em identidade para uma entidade principal, ainda será possível executar as ações permitidas na política baseada em recurso, exceto quando essas ações forem explicitamente negadas na política baseada em identidade.

**Para negar acesso a uma determinada entidade principal com uma política baseada em identidade**

1. Consulte [AWSServiços da que funcionam com o IAM](reference_aws-services-that-work-with-iam.md) para ver se o serviço oferece suporte a políticas baseadas em recursos.

1. Faça login no Console de gerenciamento da AWS e abra o console do serviço. Cada serviço tem uma localização diferente no console para anexar políticas.

1. Edite a política baseada em recurso. Adicione uma instrução de política "Deny" para especificar as informações de identificação da credencial:

   1. No elemento `Principal`, insira o curinga (\$1). A entidade principal será restringida no elemento `Condition`.

   1. No elemento `Effect`, insira “Deny.”

   1. Em `Action`, insira o namespace do serviço e o nome da ação a ser negada. Para negar todas as ações, use o caractere curinga (\$1). Por exemplo: `"s3:*"`.

   1. No elemento `Resource`, insira o ARN do recurso-alvo. Por exemplo: `"arn:aws:s3:::amzn-s3-demo-bucket"`.

   1. No elemento `Condition`, especifique a chave de contexto `aws:PrincipalARN` ou `aws:SourceIdentity`.

      Se você usar a chave de contexto `aws:PrincipalARN`, insira o ARN da entidade principal à qual negar acesso.

      Se você usar a chave de contexto `aws:SourceIdentity`, insira o valor da identidade de origem definido na sessão de perfil à qual negar acesso.

1. Salve seu trabalho.

# Conceder permissões para criar credenciais de segurança temporárias
<a name="id_credentials_temp_control-access_enable-create"></a>

Por padrão, os usuários do IAM não têm permissão para criar credenciais de segurança temporárias para sessões de usuários federados do AWS STS e perfis. Você deve usar uma política para fornecer essas permissões aos usuários. Embora você possa conceder permissões diretamente a um usuário, é altamente recomendável que você conceda permissões para um grupo. Isso torna o gerenciamento de permissões muito mais fácil. Quando alguém não precisar mais executar as tarefas associadas às permissões, bastará removê-las do grupo. Se outra pessoa precisa executar essa tarefa, adicione-a ao grupo para conceder as permissões.

Para conceder a um grupo do IAM permissão para criar credenciais de segurança temporárias para sessões de usuários federados do AWS STS ou perfid, anexe uma política que conceda um ou ambos os seguintes privilégios:
+ Para entidades principais federadas OIDC e SAML acessarem um perfil do IAM, conceda acesso a `AssumeRole` do AWS STS.
+ <a name="para_gsy_hxg_1t"></a>Para usuários federados do AWS STS que não precisam de um perfil, conceda acesso a `GetFederationToken` do AWS STS.

 Para obter mais informações sobre as diferenças entre o `AssumeRole` e `GetFederationToken` operações de API, consulte [Solicitar credenciais de segurança temporárias](id_credentials_temp_request.md).

Os usuários do IAM também podem chamar [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) para criar credenciais de segurança temporárias. Nenhuma permissão é necessária para um usuário realizar a chamada `GetSessionToken`. O objetivo dessa operação é autenticar o usuário que usa a MFA. Não é possível usar políticas para controlar a autenticação. Isso significa que não é possível impedir que os usuários do IAM chamem `GetSessionToken` para criar credenciais temporárias.

**Example Exemplo de política que concede permissão para assumir uma função**  
O exemplo de política a seguir concede permissão para chamar `AssumeRole` para o perfil `UpdateApp` na Conta da AWS `123123123123`. Quando `AssumeRole` é usado, o usuário (ou o aplicativo) que cria as credenciais de segurança em nome de um usuário federado não pode delegar permissões que já não tenham sido especificadas na política de permissões da função.     
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Action": "sts:AssumeRole",
    "Resource": "arn:aws:iam::123123123123:role/UpdateAPP"
  }]
}
```

**Example Exemplo de política que concede permissão para criar credenciais de segurança temporárias para um usuário federado**  
No exemplo a seguir a política concede permissões de acesso `GetFederationToken`.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Action": "sts:GetFederationToken",
    "Resource": "*"
  }]
}
```

**Importante**  
Quando você concede a usuários do IAM permissão para criar credenciais de segurança temporárias para usuários federados do AWS STS com `GetFederationToken`, isso permite que eles deleguem suas próprias permissões. Para obter mais informações sobre a delegação de permissões entre usuários do IAM e Contas da AWS, consulte [Exemplos de políticas para delegação de acesso](id_roles_create_policy-examples.md). Para obter mais informações sobre o controle de permissões em credenciais de segurança temporárias, consulte [Permissões de credenciais de segurança temporárias](id_credentials_temp_control-access.md). 

**Example Exemplo de política que concede a um usuário permissão limitada para criar credenciais de segurança temporárias para usuários federados**  
Quando você permite que um usuário do IAM chame `GetFederationToken`, uma prática recomendada é restringir as permissões que esse usuário do IAM pode delegar. Por exemplo, a política a seguir mostra como permitir que um usuário do IAM crie credenciais de segurança temporárias apenas para usuários federados do AWS STS cujos nomes começam com *Manager*.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Action": "sts:GetFederationToken",
    "Resource": ["arn:aws:sts::123456789012:federated-user/Manager*"]
  }]
}
```

# Concessão de permissões para o uso de sessões de console aprimoradas com identidade
<a name="id_credentials_temp_control-access_sts-setcontext"></a>

As sessões de console aprimoradas com identidade possibilitam que os IDs de usuário e de sessão do Centro de Identidade do AWS IAM sejam incluídos nas sessões de console da AWS quando os usuários fizerem login. Por exemplo, o Amazon Q Developer Pro usa as sessões de console aprimoradas com identidade para oferecer uma experiência de serviço personalizada. Para obter mais informações sobre as sessões de console aprimoradas com identidade, consulte [Enabling identity-enhanced console sessions](https://docs.aws.amazon.com/singlesignon/latest/userguide/identity-enhanced-sessions.html) no *Guia do usuário do Centro de Identidade do AWS IAM*. Para obter informações sobre a configuração do Amazon Q Developer, consulte [Configurando o Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/setting-up.html) no *Guia do usuário do Amazon Q Developer*.

Para que as sessões de console aprimoradas com identidade estejam disponíveis para um usuário, é necessário usar uma política baseada em identidades para conceder à entidade principal do IAM a permissão `sts:SetContext` no recurso que representa sua própria sessão de console. 

**Importante**  
Por padrão, os usuários não têm permissão para configurar o contexto em suas sessões de console aprimoradas com identidade. Para permitir isso, você deve conceder a entidade principal do IAM a permissão `sts:SetContext` em uma política baseada em identidade, conforme mostrado no exemplo de política abaixo.

O exemplo de política baseada em identidades, apresentado a seguir, concede a permissão `sts:SetContext` a uma entidade principal do IAM, permitindo que essa entidade defina o contexto da sessão de console aprimorada com identidade para suas próprias sessões no console da AWS. O recurso de política, `arn:aws:sts::account-id:self`, representa a sessão do chamador da AWS. O segmento do `account-id` do ARN pode ser substituído por um caractere curinga `*` nos casos em que a mesma política de permissão é implantada em várias contas, como quando essa política é implantada usando os conjuntos de permissões do IAM Identity Center.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:SetContext",
            "Resource": "arn:aws:sts::111122223333:self"
        }
    ]
}
```

------

# Gerenciar o AWS STS em uma Região da AWS
<a name="id_credentials_temp_enable-regions"></a>

Um endpoint regional é a URL do ponto de entrada em uma região específica para um serviço da Web da AWS. A AWS recomenda o uso dos endpoints regionais do AWS Security Token Service (AWS STS) em vez do endpoint global, para reduzir a latência, incorporar redundância e aumentar a validade dos tokens de sessão. Embora o endpoint global (legado) do AWS STS, `https://sts.amazonaws.com`, esteja altamente disponível, ele é hospedado em uma única região da AWS, Leste dos EUA (Norte da Virgínia), e, como outros endpoints, não fornece failover automático para endpoints em outras regiões.
+ **Reduzir a latência**: ao fazer suas chamadas do AWS STS para um endpoint geograficamente mais próximo de seus serviços e aplicações, você pode acessar serviços do AWS STS com menor latência e melhores tempos de resposta.
+ **Incorporar redundância** — Você pode limitar os efeitos de uma falha em uma workload a um número limitado de componentes com um escopo previsível de contenção de impactos. O uso de endpoints regionais do AWS STS permite alinhar o escopo de seus componentes com o escopo de seus tokens de sessão. Para obter mais informações sobre esse pilar de confiabilidade, consulte [Usar isolamento de falhas para proteger sua workload](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/use-fault-isolation-to-protect-your-workload.html) no *AWS Well-Architected Framework*.
+ **Aumentar a validade do token de sessão**: tokens de sessão de endpoints regionais do AWS STS são válidos em todas as Regiões da AWS. Tokens de sessão do endpoint global do STS são válidos apenas em Regiões da AWS que são habilitadas por padrão. Se pretende habilitar uma nova região para sua conta, você pode usar tokens de sessão de endpoints regionais do AWS STS. Se optar por usar o endpoint global, você deverá alterar a compatibilidade de regiões de tokens de sessão do AWS STS para o endpoint global. Isso garante que os tokens sejam válidos em todas as Regiões da AWS.

Para obter uma lista de regiões da AWS STS e seus endpoints, consulte [AWS STSRegiões e endpoints do](id_credentials_temp_region-endpoints.md).

**nota**  
A AWS fez alterações no endpoint global (`https://sts.amazonaws.com`) do AWS Security Token Service (AWS STS) nas regiões [habilitadas por padrão](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) para aprimorar sua resiliência e desempenho. As solicitações do AWS STS para o endpoint global são atendidas automaticamente da mesma Região da AWS que suas workloads. Essas alterações não serão implantadas em regiões opt-in. Recomendamos usar endpoints regionais do AWS STS apropriados. Para obter mais informações, consulte [Alterações nos endpoints globais do AWS STS](id_credentials_temp_region-endpoints.md#reference_sts_global_endpoint_changes).

**Topics**
+ [

## Ativar e desativar o AWS STS em uma Região da AWS
](#sts-regions-activate-deactivate)
+ [

## Escrever código para usar regiões do AWS STS
](#id_credentials_temp_enable-regions_writing_code)
+ [

## Gerenciar tokens de sessão de endpoint global
](#sts-regions-manage-tokens)

## Ativar e desativar o AWS STS em uma Região da AWS
<a name="sts-regions-activate-deactivate"></a>

Quando você ativar endpoints do AWS STS para uma região, o AWS STS poderá emitir credenciais temporárias para usuários e funções em sua conta que faz uma solicitação do AWS STS. Essas credenciais podem ser usadas em qualquer região habilitada por padrão ou habilitada manualmente. Para regiões que são habilitadas por padrão, é necessário ativar o endpoint do AWS STS regional na conta em que as credenciais temporárias são geradas. Não importa se um usuário está conectado na mesma conta ou em uma conta diferente quando fizer a solicitação. Ao solicitar credenciais temporárias para uma função em outra Conta da AWS usando uma região ativada manualmente, a conta de destino (a conta que contém a função) deve habilitar essa região para operações AWS STS. Esta é uma forma de garantir que as credenciais de segurança temporárias possam ser geradas corretamente.

Por exemplo, imagine que um usuário na conta A deseje enviar uma solicitação de API `sts:AssumeRole` ao [endpoint regional do AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_region-endpoints.html) `https://sts.ap-southeast-3.amazonaws.com`. A solicitação é para credenciais temporárias para a função denominada `Developer` na conta B. Como a solicitação é para criar credenciais para uma entidade na conta B, a conta B deve ter a região `ap-southeast-3` ativada. Os usuários da conta A (ou de qualquer outra conta) podem chamar o endpoint do AWS STS `ap-southeast-3` para solicitar credenciais para a conta B, esteja ou não ativada a região em suas contas. Para saber mais, consulte [Ativar ou desativar Regiões da AWS em sua conta](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html).

**nota**  
Regiões ativas estão disponíveis para todas as pessoas que usam credenciais temporárias nessa conta. Para controlar quais usuários ou perfis do IAM podem acessar a região, use a chave de condição `aws:RequestedRegion` em suas políticas de permissões.

**Para ativar ou desativar o AWS STS em uma região habilitada por padrão (console)**

1. Faça login como um usuário raiz ou um usuário com permissões para realizar tarefas de administração do IAM.

1. Abra o [console do IAM](https://console.aws.amazon.com/iam/home?#home) e, no painel de navegação, escolha [https://console.aws.amazon.com/iam/home?#account_settings](https://console.aws.amazon.com/iam/home?#account_settings) (Configurações da conta).

1. Na seção **Endpoints** do **Security Token Service (STS)**, localize a região que você deseja configurar e escolha **Ativa** ou **Inativa** na coluna **Status do STS**.

1. Na caixa de diálogo que é exibida, escolha **Activate** (Ativar) ou **Deactivate** (Desativar).

Para regiões que precisam ser habilitadas, o AWS STS é ativado automaticamente quando você habilita a região. Depois de habilitar uma região, o AWS STS estará sempre ativo nessa região e você não poderá desativá-lo. Para saber como habilitar regiões que estão desabilitadas por padrão, consulte [Especificar qual Regiões da AWS sua conta pode usar](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) no *Guia de referência do AWS Gerenciamento de contas*.

## Escrever código para usar regiões do AWS STS
<a name="id_credentials_temp_enable-regions_writing_code"></a>

Depois de ativar uma região, você pode direcionar chamadas de API do AWS STS para essa região. O trecho de código Java a seguir demonstra como configurar um objeto `AWSSecurityTokenService` para fazer solicitações para a região Europa (Milão) (eu-south-1).

```
EndpointConfiguration regionEndpointConfig = new EndpointConfiguration("https://sts.eu-south-1.amazonaws.com", "eu-south-1");
AWSSecurityTokenService stsRegionalClient = AWSSecurityTokenServiceClientBuilder.standard()
.withCredentials(credentials)
.withEndpointConfiguration(regionEndpointConfig)
.build();
```

AWS STSO recomenda fazer chamadas para um endpoint regional. Para obter informações sobre como habilitar manualmente uma região, consulte [Especificar quais Regiões da AWS sua conta pode usar](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) no *Guia de referência do AWS Gerenciamento de contas*.

No exemplo, a primeira linha cria uma instância de objeto `EndpointConfiguration` chamado `regionEndpointConfig`, passando o URL do endpoint e a Região da AWS como os parâmetros.

Para aprender a configurar endpoints regionais do AWS STS usando uma variável de ambiente para AWS SDKs, consulte [Endpoints regionalizados do AWS STS](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sts-regionalized-endpoints.html) no *Guia de referência de AWS SDKs e ferramentas*.

Para todas as outras combinações de linguagem e ambiente de programação, consulte a documentação das [para o SDK relevante](https://aws.amazon.com/tools/).

## Gerenciar tokens de sessão de endpoint global
<a name="sts-regions-manage-tokens"></a>

Por padrão, a maioria das Regiões da AWS está habilitada para operações em todos os Serviços da AWS. Essas regiões são automaticamente habilitadas para uso com o AWS STS. Algumas regiões, como Ásia-Pacífico (Hong Kong), devem ser habilitadas manualmente. Para saber como habilitar e desabilitar Regiões da AWS, consulte [Especificar qual Regiões da AWS sua conta pode usar](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) no *Guia de referência do AWS Gerenciamento de contas*. Quando você habilitar essas regiões da AWS, elas serão automaticamente habilitadas para uso com o AWS STS. Você não pode ativar o endpoint do AWS STS para uma região que está desabilitada. Tokens de sessão que são válidos em todas as Regiões da AWS incluem mais caracteres do que os tokens que são válidos em regiões habilitadas por padrão. A alteração dessa configuração pode afetar sistemas existentes em que você armazena tokens temporariamente.

Você pode alterar essa configuração usando o Console de gerenciamento da AWS, a AWS CLI, ou a API da AWS.

**Para alterar a compatibilidade de regiões dos tokens de sessão para o endpoint global (console)**

1. Faça login como um usuário raiz ou um usuário com permissões para realizar tarefas de administração do IAM. Para alterar a compatibilidade de tokens de sessão, você deve ter uma política que permita a ação `iam:SetSecurityTokenServicePreferences`.

1. Abra o [console do IAM](https://console.aws.amazon.com/iam/home?#home). No painel de navegação, selecione **Configurações da conta**.

1. Em **Security Token Service (STS)**, na seção **Session Tokens from the STS endpoints** (Tokens de sessão dos endpoints do STS). O **endpoint global** indica `Valid only in Regiões da AWS enabled by default`. Escolha **Alterar**.

1. Na caixa de diálogo **Alterar compatibilidade da região**, selecione **Todas as Regiões da AWS**. Em seguida, escolha **Salvar alterações**.
**nota**  
Tokens de sessão que são válidos em todas as Região da AWS incluem mais caracteres do que os tokens que são válidos em regiões habilitadas por padrão. A alteração dessa configuração pode afetar sistemas existentes em que você armazena tokens temporariamente.

**Para alterar a compatibilidade de regiões de tokens de sessão para o endpoint global (AWS CLI)**  
Defina a versão do token da sessão. Tokens de versão 1 são válidos somente em Regiões da AWS que estão disponíveis por padrão. Esses tokens não funcionam em regiões habilitadas manualmente, como Ásia-Pacífico (Hong Kong). Tokens de versão 2 são válidos em todas as regiões. No entanto, tokens de versão 2 incluem mais caracteres e podem afetar sistemas em que você armazena tokens temporariamente.
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/set-security-token-service-preferences.html](https://docs.aws.amazon.com/cli/latest/reference/iam/set-security-token-service-preferences.html)

**Para alterar a compatibilidade de regiões de tokens de sessão para o endpoint global (API da AWS)**  
Defina a versão do token da sessão. Tokens de versão 1 são válidos somente em Regiões da AWS que estão disponíveis por padrão. Esses tokens não funcionam em regiões habilitadas manualmente, como Ásia-Pacífico (Hong Kong). Tokens de versão 2 são válidos em todas as regiões. No entanto, tokens de versão 2 incluem mais caracteres e podem afetar sistemas em que você armazena tokens temporariamente.
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_SetSecurityTokenServicePreferences.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SetSecurityTokenServicePreferences.html) 

# AWS STSRegiões e endpoints do
<a name="id_credentials_temp_region-endpoints"></a>

**nota**  
A AWS fez alterações no endpoint global (`https://sts.amazonaws.com`) do AWS Security Token Service (AWS STS) nas regiões [habilitadas por padrão](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) para aprimorar sua resiliência e desempenho. As solicitações de AWS STS para o endpoint global são atendidas automaticamente da mesma Região da AWS que suas workloads. Essas alterações não serão implantadas em regiões opt-in. Recomendamos usar endpoints regionais do AWS STS apropriados. Para obter mais informações, consulte [Alterações nos endpoints globais do AWS STS](#reference_sts_global_endpoint_changes).

A tabela a seguir lista as regiões e seus endpoints. Ela indica quais são as ativadas por padrão e quais você pode ativar ou desativar.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/id_credentials_temp_region-endpoints.html)

¹Você deve [habilitar a região](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) para usá-la. Isso ativa automaticamente o AWS STS. Não é possível ativar ou desativar manualmente o AWS STS nessas regiões.

²Para usar a AWS na China, são necessárias uma conta e credenciais específicas da AWS na China.

## Alterações nos endpoints globais do AWS STS
<a name="reference_sts_global_endpoint_changes"></a>

A AWS fez alterações no endpoint global (`https://sts.amazonaws.com`) do AWS Security Token Service (AWS STS) em regiões [habilitadas por padrão](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html) para aprimorar sua resiliência e performance. Anteriormente, todas as solicitações ao endpoint global do AWS STS eram atendidas por uma única Região da AWS Leste dos EUA (Norte da Virgínia). Agora, nas regiões [habilitadas por padrão](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html), as solicitações para o endpoint global do AWS STS serão atendidas automaticamente na mesma região de origem da solicitação, em vez da região Leste dos EUA (Norte da Virgínia). Essas alterações não serão implantadas em regiões opt-in.

Com essas alterações, o AWS STS processará sua solicitação com base na região de origem e no resolvedor de DNS usado. As solicitações ao endpoint global do AWS STS são atendidas na mesma região da sua workload implantada da AWS se a solicitação de DNS ao endpoint global do AWS STS for tratada pelo servidor Amazon DNS em regiões habilitadas por padrão. As solicitações ao endpoint global do AWS STS continuarão sendo atendidas na região Leste dos EUA (Norte da Virgínia) se sua solicitação tiver sido originada de regiões opcionais ou se sua solicitação tiver sido resolvida usando um resolvedor de DNS diferente do servidor Amazon DNS. Para obter mais informações sobre o Amazon DNS, consulte [Servidor Amazon DNS](https://docs.aws.amazon.com/vpc/latest/userguide/AmazonDNS-concepts.html#AmazonDNS) no *Guia do usuário da Amazon Virtual Private Cloud*.

A tabela a seguir mostra como as solicitações ao endpoint global do AWS STS são roteadas com base em seu provedor de DNS.


| Resolvedor de DNS | Solicitações ao endpoint global do AWS STS roteadas para a Região da AWS local? | 
| --- | --- | 
|  Resolvedor do Amazon DNS em uma Amazon VPC em uma região habilitada por padrão  |  Sim  | 
|  Resolvedor do Amazon DNS em uma Amazon VPC em uma região opt-in  |  Não, a solicitação será encaminhada para a região Leste dos EUA (Norte da Virgínia)  | 
|  Resolvedor de DNS fornecido pelo seu ISP, um provedor de DNS público ou qualquer outro provedor de DNS  |  Não, a solicitação será encaminhada para a região Leste dos EUA (Norte da Virgínia)  | 

Para garantir o mínimo de interrupção em seus processos existentes, a AWS implementou as seguintes medidas:
+ Os logs do AWS CloudTrail para solicitações feitas ao endpoint global do AWS STS são enviados para a região Leste dos EUA (Norte da Virgínia). Os logs do CloudTrail para solicitações atendidas por endpoints regionais do AWS STS continuarão sendo registrados em suas respectivas regiões no CloudTrail.
+ Os logs do CloudTrail para operações realizadas pelo endpoint global do AWS STS e pelos endpoints regionais tem campos adicionais `endpointType` e `awsServingRegion` para indicar qual endpoint e região atenderam à solicitação. Para obter exemplos de log do CloudTrail, consulte [Exemplo de evento de API AWS STS usando o endpoint global no arquivo de log do CloudTrail](cloudtrail-integration.md#stscloudtrailexample-assumerole-sts-global-endpoint).
+ As solicitações feitas ao endpoint global do AWS STS tem um valor de `us-east-1` para a chave de condição `aws:RequestedRegion`, independentemente de qual região atendeu à solicitação.
+ As solicitações tratadas pelo endpoint global do AWS STS não compartilham uma cota de solicitações por segundo com endpoints regionais do AWS STS.

Se você tiver workloads em uma região opt-in e ainda estiver usando o endpoint global do AWS STS, recomendamos migrar para endpoints regionais do AWS STS para melhorar a resiliência e a performance. Para obter mais informações sobre a configuração de endpoints regionais do AWS STS, consulte [Endpoints regionais do AWS STS](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sts-regionalized-endpoints.html) no *Guia de referência de SDKs e ferramentas da AWS*.

## AWS CloudTrail e endpoints regionais
<a name="sts-regions-cloudtrail"></a>

As chamadas para endpoints regionais e globais são registradas no campo `tlsDetails` no AWS CloudTrail. As chamadas para endpoints regionais, como `us-east-2.amazonaws.com`, são registradas no CloudTrail em sua região apropriada. As chamadas para o endpoint global, `sts.amazonaws.com`, são registradas como chamadas para um serviço global. Os eventos para endpoints globais de AWS STS são registrados em us-east-1.

**nota**  
 `tlsDetails` só pode ser visualizado para serviços que oferecem suporte a esse campo. Consulte [Serviços que oferecem suporte a detalhes de TLS no CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-supported-tls-details.html) no *Guia de usuário do AWS CloudTrail*  
Para obter mais informações, consulte [Registro em log de chamadas de API do IAM e do AWS STS com o AWS CloudTrail](cloudtrail-integration.md).

# Habilitar o acesso do intermediador de identidades personalizado ao console da AWS
<a name="id_roles_providers_enable-console-custom-url"></a>

Você pode escrever e executar um código para criar um URL que permita que os usuários que façam login na rede de sua organização acessem com segurança o Console de gerenciamento da AWS. O URL inclui um token de login que você obtém da AWS e que autentica o usuário na AWS. A sessão de console resultante pode incluir um `AccessKeyId` diferente devido à federação. [Para rastrear o uso da chave de acesso para o login da federação por meio de eventos relacionados do CloudTrail, consulte [Registro em log de chamadas de API do IAM e do AWS STS com o AWS CloudTrail](cloudtrail-integration.md) e Eventos de login do Console de gerenciamento da AWS](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-aws-console-sign-in-events.html). 

**nota**  
Se sua organização usa um provedor de identidade (IdP) que é compatível com SAML, é possível configurar o acesso ao console sem escrever código. Isso funciona com fornecedores como o Microsoft Active Directory Federation Services ou o Shibboleth de código aberto. Para obter detalhes, consulte [Habilitar o acesso das entidades principais federadas do SAML 2.0 ao Console de gerenciamento da AWS](id_roles_providers_enable-console-saml.md). 

Para permitir que os usuários de sua organização acessem o Console de gerenciamento da AWS, você pode criar um *intermediador de identidades* personalizado que executa as seguintes etapas:

1. Verificar se o usuário está autenticado pelo seu sistema de identidades local.

1. Chame as operações de API do AWS Security Token Service (AWS STS) [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) (recomendado) ou [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) para obter credenciais de segurança temporárias para o usuário. Para saber mais sobre os diferentes métodos que você pode usar para assumir uma função, consulte [Métodos para assumir um perfil](id_roles_manage-assume.md). Para saber como passar tags de sessão opcionais ao obter suas credenciais de segurança, consulte [Passar tags de sessão no AWS STS](id_session-tags.md).
   + Se você usar uma das operações de API `AssumeRole*` para obter as credenciais de segurança temporárias para uma função, poderá incluir o parâmetro `DurationSeconds` na chamada. Esse parâmetro especifica a duração da sessão da função de 900 segundos (15 minutos) até o valor configurado de duração máxima da sessão para a função. Ao usar `DurationSeconds` em uma operação `AssumeRole*`, você deve chamá-la como um usuário do IAM com credenciais de longo prazo. Caso contrário, a chamada para o endpoint de federação na etapa 3 falhará. Para saber como visualizar ou alterar o valor máximo de uma função, consulte [Atualizar a duração máxima da sessão de um perfil](id_roles_update-role-settings.md#id_roles_update-session-duration).
   + Se você usar a operação de API `GetFederationToken` para obter as credenciais, poderá incluir o parâmetro `DurationSeconds` na chamada. Esse parâmetro especifica a duração da sessão da função. O valor pode variar de 900 segundos (15 minutos) a 129.600 segundos (36 horas). Você só pode fazer essa chamada de API usando as credenciais de segurança da AWS de longo prazo de um usuário do IAM. Você também pode fazer essas chamadas usando credenciais de Usuário raiz da conta da AWS, mas isso não é recomendado. Se você fizer essa chamada como usuário raiz, a sessão padrão durará por uma hora. Ou você pode especificar uma sessão de 900 segundos (15 minutos) até 3.600 segundos (uma hora). 

1. Chamar o endpoint de federação da AWS e fornecer as credenciais de segurança temporárias para solicitar um token de login.

1. Construir um URL para o console que inclui o token:
   + Se você usar uma das operações da API `AssumeRole*` em seu URL, poderá incluir o parâmetro HTTP `SessionDuration`. Esse parâmetro especifica a duração da sessão do console de 900 segundos (15 minutos) a 43.200 segundos (12 horas).
   + Se você usar a operação de API `GetFederationToken` em seu URL, poderá incluir o parâmetro `DurationSeconds`. Esse parâmetro especifica a duração da sessão do console federado. O valor pode variar de 900 segundos (15 minutos) a 129.600 segundos (36 horas). 
**nota**  
A `SessionDuration` não pode ser maior ou igual à configuração de duração máxima da sessão para o perfil que você está assumindo. Por exemplo, você definiu a duração máxima da sessão para o perfil que deseja assumir como 5 horas. Seu parâmetro `SessionDuration` pode ser 16524 segundos ou 4 horas e 59 segundos.
Não use o parâmetro HTTP `SessionDuration` quando obtiver as credenciais temporárias com `GetFederationToken`. A operação vai falhar.
O uso de credenciais de uma função para assumir outra função é chamado de [*encadeamento de funções*](id_roles.md#iam-term-role-chaining). Quando você usa o encadeamento de funções, suas novas credenciais são limitadas a uma duração máxima de uma hora. Quando você usa funções para [conceder permissões a aplicativos executados em instâncias do EC2](id_roles_use_switch-role-ec2.md), esses aplicativos não estão sujeitos a essa limitação.
Não use o parâmetro HTTP `SessionDuration` quando obtiver as credenciais temporárias por meio do encadeamento de perfis. A operação vai falhar.

1. Fornecer o URL para o usuário ou invocar o URL em nome do usuário.

O URL que o endpoint de federação fornece é válido por 15 minutos após sua criação. Esse valor é diferente da duração (em segundos) da sessão com credenciais de segurança temporárias que é associada ao URL. Essas credenciais são válidas pela duração especificada quando você as criou, a partir do momento em que elas foram criadas.

**Importante**  
O URL concede acesso aos seus recursos da AWS por meio do Console de gerenciamento da AWS se você habilitou permissões nas credenciais de segurança temporárias associadas. Por esse motivo, você deve tratar o URL como um segredo. Recomendamos o retorno do URL através de um redirecionamento seguro, por exemplo, usando um código de status de resposta HTTP 302 por meio de uma conexão SSL. Para obter mais informações sobre o código de status de resposta HTTP 302, consulte [RFC 2616, seção 10.3.3](https://datatracker.ietf.org/doc/html/rfc2616#section-10.3.3).

Para concluir essas tarefas, você pode usar a [API de consulta HTTPS para o AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/APIReference/) e o [AWS Security Token Service (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/). Ou então, use linguagens de programação, como Java, Ruby ou C\$1, juntamente com o [SDK da AWS](https://aws.amazon.com/tools/). Cada um desses métodos é descrito nos tópicos a seguir.

**Topics**
+ [

## Código de exemplo usando operações de API de consulta do IAM
](#STSConsoleLink_manual)
+ [

## Exemplo de código que usa o Python
](#STSConsoleLink_programPython)
+ [

## Exemplo de código usando Java
](#STSConsoleLink_programJava)
+ [

## Exemplo que mostra como criar o URL (Ruby)
](#STSConsoleLink_programRuby)

## Código de exemplo usando operações de API de consulta do IAM
<a name="STSConsoleLink_manual"></a>

Você pode construir um URL que conceda a perfis e entidades principais federadas acesso direto ao Console de gerenciamento da AWS. Esta tarefa usa a API de consulta HTTPS do IAM e do AWS STS. Para obter mais informações sobre como fazer solicitações de consulta, consulte [Como fazer solicitações de consulta](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_UsingQueryAPI.html).

**nota**  
O procedimento a seguir contém exemplos de strings de texto. Para melhorar a legibilidade, quebras de linha foram adicionadas em alguns dos exemplos mais longos. Quando você criar estas strings para seu próprio uso, você deve omitir as quebras de linha.

**Para conceder a perfis e entidades principais federados acesso aos seus recursos via Console de gerenciamento da AWS**

1. Autentique o usuário em seu sistema de identidades e autorização.

1. Obtenha credenciais de segurança temporárias para o usuário. As credenciais de segurança temporárias consistem em um ID de chave de acesso, uma chave de acesso secreta e um token de sessão. Para obter mais informações sobre a criação de credenciais de segurança temporárias, consulte [Credenciais de segurança temporárias no IAM](id_credentials_temp.md).

   Para obter credenciais temporárias, você pode chamar a API [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) (recomendado) ou a API [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) do AWS STS. Para obter mais informações sobre as diferenças entre essas operações de API, consulte [Compreenda as opções de API para delegação segura de acesso à sua conta da AWS](https://aws.amazon.com/blogs/security/understanding-the-api-options-for-securely-delegating-access-to-your-aws-account) no blog de segurança da AWS.
**Importante**  
Quando você usa a API [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) para criar credenciais de segurança temporárias, deve especificar as permissões que as credenciais vão conceder ao usuário que assume a função. Para qualquer uma das operações de API que começam com `AssumeRole*`, você usa uma função do IAM para atribuir permissões. Para as outras operações de API, o mecanismo varia de acordo com a API. Para obter mais detalhes, consulte [Permissões de credenciais de segurança temporárias](id_credentials_temp_control-access.md). Além disso, se você usar as operações de API `AssumeRole*`, deverá chamá-las como um usuário do IAM com credenciais de longo prazo. Caso contrário, a chamada para o endpoint de federação na etapa 3 falhará.  


1. Depois que você obter as credenciais de segurança temporárias, incorpore as credenciais em uma string de sessão JSON para trocá-las por um token de login. O exemplo a seguir mostra como codificar as credenciais. Substitua o espaço reservado para texto pelos valores apropriados das credenciais que você recebeu na etapa anterior.

   ```
   {"sessionId":"*** temporary access key ID ***",
   "sessionKey":"*** temporary secret access key ***",
   "sessionToken":"*** session token ***"}
   ```

1. [Codifique por URL](https://en.wikipedia.org/wiki/Percent-encoding) a string da sessão da etapa anterior. Como as informações que você está codificando são confidenciais, recomendamos que você evite usar um serviço da web para esta codificação. Em vez disso, use uma função ou recurso instalado localmente em seu toolkit de desenvolvimento para codificar essas informações com segurança. Você pode usar a função `urllib.quote_plus` em Python, a função `URLEncoder.encode` em Java ou a função `CGI.escape` em Ruby. Veja os exemplos mais adiante neste tópico.

1. <a name="STSConsoleLink_manual_step5"></a>
**nota**  
A AWS é compatível com solicitações POST aqui.

   Envie a solicitação para o endpoint de federação da AWS:

   `https://region-code.signin.aws.amazon.com/federation` 

   Para obter uma lista dos possíveis valores de *region-code* (região-código), consulte a coluna **Region** (Região) em [AWS Sign-In endpoints](https://docs.aws.amazon.com/general/latest/gr/signin-service.html) (Endpoints de login da ). Opcionalmente, é possível usar um endpoint de federação de login padrão da AWS:

   `https://signin.aws.amazon.com/federation` 

   A solicitação deve incluir os parâmetros `Action` e `Session`, e (opcionalmente) se você tiver usado uma operação de API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html), um parâmetro HTTP `SessionDuration` conforme mostrado no exemplo a seguir.

   ```
   Action = getSigninToken
   SessionDuration = time in seconds
   Session = *** the URL encoded JSON string created in steps 3 & 4 ***
   ```
**nota**  
As instruções a seguir nesta etapa só funcionam usando solicitações GET.

   O parâmetro HTTP `SessionDuration` especifica a duração da sessão do console federado. Ele é separado da duração das credenciais temporárias que você especifica usando o parâmetro `DurationSeconds`. Você pode especificar um valor `SessionDuration` máximo de 43200 (12 horas). Se o parâmetro `SessionDuration` estiver ausente, a sessão assume a duração das credenciais recuperadas do AWS STS na etapa 2 (cujo padrão é uma hora). Consulte a [documentação da API `AssumeRole`](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) para obter detalhes sobre como especificar a duração usando o parâmetro `DurationSeconds`. A capacidade de criar uma sessão do console com duração superior a uma hora é intrínseca para a operação `getSigninToken` do endpoint de federação.
**nota**  
A `SessionDuration` não pode ser maior ou igual à configuração de duração máxima da sessão para o perfil que você está assumindo. Por exemplo, você definiu a duração máxima da sessão para o perfil que deseja assumir como 5 horas. Seu parâmetro `SessionDuration` pode ser 16524 segundos ou 4 horas e 59 segundos.
Não use o parâmetro HTTP `SessionDuration` quando obtiver as credenciais temporárias com `GetFederationToken`. A operação vai falhar.
O uso de credenciais de uma função para assumir outra função é chamado de [*encadeamento de funções*](id_roles.md#iam-term-role-chaining). Quando você usa o encadeamento de funções, suas novas credenciais são limitadas a uma duração máxima de uma hora. Quando você usa funções para [conceder permissões a aplicativos executados em instâncias do EC2](id_roles_use_switch-role-ec2.md), esses aplicativos não estão sujeitos a essa limitação.
Não use o parâmetro HTTP `SessionDuration` quando obtiver as credenciais temporárias por meio do encadeamento de perfis. A operação vai falhar.

   Ao ativar as sessões do console com uma duração estendida, você aumenta o risco de exposição das credenciais. Para ajudar a reduzir esse risco, você pode desabilitar imediatamente as sessões ativas do console para qualquer função escolhendo a opção **Revoke Sessions** (Revogar sessões) em **Role Summary** (Resumo da função) na página do console do IAM. Para obter mais informações, consulte [Revogar as credenciais de segurança temporárias do perfil do IAM](id_roles_use_revoke-sessions.md). 

    Veja a seguir um exemplo da possível aparência de sua solicitação. As linhas são distribuídas aqui para legibilidade, mas você deve enviá-la como uma string de linha única.

   ```
   https://signin.aws.amazon.com/federation
   ?Action=getSigninToken
   &SessionDuration=1800
   &Session=%7B%22sessionId%22%3A+%22ASIAJUMHIZPTOKTBMK5A%22%2C+%22sessionKey%22
   %3A+%22LSD7LWI%2FL%2FN%2BgYpan5QFz0XUpc8s7HYjRsgcsrsm%22%2C+%22sessionToken%2
   2%3A+%22FQoDYXdzEBQaDLbj3VWv2u50NN%2F3yyLSASwYtWhPnGPMNmzZFfZsL0Qd3vtYHw5A5dW
   AjOsrkdPkghomIe3mJip5%2F0djDBbo7SmO%2FENDEiCdpsQKodTpleKA8xQq0CwFg6a69xdEBQT8
   FipATnLbKoyS4b%2FebhnsTUjZZQWp0wXXqFF7gSm%2FMe2tXe0jzsdP0O12obez9lijPSdF1k2b5
   PfGhiuyAR9aD5%2BubM0pY86fKex1qsytjvyTbZ9nXe6DvxVDcnCOhOGETJ7XFkSFdH0v%2FYR25C
   UAhJ3nXIkIbG7Ucv9cOEpCf%2Fg23ijRgILIBQ%3D%3D%22%7D
   ```

   A resposta do endpoint de federação é um documento JSON com um valor `SigninToken`. Ele se parece com o seguinte exemplo.

   ```
   {"SigninToken":"*** the SigninToken string ***"}
   ```

1. 
**nota**  
AWSA permite solicitações POST aqui.

   Finalmente, crie o URL que seus usuários podem usar para acessar o Console de gerenciamento da AWS. O URL é o mesmo URL do endpoint de federação usado em [Step 5](#STSConsoleLink_manual_step5), mais os seguintes parâmetros:

   ```
   ?Action = login
   &Issuer = *** the form-urlencoded URL for your internal sign-in page ***
   &Destination = *** the form-urlencoded URL to the desired AWS console page ***
   &SigninToken = *** the value of SigninToken received in the previous step ***
   ```
**nota**  
As instruções a seguir nesta etapa só funcionam usando a API GET.

   O exemplo a seguir mostra a possível aparência do URL final. O URL é válido por 15 minutos a partir do momento em que ele é criada. As credenciais de segurança temporárias e a sessão do console incorporada dentro do URL são válidas durante o período especificado no parâmetro HTTP `SessionDuration` quando você inicialmente as solicita. 

   ```
   https://signin.aws.amazon.com/federation
   ?Action=login
   &Issuer=https%3A%2F%2Fexample.com
   &Destination=https%3A%2F%2Fconsole.aws.amazon.com%2F
   &SigninToken=VCQgs5qZZt3Q6fn8Tr5EXAMPLEmLnwB7JjUc-SHwnUUWabcRdnWsi4DBn-dvC
   CZ85wrD0nmldUcZEXAMPLE-vXYH4Q__mleuF_W2BE5HYexbe9y4Of-kje53SsjNNecATfjIzpW1
   WibbnH6YcYRiBoffZBGExbEXAMPLE5aiKX4THWjQKC6gg6alHu6JFrnOJoK3dtP6I9a6hi6yPgm
   iOkPZMmNGmhsvVxetKzr8mx3pxhHbMEXAMPLETv1pij0rok3IyCR2YVcIjqwfWv32HU2Xlj471u
   3fU6uOfUComeKiqTGX974xzJOZbdmX_t_lLrhEXAMPLEDDIisSnyHGw2xaZZqudm4mo2uTDk9Pv
   9l5K0ZCqIgEXAMPLEcA6tgLPykEWGUyH6BdSC6166n4M4JkXIQgac7_7821YqixsNxZ6rsrpzwf
   nQoS14O7R0eJCCJ684EXAMPLEZRdBNnuLbUYpz2Iw3vIN0tQgOujwnwydPscM9F7foaEK3jwMkg
   Apeb1-6L_OB12MZhuFxx55555EXAMPLEhyETEd4ZulKPdXHkgl6T9ZkIlHz2Uy1RUTUhhUxNtSQ
   nWc5xkbBoEcXqpoSIeK7yhje9Vzhd61AEXAMPLElbWeouACEMG6-Vd3dAgFYd6i5FYoyFrZLWvm
   0LSG7RyYKeYN5VIzUk3YWQpyjP0RiT5KUrsUi-NEXAMPLExMOMdoODBEgKQsk-iu2ozh6r8bxwC
   RNhujg
   ```

## Exemplo de código que usa o Python
<a name="STSConsoleLink_programPython"></a>

Os exemplos a seguir mostram como usar o Python para construir programaticamente um URL que ofereça aos usuários acesso direto ao Console de gerenciamento da AWS. Veja dois exemplos a seguir:
+ Federar por meio de solicitações GET à AWS
+ Federar por meio de solicitações POST à AWS

Ambos os exemplos usam [AWS SDK para Python (Boto3)](https://aws.amazon.com/tools/) e a API [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) para obter credenciais de segurança temporárias.

Não inclua `SessionDuration` se as credenciais de `AssumeRoleSession` forem provenientes do encadeamento de perfis. Se você incluir `SessionDuration`, a operação vai falhar.

### Usar solicitações GET
<a name="post-api-py-example"></a>

```
import urllib, json, sys
import requests # 'pip install requests'
import boto3 # AWS SDK for Python (Boto3) 'pip install boto3'

# Step 1: Authenticate user in your own identity system.

# Step 2: Using the access keys for an IAM user in your Conta da AWS,
# call "AssumeRole" to get temporary access keys for the role or federated principal

# Note: Calls to AWS STS AssumeRole must be signed using the access key ID 
# and secret access key of an IAM user or using existing temporary credentials.
# The credentials can be in Amazon EC2 instance metadata, in environment variables, 
# or in a configuration file, and will be discovered automatically by the 
# client('sts') function. For more information, see the Python SDK docs:
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html#STS.Client.assume_role
sts_connection = boto3.client('sts')

assumed_role_object = sts_connection.assume_role(
    RoleArn="arn:aws:iam::account-id:role/ROLE-NAME",
    RoleSessionName="AssumeRoleSession",
)

# Step 3: Format resulting temporary credentials into JSON
url_credentials = {}
url_credentials['sessionId'] = assumed_role_object.get('Credentials').get('AccessKeyId')
url_credentials['sessionKey'] = assumed_role_object.get('Credentials').get('SecretAccessKey')
url_credentials['sessionToken'] = assumed_role_object.get('Credentials').get('SessionToken')
json_string_with_temp_credentials = json.dumps(url_credentials)

# Step 4. Make request to AWS federation endpoint to get sign-in token. Construct the parameter string with
# the sign-in action request, a 12-hour session duration, and the JSON document with temporary credentials 
# as parameters.
request_parameters = "?Action=getSigninToken"
request_parameters += "&SessionDuration=43200"
if sys.version_info[0] < 3:
    def quote_plus_function(s):
        return urllib.quote_plus(s)
else:
    def quote_plus_function(s):
        return urllib.parse.quote_plus(s)
request_parameters += "&Session=" + quote_plus_function(json_string_with_temp_credentials)
request_url = "https://signin.aws.amazon.com/federation" + request_parameters
r = requests.get(request_url)
# Returns a JSON document with a single element named SigninToken.
signin_token = json.loads(r.text)

# Step 5: Create URL where users can use the sign-in token to sign in to 
# the console. This URL must be used within 15 minutes after the
# sign-in token was issued.
request_parameters = "?Action=login" 
request_parameters += "&Issuer=Example.org" 
request_parameters += "&Destination=" + quote_plus_function("https://console.aws.amazon.com/")
request_parameters += "&SigninToken=" + signin_token["SigninToken"]
request_url = "https://signin.aws.amazon.com/federation" + request_parameters

# Send final URL to stdout
print (request_url)
```

### Usar solicitações POST
<a name="get-api-py-example-1"></a>

```
import urllib, json, sys
import requests # 'pip install requests'
import boto3 # AWS SDK for Python (Boto3) 'pip install boto3'
import os
from selenium import webdriver # 'pip install selenium', 'brew install chromedriver'

# Step 1: Authenticate user in your own identity system.

# Step 2: Using the access keys for an IAM user in your AConta da AWS,
# call "AssumeRole" to get temporary access keys for the role or federated principal

# Note: Calls to AWS STS AssumeRole must be signed using the access key ID 
# and secret access key of an IAM user or using existing temporary credentials.
# The credentials can be in Amazon EC2 instance metadata, in environment variables, 

# or in a configuration file, and will be discovered automatically by the 
# client('sts') function. For more information, see the Python SDK docs:
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html
# http://boto3.readthedocs.io/en/latest/reference/services/sts.html#STS.Client.assume_role
if sys.version_info[0] < 3:
    def quote_plus_function(s):
        return urllib.quote_plus(s)
else:
    def quote_plus_function(s):
        return urllib.parse.quote_plus(s)

sts_connection = boto3.client('sts')

assumed_role_object = sts_connection.assume_role(
    RoleArn="arn:aws:iam::account-id:role/ROLE-NAME",
    RoleSessionName="AssumeRoleDemoSession",
)

# Step 3: Format resulting temporary credentials into JSON
url_credentials = {}
url_credentials['sessionId'] = assumed_role_object.get('Credentials').get('AccessKeyId')
url_credentials['sessionKey'] = assumed_role_object.get('Credentials').get('SecretAccessKey')
url_credentials['sessionToken'] = assumed_role_object.get('Credentials').get('SessionToken')
json_string_with_temp_credentials = json.dumps(url_credentials)

# Step 4. Make request to AWS federation endpoint to get sign-in token. Construct the parameter string with
# the sign-in action request, a 12-hour session duration, and the JSON document with temporary credentials 
# as parameters.
request_parameters = {}
request_parameters['Action'] = 'getSigninToken'
request_parameters['SessionDuration'] = '43200'
request_parameters['Session'] = json_string_with_temp_credentials

request_url = "https://signin.aws.amazon.com/federation"
r = requests.post( request_url, data=request_parameters)

# Returns a JSON document with a single element named SigninToken.
signin_token = json.loads(r.text)

# Step 5: Create a POST request where users can use the sign-in token to sign in to 
# the console. The POST request must be made within 15 minutes after the
# sign-in token was issued.
request_parameters = {}
request_parameters['Action'] = 'login'
request_parameters['Issuer']='Example.org'
request_parameters['Destination'] = 'https://console.aws.amazon.com/'
request_parameters['SigninToken'] =signin_token['SigninToken']

jsrequest = '''
var form = document.createElement('form');
form.method = 'POST';
form.action = '{request_url}';
request_parameters = {request_parameters}
for (var param in request_parameters) {{
    if (request_parameters.hasOwnProperty(param)) {{
        const hiddenField = document.createElement('input');
        hiddenField.type = 'hidden';
        hiddenField.name = param;
        hiddenField.value = request_parameters[param];
        form.appendChild(hiddenField);
    }}
}}
document.body.appendChild(form);
form.submit();
'''.format(request_url=request_url, request_parameters=request_parameters)

driver = webdriver.Chrome()
driver.execute_script(jsrequest)
input("Press Enter to close the browser window...")
```

## Exemplo de código usando Java
<a name="STSConsoleLink_programJava"></a>

O exemplo a seguir mostra como usar Java para construir programaticamente um URL que ofereça aos usuários acesso direto ao Console de gerenciamento da AWS. O trecho de código a seguir usa o [AWS SDK for Java](https://aws.amazon.com/documentation/sdkforjava/).

```
import java.net.URLEncoder;
import java.net.URL;
import java.net.URLConnection;
import java.io.BufferedReader;
import java.io.InputStreamReader;
// Available at http://www.json.org/java/index.html
import org.json.JSONObject;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient;
import com.amazonaws.services.securitytoken.model.Credentials;
import com.amazonaws.services.securitytoken.model.GetFederationTokenRequest;
import com.amazonaws.services.securitytoken.model.GetFederationTokenResult;


/* Calls to AWS STS API operations must be signed using the access key ID 
   and secret access key of an IAM user or using existing temporary 
   credentials. The credentials should not be embedded in code. For 
   this example, the code looks for the credentials in a 
   standard configuration file.
*/
AWSCredentials credentials = 
  new PropertiesCredentials(
         AwsConsoleApp.class.getResourceAsStream("AwsCredentials.properties"));

AWSSecurityTokenServiceClient stsClient = 
  new AWSSecurityTokenServiceClient(credentials);

GetFederationTokenRequest getFederationTokenRequest = 
  new GetFederationTokenRequest();
getFederationTokenRequest.setDurationSeconds(1800);
getFederationTokenRequest.setName("UserName");

// A sample policy for accessing Amazon Simple Notification Service (Amazon SNS) in the console.

String policy = "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":[{\"Action\":\"sns:*\"," +
  "\"Effect\":\"Allow\",\"Resource\":\"*\"}]}";

getFederationTokenRequest.setPolicy(policy);

GetFederationTokenResult federationTokenResult = 
  stsClient.getFederationToken(getFederationTokenRequest);

Credentials federatedCredentials = federationTokenResult.getCredentials();

// The issuer parameter specifies your internal sign-in
// page, for example https://mysignin.internal.mycompany.com/.
// The console parameter specifies the URL to the destination console of the
// AWS Management Console. This example goes to Amazon SNS. 
// The signin parameter is the URL to send the request to.

String issuerURL = "https://mysignin.internal.mycompany.com/";
String consoleURL = "https://console.aws.amazon.com/sns";
String signInURL = "https://signin.aws.amazon.com/federation";
  
// Create the sign-in token using temporary credentials,
// including the access key ID,  secret access key, and session token.
String sessionJson = String.format(
  "{\"%1$s\":\"%2$s\",\"%3$s\":\"%4$s\",\"%5$s\":\"%6$s\"}",
  "sessionId", federatedCredentials.getAccessKeyId(),
  "sessionKey", federatedCredentials.getSecretAccessKey(),
  "sessionToken", federatedCredentials.getSessionToken());
              
// Construct the sign-in request with the request sign-in token action, a
// 12-hour console session duration, and the JSON document with temporary 
// credentials as parameters.

String getSigninTokenURL = signInURL + 
                           "?Action=getSigninToken" +
                           "&DurationSeconds=43200" + 
                           "&SessionType=json&Session=" + 
                           URLEncoder.encode(sessionJson,"UTF-8");

URL url = new URL(getSigninTokenURL);

// Send the request to the AWS federation endpoint to get the sign-in token
URLConnection conn = url.openConnection ();

BufferedReader bufferReader = new BufferedReader(new 
  InputStreamReader(conn.getInputStream()));  
String returnContent = bufferReader.readLine();

String signinToken = new JSONObject(returnContent).getString("SigninToken");

String signinTokenParameter = "&SigninToken=" + URLEncoder.encode(signinToken,"UTF-8");

// The issuer parameter is optional, but recommended. Use it to direct users
// to your sign-in page when their session expires.

String issuerParameter = "&Issuer=" + URLEncoder.encode(issuerURL, "UTF-8");

// Finally, present the completed URL for the AWS console session to the user

String destinationParameter = "&Destination=" + URLEncoder.encode(consoleURL,"UTF-8");
String loginURL = signInURL + "?Action=login" +
                     signinTokenParameter + issuerParameter + destinationParameter;
```

## Exemplo que mostra como criar o URL (Ruby)
<a name="STSConsoleLink_programRuby"></a>

O exemplo a seguir mostra como usar Ruby para construir programaticamente um URL que ofereça aos usuários acesso direto ao Console de gerenciamento da AWS. Esse trecho de código usa o [AWS SDK for Ruby](https://aws.amazon.com/documentation/sdkforruby/). 

```
require 'rubygems'
require 'json'
require 'open-uri'
require 'cgi'
require 'aws-sdk'

# Create a new STS instance
# 
# Note: Calls to AWS STS API operations must be signed using an access key ID 
# and secret access key. The credentials can be in EC2 instance metadata 
# or in environment variables and will be automatically discovered by
# the default credentials provider in the AWS Ruby SDK. 
sts = Aws::STS::Client.new()

# The following call creates a temporary session that returns 
# temporary security credentials and a session token.
# The policy grants permissions to work
# in the AWS SNS console.

session = sts.get_federation_token({
  duration_seconds: 1800,
  name: "UserName",
  policy: "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":{\"Effect\":\"Allow\",\"Action\":\"sns:*\",\"Resource\":\"*\"}}",
})

# The issuer value is the URL where users are directed (such as
# to your internal sign-in page) when their session expires.
#
# The console value specifies the URL to the destination console.
# This example goes to the Amazon SNS console.
#
# The sign-in value is the URL of the AWS STS federation endpoint.
issuer_url = "https://mysignin.internal.mycompany.com/"
console_url = "https://console.aws.amazon.com/sns"
signin_url = "https://signin.aws.amazon.com/federation"

# Create a block of JSON that contains the temporary credentials
# (including the access key ID, secret access key, and session token).
session_json = {
  :sessionId => session.credentials[:access_key_id],
  :sessionKey => session.credentials[:secret_access_key],
  :sessionToken => session.credentials[:session_token]
}.to_json

# Call the federation endpoint, passing the parameters
# created earlier and the session information as a JSON block. 
# The request returns a sign-in token that's valid for 15 minutes.
# Signing in to the console with the token creates a session 
# that is valid for 12 hours.
get_signin_token_url = signin_url + 
                       "?Action=getSigninToken" + 
                       "&SessionType=json&Session=" + 
                       CGI.escape(session_json)

returned_content = URI.parse(get_signin_token_url).read

# Extract the sign-in token from the information returned
# by the federation endpoint.
signin_token = JSON.parse(returned_content)['SigninToken']
signin_token_param = "&SigninToken=" + CGI.escape(signin_token)

# Create the URL to give to the user, which includes the
# sign-in token and the URL of the console to open.
# The "issuer" parameter is optional but recommended.
issuer_param = "&Issuer=" + CGI.escape(issuer_url)
destination_param = "&Destination=" + CGI.escape(console_url)
login_url = signin_url + "?Action=login" + signin_token_param + 
  issuer_param + destination_param
```

# Tags para recursos do AWS Identity and Access Management
<a name="id_tags"></a>

Uma *tag* é um rótulo de atributo personalizado que você pode atribuir a um recurso da AWS. Cada tag tem duas partes:
+ Uma *chave de tag* (por exemplo `CostCenter`, `Environment`, `Project` ou `Purpose`).
+ Um campo opcional conhecido como um *valor de tag* (por exemplo, `111122223333`, `Production` ou um nome de equipe). Omitir o valor da tag é o mesmo que usar uma string vazia.

Juntos, esses são conhecidos como pares de chave-valor. Para saber os limites do número de etiquetas que você pode ter nos recursos do IAM, consulte [IAM e cotas do AWS STS](reference_iam-quotas.md).

**nota**  
Para obter detalhes sobre a distinção entre maiúsculas e minúsculas para chaves de tag e valores de chave de tag, consulte [Case sensitivity](#case-sensitivity).

As tags ajudam a identificar e organizar os recursos da AWS. Muitos serviços da AWS oferecem suporte à marcação para que você possa atribuir a mesma tag a recursos de diferentes serviços para indicar que os recursos estão relacionados. Por exemplo, você pode atribuir a mesma etiqueta a uma função do IAM que você atribui a um bucket do Amazon S3. Para obter mais informações sobre estratégias de marcação, consulte o *Guia do usuário de [Marcação de recursos da AWS](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)*.

Além de identificar, organizar e rastrear seus recursos do IAM com etiquetas, você pode usar etiquetas em políticas do IAM para ajudar a controlar quem pode visualizar e interagir com seus recursos. Para saber mais sobre como usar tags para controlar o acesso, consulte [Controle de acesso para usuários e funções do IAM usando etiquetas](access_iam-tags.md).

Você também pode usar tags no AWS STS para adicionar atributos personalizados ao assumir uma função ou federar um usuário. Para obter mais informações, consulte [Passar tags de sessão no AWS STS](id_session-tags.md).

**Topics**
+ [

## Escolher uma convenção de nomenclatura de tag da AWS
](#id_tags_naming)
+ [

## Regras para etiquetar no IAM e no AWS STS
](#id_tags_rules)
+ [

# Marcar usuários do IAM
](id_tags_users.md)
+ [

# Marcar perfis do IAM
](id_tags_roles.md)
+ [

# Marcar políticas gerenciadas pelo cliente
](id_tags_customer-managed-policies.md)
+ [

# Marcar provedores de identidades OpenID Connect (OIDC)
](id_tags_oidc.md)
+ [

# Marcar provedores de identidades SAML do IAM
](id_tags_saml.md)
+ [

# Marcar perfis de instância para funções do Amazon EC2
](id_tags_instance-profiles.md)
+ [

# Marcar certificados do servidor
](id_tags_server-certificates.md)
+ [

# Marcar dispositivos com MFA virtuais
](id_tags_virtual-mfa.md)
+ [

# Passar tags de sessão no AWS STS
](id_session-tags.md)

## Escolher uma convenção de nomenclatura de tag da AWS
<a name="id_tags_naming"></a>

Quando você começar a anexar etiquetas aos seus recursos do IAM, escolha sua convenção de nomenclatura de etiquetas com cuidado. Aplique a mesma convenção a todas as tags da AWS. Isso será especialmente importante se você usar tags em políticas para controlar acesso a recursos da AWS. Se você já usa tags em AWS, revise a convenção de nomenclatura e a ajuste de acordo.

**nota**  
Se a conta for de um membro do AWS Organizations, consulte [Políticas de tags](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_tag-policies.html) no guia do usuário do AWS Organizations para saber mais sobre como usar tags no AWS Organizations.

### Práticas recomendadas de nomenclatura de etiquetas
<a name="id_tags_naming_best_practices"></a>

Estas são algumas práticas recomendadas e convenções de nomenclatura para etiquetas.

Certifique-se de que os nomes das tags sejam usados de forma consistente. Por exemplo, as tags `CostCenter` e `costcenter` são diferentes, então uma pode ser configurado como uma etiqueta de alocação de custos para análise financeira e relatórios e o outra pode não ser. Da mesma forma, a etiqueta `Name` aparece no AWS Console para muitos recursos, mas a etiqueta `name` não. Para obter detalhes sobre a distinção entre maiúsculas e minúsculas para chaves de tag e valores de chave de tag, consulte [Case sensitivity](#case-sensitivity).

Várias etiquetas são predefinidas pela AWS ou criadas automaticamente por diversos serviços da AWS. Muitos nomes de etiquetas definidos pela AWS usam todas as letras minúsculas, com hifens separando palavras no nome e prefixos para identificar o serviço de origem da etiqueta. Por exemplo: 
+ `aws:ec2spot:fleet-request-id` identifica a solicitação de instância spot do Amazon EC2 que iniciou a instância.
+ `aws:cloudformation:stack-name` identifica a pilha da CloudFormation que criou o recurso. 
+ `elasticbeanstalk:environment-name` identifica a aplicação que criou o recurso.

Considere nomear suas etiquetas usando todas as letras minúsculas, com hifens separando palavras e um prefixo identificando o nome da organização ou o nome abreviado. Por exemplo, para uma empresa fictícia chamada *AnyCompany*, seria possível definir etiquetas como:
+ `anycompany:cost-center` para identificar o código interno do centro de custos 
+ `anycompany:environment-type` para identificar se o ambiente é de desenvolvimento, teste ou produção
+ `anycompany:application-id` para identificar a aplicação para a qual o recurso foi criado 

O prefixo garante que as etiquetas sejam claramente identificadas como tendo sido definidas pela sua organização, e não por AWS nem por uma ferramenta de terceiros que você possa ter usado. Usar todas as letras minúsculas com hifens para separadores evita confusão sobre como formatar o nome de uma etiqueta em letras maiúsculas. Por exemplo, `anycompany:project-id` é mais simples de lembrar do que `ANYCOMPANY:ProjectID`, `anycompany:projectID` ou `Anycompany:ProjectId`.

## Regras para etiquetar no IAM e no AWS STS
<a name="id_tags_rules"></a>

Uma série de convenções regem a criação e a aplicação de etiquetas no IAM e no AWS STS.

### Nomear tags
<a name="id_tags_rules_creating"></a>

Observe as seguintes convenções ao formular uma convenção de nomenclatura de etiqueta para recursos do IAM, sessões de assumir função do AWS STS e sessões de usuário federado do AWS STS:

**Requisitos de caracteres**: as chaves e os valores de etiqueta podem incluir qualquer combinação de letras, números, espaços e dos símbolos \$1 . : / = \$1 - @.

**Diferenciação entre maiúsculas e minúsculas**: a diferenciação de maiúsculas e minúsculas para chaves de etiqueta difere de acordo com o tipo de recurso do IAM que é etiquetado. Os valores de chave de etiqueta para usuários e funções do IAM não diferenciam maiúsculas de minúsculas, mas são preservados. Isso significa que você não pode ter chaves de tag **Department** e **department** separadas. Se você tiver marcado um usuário com a tag **Department=finance** e adicionar a tag **department=hr**, ela substituirá a primeira. Uma segunda tag não é adicionada.

Para outros tipos de recursos do IAM, os valores de chave de etiqueta diferenciam maiúsculas de minúsculas. Isso significa que você pode ter as chaves de tag **Costcenter** e **costcenter**. Por exemplo, se você tiver marcado uma política gerenciada pelo cliente com a tag **Costcenter = 1234** e adicionar a tag **costcenter = 5678**, a política terá ambas as chaves de tag **Costcenter** e **costcenter**.

Como prática recomendada, recomendamos que você evite usar tags semelhantes com padrões diferentes de maiúsculas e minúsculas. Recomendamos definir uma estratégia para letras maiúsculas em etiquetas e implementá-las de forma consistente em todos os tipos de recursos. Para saber mais sobre as melhores práticas para marcação, consulte [Marcar recursos da AWS](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) na Referência geral da AWS.

As listas a seguir mostram as diferenças na distinção entre maiúsculas e minúsculas para chaves de etiqueta que são anexadas aos recursos do IAM.

Os valores de chave de tag **não** diferenciam maiúsculas de minúsculas:
+ Perfis do IAM
+ Usuários do IAM

Os valores de chave de tag diferenciam maiúsculas de minúsculas:
+ Políticas gerenciadas pelo cliente
+ Perfis de instância
+ Provedores de identidade do OpenID Connect
+ Provedores de identidade SAML
+ Certificados de servidor
+ Dispositivos virtuais de MFA

Além disso, as seguintes regras se aplicam:
+ Você não pode criar uma chave ou um valor de tag que comece com o texto **aws:**. Esse prefixo de etiqueta está reservado para uso interno da AWS.
+ Você pode criar uma tag com um valor vazio, como **phoneNumber = **. Você não pode criar uma chave de tag vazia.
+ Você não pode especificar vários valores em uma única tag, mas pode criar uma estrutura multivalor personalizada no valor único. Por exemplo, suponhamos que o usuário Zhang trabalhe na equipe de engenharia e na equipe de controle de qualidade. Se anexar a tag **team = Engineering** e, em seguida, anexar a tag **team = QA**, você alterará o valor da tag de **Engineering** para **QA**. Em vez disso, você pode incluir vários valores em uma única tag com um separador personalizado. Neste exemplo, você pode anexar a tag **team = Engineering:QA** a Zhang.
**nota**  
Para controlar o acesso a engenheiros neste exemplo usando a tag **team**, você deve criar uma política que possibilite todas as configurações que possam incluir **Engineering**, até mesmo **Engineering:QA**. Para saber mais sobre como usar tags em políticas, consulte [Controle de acesso para usuários e funções do IAM usando etiquetas](access_iam-tags.md).

### Aplicar e editar tags
<a name="id_tags_rules_applying"></a>

Observe as seguintes convenções ao associar etiquetas a recursos do IAM:
+ Você pode marcar a maioria dos recursos do IAM, mas não grupos, funções assumidas, relatórios de acesso e dispositivos de MFA baseada em hardware.
+ Você não pode usar o Tag Editor para etiquetar recursos do IAM. O Tag Editor não é compatível com etiquetas do IAM. Para obter informações sobre como usar o Tag Editor com outros serviços, consulte [Working with Tag Editor](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/tag-editor.html) no *Guia do usuário do AWS Resource Groups*.
+ Para etiquetar um recurso do IAM, você deve ter permissões específicas. Para marcar ou desmarcar recursos, você também deve ter permissão para listar tags. Para obter mais informações, consulte a lista de tópicos para cada recurso do IAM no final desta página. 
+ O número e o tamanho dos recursos do IAM em uma conta da AWS são limitados. Para obter mais informações, consulte [IAM e cotas do AWS STS](reference_iam-quotas.md).
+ Você pode aplicar a mesma etiqueta a vários recursos do IAM. Por exemplo, suponha que você tenha um departamento chamado `AWS_Development` com 12 membros. É possível ter 12 usuários e uma função com a chave de tag de **department** e um valor de **awsDevelopment** (**department = awsDevelopment**). Você também pode usar a mesma tag em recursos em outros serviços [que dão suporte a tags](reference_aws-services-that-work-with-iam.md).
+ Entidades (usuários ou funções) do IAM não podem ter várias instâncias da mesma chave de etiqueta. Por exemplo, se você tiver um usuário com o par de chave-valor de etiqueta **costCenter = 1234**, poderá associar o par de chave-valor da etiqueta **costCenter = 5678**. O IAM atualiza o valor da etiqueta **costCenter** para **5678**.
+ Para editar uma etiqueta associada a uma entidade (usuário ou função) do IAM, associe uma etiqueta com um novo valor para substituir a etiqueta existente. Por exemplo, suponhamos que você tenha um usuário com o par de chave-valor de tag **department = Engineering**. Se precisar mover o usuário para o departamento de controle de qualidade, você poderá associar o par de chave-valor de tag **department = QA** a ele. Isso resulta na substituição do **Engineering** valor da chave de tag **department** pelo valor **QA**.

# Marcar usuários do IAM
<a name="id_tags_users"></a>

Você pode usar pares de chave-valor de etiqueta do IAM para adicionar atributos personalizados a um usuário do IAM. Por exemplo, para adicionar informações de localização a um usuário, você pode adicionar a chave de tag **location** e o valor de tag **us\$1wa\$1seattle**. Ou você pode usar três pares de chave-valor de tags de locais separados: **loc-country = us**, **loc-state = wa** e **loc-city = seattle**. Você pode usar tags para controlar o acesso de um usuário a recursos ou controlar quais tags podem ser associadas a um usuário. Para saber mais sobre como usar tags para controlar o acesso, consulte [Controle de acesso para usuários e funções do IAM usando etiquetas](access_iam-tags.md).

Você também pode usar tags no AWS STS para adicionar atributos personalizados ao assumir uma função ou federar um usuário. Para obter mais informações, consulte [Passar tags de sessão no AWS STS](id_session-tags.md).

## Permissões necessárias para etiquetar usuários do IAM
<a name="id_tags_users_permissions"></a>

Você deve configurar permissões para permitir que um usuário do IAM possa etiquetar outros usuários. Você pode especificar uma ou todas as seguintes de etiqueta do IAM em uma política do IAM:
+ `iam:ListUserTags`
+ `iam:TagUser`
+ `iam:UntagUser`

**Permitir que um usuário do IAM adicione, liste ou remova uma etiqueta para um usuário específico**  
Adicione a instrução a seguir à política de permissões do usuário do IAM que precisa gerenciar etiquetas. Use o número da sua conta e substitua *<username>* pelo nome do usuário cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListUserTags",
        "iam:TagUser",
        "iam:UntagUser"
    ],
    "Resource": "arn:aws:iam::<account-number>:user/<username>"
}
```

**Para permitir que um usuário do IAM autogerencie etiquetas**  
Adicione a seguinte instrução à política de permissões para que usuários permitam que outros gerenciem as próprias tags. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListUserTags",
        "iam:TagUser",
        "iam:UntagUser"
    ],
    "Resource": "arn:aws:iam::user/${aws:username}"
}
```

**Para permitir que um usuário do IAM adicione uma etiqueta a um usuário específico**  
Adicione a seguinte instrução à política de permissões para o usuário do IAM que precisa adicionar, mas não remover, etiquetas para um usuário específico.

**nota**  
A ação `iam:TagUser` requer que você também inclua a ação `iam:ListUserTags`.

Para usar essa política, substitua *<username>* pelo nome do usuário cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListUserTags",
        "iam:TagUser"
    ],
    "Resource": "arn:aws:iam::<account-number>:user/<username>"
}
```

Como alternativa, você pode usar uma política gerenciada pela AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess), para fornecer acesso total ao IAM.

## Gerenciamento de etiquetas em usuários do IAM (console)
<a name="id_tags_users_procs-console"></a>

Você pode gerenciar etiquetas de usuários do IAM no Console de gerenciamento da AWS.

**Gerenciar tags em usuários (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console, escolha **Users (usuários)** e, em seguida, escolha o nome do usuário que deseja editar.

1. Escolha a guia **Tags** e conclua uma das seguintes ações:
   + Escolha **Adicionar nova etiqueta** se o usuário ainda não tiver etiquetas.
   + Escolha **Manage tags** (Gerenciar tags) para gerenciar o conjunto de tags existente.

1. Adicione ou remova tags para concluir o conjunto de tags. Em seguida, escolha **Salvar alterações**.

## Gerenciamento de etiquetas em usuários do IAM (AWS CLI ou API da AWS)
<a name="id_tags_users_procs-cli-api"></a>

Você pode listar, anexar ou remover etiquetas de usuários do IAM. Você pode usar a AWS CLI ou a API da AWS para gerenciar etiquetas de usuários do IAM.

**Para listar as etiquetas atualmente anexadas a um usuário do IAM (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam list-user-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-user-tags.html)
+ AWS API: [ListUserTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUserTags.html)

**Para anexar etiquetas a um usuário do IAM (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam tag-user](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-user.html)
+ AWS API: [TagUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagUser.html)

**Para remover etiquetas de um usuário do IAM (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam untag-user](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-user.html)
+ AWS API: [UntagUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagUser.html)

Para obter informações sobre como anexar tags a recursos de outros serviços da AWS, consulte a documentação desses serviços. 

Para obter informações sobre como usar etiquetas para definir mais permissões detalhadas com políticas de permissões do IAM, consulte [Elementos de política do IAM: variáveis e etiquetas](reference_policies_variables.md).

# Marcar perfis do IAM
<a name="id_tags_roles"></a>

Você pode usar pares de chave-valor de etiquetas do IAM para adicionar atributos personalizados a uma função do IAM. Por exemplo, para adicionar informações de localização a uma função, você pode adicionar a chave de tag **location** e o valor de tag **us\$1wa\$1seattle**. Ou você pode usar três pares de chave-valor de tags de locais separados: **loc-country = us**, **loc-state = wa** e **loc-city = seattle**. Você pode usar tags para controlar o acesso de uma função a recursos ou controlar quais tags podem ser associadas a uma função. Para saber mais sobre como usar tags para controlar o acesso, consulte [Controle de acesso para usuários e funções do IAM usando etiquetas](access_iam-tags.md).

Você também pode usar tags no AWS STS para adicionar atributos personalizados ao assumir uma função ou federar um usuário. Para obter mais informações, consulte [Passar tags de sessão no AWS STS](id_session-tags.md).

## Permissões necessárias para etiquetar funções do IAM
<a name="id_tags_roles_permissions"></a>

Você deve configurar permissões para permitir que uma função do IAM etiquete outras entidades (usuários ou funções). Você pode especificar uma ou todas as seguintes de etiqueta do IAM em uma política do IAM:
+ `iam:ListRoleTags`
+ `iam:TagRole`
+ `iam:UntagRole`
+ `iam:ListUserTags`
+ `iam:TagUser`
+ `iam:UntagUser`

**Para permitir que uma função do IAM adicione, liste ou remova uma etiqueta para um usuário específico**  
Adicione a instrução a seguir à política de permissões para a função do IAM que precisa gerenciar etiquetas. Use o número da sua conta e substitua *<username>* pelo nome do usuário cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListUserTags",
        "iam:TagUser",
        "iam:UntagUser"
    ],
    "Resource": "arn:aws:iam::<account-number>:user/<username>"
}
```

**Para permitir que uma função do IAM adicione uma etiqueta para um usuário específico**  
Adicione a seguinte instrução à política de permissões para a função do IAM que precisa adicionar, mas não remover, etiquetas para um usuário específico.

Para usar essa política, substitua *<username>* pelo nome do usuário cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListUserTags",
        "iam:TagUser"
    ],
    "Resource": "arn:aws:iam::<account-number>:user/<username>"
}
```

**Para permitir que uma função do IAM adicione, liste ou remova uma etiqueta para uma função específica**  
Adicione a instrução a seguir à política de permissões para a função do IAM que precisa gerenciar etiquetas. Substitua *<rolename>* pelo nome da função cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListRoleTags",
        "iam:TagRole",
        "iam:UntagRole"
    ],
    "Resource": "arn:aws:iam::<account-number>:role/<rolename>"
}
```

Como alternativa, você pode usar uma política gerenciada pela AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess), para fornecer acesso total ao IAM.

## Gerenciamento de etiquetas em funções do IAM (console)
<a name="id_tags_roles_procs-console"></a>

Você pode gerenciar etiquetas de funções do IAM no Console de gerenciamento da AWS.

**Gerenciar tags em funções (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console, escolha **Roles (Funções)** e, em seguida, escolha o nome da função que deseja editar.

1. Escolha a guia **Tags** e conclua uma das seguintes ações:
   + Escolha **Add tags** (Adicionar tags) se a função ainda não tiver tags.
   + Escolha **Manage tags** (Gerenciar tags) para gerenciar o conjunto de tags existente.

1. Adicione ou remova tags para concluir o conjunto de tags. Depois, escolha **Save changes** (Salvar alterações).

## Gerenciar etiquetas em funções do IAM (AWS CLI ou API da AWS)
<a name="id_tags_roles_procs-cli-api"></a>

Você pode listar, anexar ou remover etiquetas de funções do IAM. Você pode usar a AWS CLI ou a API da AWS para gerenciar etiquetas em funções do IAM.

**Para listar as etiquetas atualmente anexadas a uma função do IAM (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam list-role-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-role-tags.html)
+ API da AWS: [ListRoleTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoleTags.html)

**Para anexar etiquetas a uma função do IAM (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam tag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-role.html)
+ AWS API: [TagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagRole.html)

**Para remover etiquetas de uma função do IAM (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam untag-role](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-role.html)
+ AWS API: [UntagRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagRole.html)

Para obter informações sobre como anexar tags a recursos de outros serviços da AWS, consulte a documentação desses serviços. 

Para obter informações sobre como usar etiquetas para definir mais permissões detalhadas com políticas de permissões do IAM, consulte [Elementos de política do IAM: variáveis e etiquetas](reference_policies_variables.md).

# Marcar políticas gerenciadas pelo cliente
<a name="id_tags_customer-managed-policies"></a>

Você pode usar pares de chave-valor de etiqueta do IAM para adicionar atributos personalizados às políticas gerenciadas pelo cliente. Por exemplo, para marcar uma política com informações de departamento, você pode adicionar a chave de tag **Department** e o valor de tag **eng**. Ou, talvez você queira marcar políticas para indicar que elas se aplicam a um ambiente específico, como **Environment = lab**. Você pode usar tags para controlar o acesso a recursos ou controlar quais tags podem ser associadas a um recurso. Para saber mais sobre como usar tags para controlar o acesso, consulte [Controle de acesso para usuários e funções do IAM usando etiquetas](access_iam-tags.md).

Você também pode usar tags no AWS STS para adicionar atributos personalizados ao assumir uma função ou federar um usuário. Para obter mais informações, consulte [Passar tags de sessão no AWS STS](id_session-tags.md).

## Permissões necessárias para marcar políticas gerenciadas pelo cliente
<a name="id_tags_customer-managed-policies_permissions"></a>

Você deve configurar permissões para permitir que uma entidade (usuário ou função) do IAM possa etiquetar políticas gerenciadas pelo cliente. Você pode especificar uma ou todas as seguintes de etiqueta do IAM em uma política do IAM:
+ `iam:ListPolicyTags`
+ `iam:TagPolicy`
+ `iam:UntagPolicy`

**Para permitir que uma entidade do IAM (usuário ou função) adicione, liste ou remova uma etiqueta para uma política gerenciada pelo cliente**  
Adicione a seguinte instrução à política de permissões para a entidade do IAM que precisa gerenciar etiquetas. Use o número da sua conta e substitua *<policyname>* pelo nome da política cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListPolicyTags",
        "iam:TagPolicy",
        "iam:UntagPolicy"
    ],
    "Resource": "arn:aws:iam::<account-number>:policy/<policyname>"
}
```

**Para permitir que uma entidade do IAM (usuário ou função) adicione uma etiqueta a uma política específica gerenciada pelo cliente**  
Adicione a instrução a seguir à política de permissões para a entidade do IAM que precisa adicionar, mas não remover, etiquetas para uma política específica. 

**nota**  
A ação `iam:TagPolicy` requer que você também inclua a ação `iam:ListPolicyTags`.

Para usar essa política, substitua *<policyname>* pelo nome da política cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListPolicyTags",
        "iam:TagPolicy"
    ],
    "Resource": "arn:aws:iam::<account-number>:policy/<policyname>"
}
```

Como alternativa, você pode usar uma política gerenciada pela AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess), para fornecer acesso total ao IAM.

## Gerenciamento de etiquetas em políticas gerenciadas pelo cliente do IAM (console)
<a name="id_tags_customer-managed-policies_procs-console"></a>

Você pode gerenciar etiquetas para políticas gerenciadas pelo cliente do IAM do Console de gerenciamento da AWS.

**Gerenciar tags em políticas gerenciadas pelo cliente (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console, escolha **Policies (Políticas)** e, em seguida, escolha o nome da política gerenciada pelo cliente que deseja editar.

1. Escolha a guia **Tags** e depois escolha **Gerenciar tags**.

1. Adicione ou remova tags para concluir o conjunto de tags. Em seguida, escolha **Salvar alterações**.

## Gerenciamento de etiquetas em políticas gerenciadas pelo cliente do IAM (AWS CLI ou API da AWS)
<a name="id_tags_customer-managed-policies_procs-cli-api"></a>

Você pode listar, anexar ou remover etiquetas para políticas gerenciadas pelo cliente IAM. Você pode usar a AWS CLI ou a API da AWS para gerenciar etiquetas para políticas gerenciadas pelo cliente do IAM.

**Para listar as etiquetas atualmente anexadas a uma política gerenciada pelo cliente do IAM (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam list-policy-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-policy-tags.html)
+ AWS API: [ListPolicyTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListPolicyTags.html)

**Para anexar etiquetas a uma política gerenciada pelo cliente do IAM (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam tag-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-policy.html)
+ AWS API: [TagPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagPolicy.html)

**Para remover etiquetas de uma política gerenciada pelo cliente do IAM (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam untag-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-policy.html)
+ AWS API: [UntagPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagPolicy.html)

Para obter informações sobre como anexar tags a recursos de outros serviços da AWS, consulte a documentação desses serviços. 

Para obter informações sobre como usar etiquetas para definir mais permissões detalhadas com políticas de permissões do IAM, consulte [Elementos de política do IAM: variáveis e etiquetas](reference_policies_variables.md).

# Marcar provedores de identidades OpenID Connect (OIDC)
<a name="id_tags_oidc"></a>

Você pode usar chaves-valores de etiqueta do IAM para adicionar atributos personalizados a provedores de identidade OpenID Connect (OIDC) do IAM. Por exemplo, para identificar um provedor de identidade OIDC, você pode adicionar a chave de tag **google** e o valor de tag **oidc**. Você pode usar tags para controlar o acesso a recursos ou controlar quais tags podem ser associadas a um objeto. Para saber mais sobre como usar tags para controlar o acesso, consulte [Controle de acesso para usuários e funções do IAM usando etiquetas](access_iam-tags.md).

## Permissões necessárias para etiquetar provedores de identidade OIDC do IAM
<a name="id_tags_oidc_permissions"></a>

Você deve configurar permissões para permitir que uma entidade (usuário ou função) do IAM etiquete provedores de identidade OIDC do IAM. Você pode especificar uma ou todas as seguintes de etiqueta do IAM em uma política do IAM:
+ `iam:ListOpenIDConnectProviderTags`
+ `iam:TagOpenIDConnectProvider`
+ `iam:UntagOpenIDConnectProvider`

**Para permitir que uma entidade do IAM adicione, liste ou remova uma etiqueta para um provedor de identidades OIDC do IAM**  
Adicione a seguinte instrução à política de permissões para a entidade do IAM que precisa gerenciar etiquetas. Use o número da sua conta e substitua *<OIDCProviderName>* pelo nome do provedor de identidade OIDC cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListOpenIDConnectProviderTags",
        "iam:TagOpenIDConnectProvider",
        "iam:UntagOpenIDConnectProvider"
    ],
    "Resource": "arn:aws:iam::<account-number>:oidc-provider/<OIDCProviderName>"
}
```

**Para permitir que uma entidade (usuário ou função) do IAM adicione uma etiqueta a um provedor de identidade OIDC específico do IAM**  
Adicione a instrução a seguir à política de permissões da entidade do IAM que precisa adicionar, mas não remover, etiquetas em um provedor de identidade específico.

**nota**  
A ação `iam:TagOpenIDConnectProvider` requer que você também inclua a ação `iam:ListOpenIDConnectProviderTags`.

Para usar essa política, substitua *<OIDCProviderName>* pelo nome do provedor de identidade OIDC cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListOpenIDConnectProviderTags",
        "iam:TagOpenIDConnectProvider"
    ],
    "Resource": "arn:aws:iam::<account-number>:oidc-provider/<OIDCProviderName>"
}
```

Como alternativa, você pode usar uma política gerenciada pela AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess), para fornecer acesso total ao IAM.

## Gerenciamento de etiquetas em provedores de identidade OIDC do IAM (console)
<a name="id_tags_oidc_procs-console"></a>

Você pode gerenciar etiquetas para provedores de identidade OIDC do IAM no Console de gerenciamento da AWS.

**Gerenciar tags em provedores de identidade OIDC (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console, escolha **Identity providers (Provedores de identidade)** e, em seguida, escolha o nome do provedor de identidade que deseja editar.

1. Escolha a guia **Tags** e, na seção **Tags**, selecione **Gerenciar tags** e, em seguida, conclua uma das seguintes ações:
   + Escolha **Add tag (Adicionar tag)** se o provedor de identidade OIDC ainda não tiver tags ou para adicionar uma nova tag.
   + Edite chaves e valores de tag existentes.
   + Para remover uma tag, escolha **Remove tag (Remover tag)**.

1. Em seguida, escolha **Salvar alterações**.

## Gerenciamento de etiquetas em provedores de identidade OIDC do IAM (AWS CLI ou API da AWS)
<a name="id_tags_oidc_procs-cli-api"></a>

Você pode listar, anexar ou remover etiquetas em provedores de identidade OIDC do IAM. Você pode usar a AWS CLI ou a API da AWS para gerenciar etiquetas em provedores de identidade OIDC do IAM.

**Para listar as etiquetas atualmente anexadas a um provedor de identidade OIDC do IAM (AWS CLI ou AWS API)**
+ AWS CLI: [aws iam list-open-id-connect-provider-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-open-id-connect-provider-tags.html)
+ AWS API: [ListOpenIDConnectProviderTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListOpenIDConnectProviderTags.html)

**Para anexar etiquetas a um provedor de identidade OIDC do IAM (AWS CLI ou AWS API)**
+ AWS CLI: [aws iam tag-open-id-connect-provider](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-open-id-connect-provider.html)
+ AWS API: [TagOpenIDConnectProvider](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagOpenIDConnectProvider.html)

**Para remover etiquetas de um provedor de identidade OIDC do IAM (AWS CLI ou AWS API)**
+ AWS CLI: [aws iam untag-open-id-connect-provider](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-open-id-connect-provider.html)
+ AWS API: [UntagOpenIDConnectProvider](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagOpenIDConnectProvider.html)

Para obter informações sobre como anexar tags a recursos de outros serviços da AWS, consulte a documentação desses serviços. 

Para obter informações sobre como usar etiquetas para definir mais permissões detalhadas com políticas de permissões do IAM, consulte [Elementos de política do IAM: variáveis e etiquetas](reference_policies_variables.md).

# Marcar provedores de identidades SAML do IAM
<a name="id_tags_saml"></a>

Você pode usar pares de chave-valor de etiqueta do IAM para adicionar atributos personalizados a provedores de identidade SAML. Por exemplo, para identificar um provedor, você pode adicionar a chave de tag **okta** e o valor de tag **saml**. Você pode usar tags para controlar o acesso a recursos ou controlar quais tags podem ser associadas a um objeto. Para saber mais sobre como usar tags para controlar o acesso, consulte [Controle de acesso para usuários e funções do IAM usando etiquetas](access_iam-tags.md).

## Permissões necessárias para marcar provedores de identidade SAML
<a name="id_tags_saml_permissions"></a>

Você deve configurar permissões para permitir que uma entidade (usuários ou funções) do IAM etiquete provedores de identidade (IdPs) baseados no SAML 2.0. Você pode especificar uma ou todas as seguintes de etiqueta do IAM em uma política do IAM:
+ `iam:ListSAMLProviderTags`
+ `iam:TagSAMLProvider`
+ `iam:UntagSAMLProvider`

**Para permitir que uma entidade (usuário ou função) do IAM adicione, liste ou remova uma etiqueta em um provedor de identidade SAML**  
Adicione a seguinte instrução à política de permissões para a entidade do IAM que precisa gerenciar etiquetas. Use o número da sua conta e substitua *<SAMLProviderName>* pelo nome do provedor SAML cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListSAMLProviderTags",
        "iam:TagSAMLProvider",
        "iam:UntagSAMLProvider"
    ],
    "Resource": "arn:aws:iam::<account-number>:saml-provider/<SAMLProviderName>"
}
```

**Para permitir que uma entidade (usuário ou função) do IAM adicione uma etiqueta a um provedor de identidade SAML específico**  
Adicione a instrução a seguir à política de permissões da entidade do IAM que precisa adicionar, mas não remover, etiquetas em um provedor SAML específico.

**nota**  
A ação `iam:TagSAMLProvider` requer que você também inclua a ação `iam:ListSAMLProviderTags`.

Para usar essa política, substitua *<SAMLProviderName>* pelo nome do provedor SAML cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListSAMLProviderTags",
        "iam:TagSAMLProvider"
    ],
    "Resource": "arn:aws:iam::<account-number>:saml-provider/<SAMLProviderName>"
}
```

Como alternativa, você pode usar uma política gerenciada pela AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess), para fornecer acesso total ao IAM.

## Gerenciamento de etiquetas em provedores de identidade SAML do IAM (console)
<a name="id_tags_saml_procs-console"></a>

Você pode gerenciar etiquetas para provedores de identidade SAML do IAM no Console de gerenciamento da AWS.

**Gerenciar tags em provedores de identidade SAML (console)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação do console, escolha **Identity providers (Provedores de identidade)** e, em seguida, escolha o nome do provedor de identidade SAML que deseja editar.

1. Escolha a guia **Tags** e, na seção **Tags**, selecione **Gerenciar tags** e, em seguida, conclua uma das seguintes ações:
   + Escolha **Add tag (Adicionar tag)** se o provedor de identidade SAML ainda não tiver tags ou para adicionar uma nova tag.
   + Edite chaves e valores de tag existentes.
   + Para remover uma tag, escolha **Remove tag (Remover tag)**.

1. Adicione ou remova tags para concluir o conjunto de tags. Em seguida, escolha **Salvar alterações**.

## Gerenciamento de etiquetas em provedores de identidade SAML do IAM (AWS CLI ou API da AWS)
<a name="id_tags_saml_procs-cli-api"></a>

Você pode listar, anexar ou remover etiquetas em provedores de identidade SAML do IAM. Você pode usar a AWS CLI ou a API da AWS para gerenciar etiquetas em provedores de identidade SAML do IAM.

**Listar tags atualmente associadas a um provedor de identidade SAML (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam list-saml-provider-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-provider-tags.html)
+ AWS API: [ListSAMLProviderTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviderTags.html)

**Associar tags a um provedor de identidade SAML (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam tag-saml-provider](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-saml-provider.html)
+ AWS API: [TagSAMLProvider](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagSAMLProvider.html)

**Remover tags de um provedor de identidade SAML (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam untag-saml-provider](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-saml-provider.html)
+ AWS API: [UntagSAMLProvider](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagSAMLProvider.html)

Para obter informações sobre como anexar tags a recursos de outros serviços da AWS, consulte a documentação desses serviços. 

Para obter informações sobre como usar etiquetas para definir mais permissões detalhadas com políticas de permissões do IAM, consulte [Elementos de política do IAM: variáveis e etiquetas](reference_policies_variables.md).

# Marcar perfis de instância para funções do Amazon EC2
<a name="id_tags_instance-profiles"></a>

Quando você executa uma instância do Amazon EC2, você especifica uma função do IAM para associar à instância. Perfil de instância é um contêiner para uma função do IAM que pode ser usada para passar informações da função para uma instância do Amazon EC2 quando a instância é iniciada. Você pode marcar perfis de instância ao usar a AWS CLI ou a API da AWS.

É possível usar pares de chave-valor de etiqueta do IAM para adicionar atributos personalizados a um perfil de instância. Por exemplo, para adicionar informações de departamento a um perfil de instância, você pode adicionar a chave de tag **access-team** e o valor de tag **eng**. Assim, os principais com tags correspondentes terão acesso a perfis de instância com a mesma tag. Você pode usar vários pares de chave-valor de tag para especificar uma equipe e um projeto: **access-team = eng ** e **project = peg**. Você pode usar tags para controlar o acesso de um usuário a recursos ou controlar quais tags podem ser associadas a um usuário. Para saber mais sobre como usar tags para controlar o acesso, consulte [Controle de acesso para usuários e funções do IAM usando etiquetas](access_iam-tags.md).

Você também pode usar tags no AWS STS para adicionar atributos personalizados ao assumir uma função ou federar um usuário. Para obter mais informações, consulte [Passar tags de sessão no AWS STS](id_session-tags.md).

## Permissões necessárias para marcar perfis de instância
<a name="id_tags_instance-profiles_permissions"></a>

Você deve configurar permissões para permitir que uma entidade (usuário ou função) do IAM etiquete perfis de instância. Você pode especificar uma ou todas as seguintes de etiqueta do IAM em uma política do IAM:
+ `iam:ListInstanceProfileTags`
+ `iam:TagInstanceProfile`
+ `iam:UntagInstanceProfile`

**Para permitir que uma entidade (usuário ou função) do IAM adicione, liste ou remova uma etiqueta em um perfil de instância**  
Adicione a seguinte instrução à política de permissões para a entidade do IAM que precisa gerenciar etiquetas. Use o número da sua conta e substitua *<InstanceProfileName>* pelo nome do perfil de instância cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListInstanceProfileTags",
        "iam:TagInstanceProfile",
        "iam:UntagInstanceProfile"
    ],
    "Resource": "arn:aws:iam::<account-number>:instance-profile/<InstanceProfileName>"
}
```

**Para permitir que uma entidade (usuário ou função) do IAM adicione uma etiqueta a um perfil de instância específico**  
Adicione a declaração a seguir à política de permissões da entidade do IAM que precisa adicionar, mas não remover, etiquetas em um perfil de instância específico. 

**nota**  
A ação `iam:TagInstanceProfile` requer que você também inclua a ação `iam:ListInstanceProfileTags`.

Para usar essa política, substitua *<InstanceProfileName>* pelo nome do perfil de instância cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListInstanceProfileTags",
        "iam:TagInstanceProfile"
    ],
    "Resource": "arn:aws:iam::<account-number>:instance-profile/<InstanceProfileName>"
}
```

Como alternativa, você pode usar uma política gerenciada pela AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess), para fornecer acesso total ao IAM.

## Gerenciar tags em perfis de instância (AWS CLI ou API da AWS)
<a name="id_tags_instance-profile_procs-cli-api"></a>

Você pode listar, associar ou remover tags em perfis de instância. Você pode usar a AWS CLI ou a API da AWS para gerenciar tags em perfis de instância.

**Listar tags atualmente associadas a um perfil de instância (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam list-instance-profile-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profile-tags.html)
+ AWS API: [ListInstanceProfileTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfileTags.html)

**Associar tags a um perfil de instância (AWS CLI ou AWS API)**
+ AWS CLI: [aws iam tag-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-instance-profile.html)
+ AWS API: [TagInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagInstanceProfile.html)

**Remover tags de um perfil de instância (AWS CLI ou AWS API)**
+ AWS CLI: [aws iam untag-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-instance-profile.html)
+ AWS API: [UntagInstanceProfile](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagInstanceProfile.html)

Para obter informações sobre como anexar tags a recursos de outros serviços da AWS, consulte a documentação desses serviços. 

Para obter informações sobre como usar etiquetas para definir mais permissões detalhadas com políticas de permissões do IAM, consulte [Elementos de política do IAM: variáveis e etiquetas](reference_policies_variables.md).

# Marcar certificados do servidor
<a name="id_tags_server-certificates"></a>

Se você usar o IAM para gerenciar certificados SSL/TLS, poderá etiquetar os certificados do servidor no IAM usando AWS CLI ou a API da AWS. Para certificados em uma região compatível com AWS Certificate Manager (ACM), recomendamos que você use o ACM em vez do IAM para provisionar, gerenciar e implantar seus certificados de servidor. Nas regiões sem suporte, você deve usar o IAM como gerenciador de certificados. Para saber quais regiões são compatíveis com o ACM, consulte [Cotas e endpoints do AWS Certificate Manager](https://docs.aws.amazon.com/general/latest/gr/acm.html) na *Referência geral da AWS*.

Você pode usar pares de chave-valor de etiqueta do IAM para adicionar atributos personalizados a um certificado de servidor. Por exemplo, para adicionar informações sobre o proprietário ou administrador de um certificado de servidor, adicione a chave de tag **owner** e o valor de tag **net-eng**. Ou você pode especificar um centro de custo adicionando a chave de tag **CostCenter** e o valor de tag **1234**. Você pode usar tags para controlar o acesso a recursos ou controlar quais tags podem ser associadas a um recurso. Para saber mais sobre como usar tags para controlar o acesso, consulte [Controle de acesso para usuários e funções do IAM usando etiquetas](access_iam-tags.md).

Você também pode usar tags no AWS STS para adicionar atributos personalizados ao assumir uma função ou federar um usuário. Para obter mais informações, consulte [Passar tags de sessão no AWS STS](id_session-tags.md).

## Permissões necessárias para marcar certificados de servidor
<a name="id_tags_server-certificates_permissions"></a>

Você deve configurar permissões para permitir que uma entidade (usuário ou função) do IAM etiquete certificados de servidor. Você pode especificar uma ou todas as seguintes de etiqueta do IAM em uma política do IAM:
+ `iam:ListServerCertificateTags`
+ `iam:TagServerCertificate`
+ `iam:UntagServerCertificate`

**Para permitir que uma entidade (usuário ou função) do IAM adicione, liste ou remova uma etiqueta em um certificado de servidor**  
Adicione a seguinte instrução à política de permissões para a entidade do IAM que precisa gerenciar etiquetas. Use o número da sua conta e substitua *<CertificateName>* pelo nome do certificado de servidor cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListServerCertificateTags",
        "iam:TagServerCertificate",
        "iam:UntagServerCertificate"
    ],
    "Resource": "arn:aws:iam::<account-number>:server-certificate/<CertificateName>"
}
```

**Para permitir que uma entidade (usuário ou função) do IAM adicione uma etiqueta a um certificado de servidor específico**  
Adicione a instrução a seguir à política de permissões da entidade do IAM que precisa adicionar, mas não remover, etiquetas em um certificado de servidor específico.

**nota**  
A ação `iam:TagServerCertificate` requer que você também inclua a ação `iam:ListServerCertificateTags`.

Para usar essa política, substitua *<CertificateName>* pelo nome do certificado de servidor cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListServerCertificateTags",
        "iam:TagServerCertificate"
    ],
    "Resource": "arn:aws:iam::<account-number>:server-certificate/<CertificateName>"
}
```

Como alternativa, você pode usar uma política gerenciada pela AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess), para fornecer acesso total ao IAM.

## Gerenciar tags em certificados de servidor (AWS CLI ou API da AWS)
<a name="id_tags_server-certificates_procs-cli-api"></a>

Você pode listar, associar ou remover tags em certificados de servidor. Você pode usar a AWS CLI ou a API da AWS para gerenciar tags em certificados de servidor.

**Listar tags atualmente associadas a um certificado de servidor (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam list-server-certificate-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-server-certificate-tags.html)
+ AWS API: [ListServerCertificateTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServerCertificateTags.html)

**Associar tags a um certificado de servidor (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam tag-server-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-server-certificate.html)
+ AWS API: [TagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagServerCertificate.html)

**Remover tags de um certificado de servidor (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam untag-server-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-server-certificate.html)
+ AWS API: [UntagServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagServerCertificate.html)

Para obter informações sobre como anexar tags a recursos de outros serviços da AWS, consulte a documentação desses serviços. 

Para obter informações sobre como usar etiquetas para definir mais permissões detalhadas com políticas de permissões do IAM, consulte [Elementos de política do IAM: variáveis e etiquetas](reference_policies_variables.md).

# Marcar dispositivos com MFA virtuais
<a name="id_tags_virtual-mfa"></a>

Você pode usar pares de chave-valor de etiqueta do IAM para adicionar atributos personalizados a um dispositivo com MFA virtual. Por exemplo, para adicionar informações do centro de custo para o dispositivo MFA virtual de um usuário, você pode adicionar a chave de tag **CostCenter** e o valor de tag **1234**. Você pode usar tags para controlar o acesso a recursos ou controlar quais tags podem ser associadas a um objeto. Para saber mais sobre como usar tags para controlar o acesso, consulte [Controle de acesso para usuários e funções do IAM usando etiquetas](access_iam-tags.md).

Você também pode usar tags no AWS STS para adicionar atributos personalizados ao assumir uma função ou federar um usuário. Para obter mais informações, consulte [Passar tags de sessão no AWS STS](id_session-tags.md).

## Permissões necessárias para marcar dispositivos MFA virtuais
<a name="id_tags_virtual-mfa_permissions"></a>

Você deve configurar permissões para permitir que uma entidade (usuário ou função) do IAM etiquete dispositivos com MFA virtuais. Você pode especificar uma ou todas as seguintes de etiqueta do IAM em uma política do IAM:
+ `iam:ListMFADeviceTags`
+ `iam:TagMFADevice`
+ `iam:UntagMFADevice`

**Para permitir que uma entidade (usuário ou função) do IAM adicione, liste ou remova uma etiqueta em um dispositivo com MFA virtual**  
Adicione a seguinte instrução à política de permissões para a entidade do IAM que precisa gerenciar etiquetas. Use o número da sua conta e substitua *<MFATokenID>* pelo nome do dispositivo MFA virtual cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListMFADeviceTags",
        "iam:TagMFADevice",
        "iam:UntagMFADevice"
    ],
    "Resource": "arn:aws:iam::<account-number>:mfa/<MFATokenID>"
}
```

**Para permitir que uma entidade (usuário ou função) do IAM adicione uma etiqueta a um dispositivo com MFA virtual específico**  
Adicione a seguinte instrução à política de permissões da entidade do IAM que precisa adicionar, mas não remover, etiquetas em um dispositivo com MFA específico.

**nota**  
A ação `iam:TagMFADevice` requer que você também inclua a ação `iam:ListMFADeviceTags`.

Para usar essa política, substitua *<MFATokenID>* pelo nome do dispositivo MFA virtual cujas tags precisam ser gerenciadas. Para saber mais sobre como criar uma política usando este exemplo de documento de política JSON, consulte [Criar políticas usando o editor de JSON](access_policies_create-console.md#access_policies_create-json-editor).

```
{
    "Effect": "Allow",
    "Action": [
        "iam:ListMFADeviceTags",
        "iam:TagMFADevice"
    ],
    "Resource": "arn:aws:iam::<account-number>:mfa/<MFATokenID>"
}
```

Como alternativa, você pode usar uma política gerenciada pela AWS, como [IAMFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/IAMFullAccess), para fornecer acesso total ao IAM.

## Gerenciar tags em dispositivos MFA virtuais (AWS CLI ou API da AWS)
<a name="id_tags_virtual-mfa_procs-cli-api"></a>

Você pode listar, associar ou remover tags em um dispositivo MFA virtual. Você pode usar a AWS CLI ou a API da AWS para gerenciar tags em um dispositivo MFA virtual.

**Listar tags atualmente associadas a um dispositivo MFA virtual (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam list-mfa-device-tags](https://docs.aws.amazon.com/cli/latest/reference/iam/list-mfa-device-tags.html)
+ AWS API: [ListMFADeviceTags](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListMFADeviceTags.html)

**Associar tags a um dispositivo MFA virtual (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam tag-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-mfa-device.html)
+ AWS API: [TagMFADevice](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagMFADevice.html)

**Remover tags de um dispositivo MFA virtual (AWS CLI ou API da AWS)**
+ AWS CLI: [aws iam untag-mfa-device](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-mfa-device.html)
+ AWS API: [UntagMFADevice](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagMFADevice.html)

Para obter informações sobre como anexar tags a recursos de outros serviços da AWS, consulte a documentação desses serviços. 

Para obter informações sobre como usar etiquetas para definir mais permissões detalhadas com políticas de permissões do IAM, consulte [Elementos de política do IAM: variáveis e etiquetas](reference_policies_variables.md).

# Passar tags de sessão no AWS STS
<a name="id_session-tags"></a>

As etiquetas de sessão são atributos de par de chave-valor que você passa ao assumir uma função do IAM ou federar um usuário no AWS STS. Isso é feito criando uma solicitação da AWS CLI ou da API da AWS por meio do AWS STS ou do seu provedor de identidade (IdP). Ao usar o AWS STS para solicitar credenciais de segurança temporárias, você gera uma sessão. As sessões expiram e têm [credenciais](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html), tais como um par de chaves de acesso e um token de sessão. Quando você usa as credenciais de sessão para fazer uma solicitação subsequente, o [contexto de solicitação](reference_policies_elements_condition.md#AccessPolicyLanguage_RequestContext) inclui a chave de contexto `aws:PrincipalTag`. Você pode usar a chave `aws:PrincipalTag` no elemento `Condition` de suas políticas para permitir ou negar acesso com base nessas tags.

Ao usar credenciais temporárias para fazer uma solicitação, seu principal pode incluir um conjunto de tags. Essas tags vêm das seguintes fontes:

1. **Tags de sessão**: as etiquetas que foram passadas quando você assumiu a função ou federou o usuário usando a AWS CLI ou a API da AWS. Para obter mais informações sobre essas operações, consulte a [Operações de marcação de sessão](#id_session-tags_operations).

1. **Etiquetas de sessão transitivas recebidas**: essas etiquetas foram herdadas de uma sessão anterior em uma cadeia de funções. Para obter mais informações, consulte [Encadeamento de funções com tags de sessão](#id_session-tags_role-chaining) mais adiante neste tópico.

1. **Etiquetas do IAM**: as etiquetas anexadas à sua função assumida no IAM.

**Topics**
+ [

## Operações de marcação de sessão
](#id_session-tags_operations)
+ [

## Coisas a saber sobre tags de sessão
](#id_session-tags_know)
+ [

## Permissões necessárias para adicionar tags de sessão
](#id_session-tags_permissions-required)
+ [

## Passar tags de sessão usando AssumeRole
](#id_session-tags_adding-assume-role)
+ [

## Passar tags de sessão usando AssumeRoleWithSAML
](#id_session-tags_adding-assume-role-saml)
+ [

## Passar tags de sessão usando AssumeRoleWithWebIdentity
](#id_session-tags_adding-assume-role-idp)
+ [

## Passar tags de sessão usando GetFederationToken
](#id_session-tags_adding-getfederationtoken)
+ [

## Encadeamento de funções com tags de sessão
](#id_session-tags_role-chaining)
+ [

## Usar tags de sessão para ABAC
](#id_session-tags_using-abac)
+ [

## Visualizar etiquetas da sessão no CloudTrail
](#id_session-tags_ctlogs)

## Operações de marcação de sessão
<a name="id_session-tags_operations"></a>

Você pode passar tags de sessão usando as seguintes operações do AWS CLI ou API da AWS em AWS STS. *O recurso **[Switch Role (Alternar função)](id_roles_use_switch-role-console.md)** do Console de gerenciamento da AWS não permite que você passe tags de sessão*.

Você também pode definir as tags de sessão como transitivas. As tags transitivas persistem durante o encadeamento de funções. Para obter mais informações, consulte [Encadeamento de funções com tags de sessão](#id_session-tags_role-chaining).

A tabela a seguir compara os métodos de passagem de tags de sessão.


|  Operation |  **Quem pode assumir a função**  | **Método para passar tags** |  **Método para definir tags transitivas**  | 
| --- | --- | --- | --- | 
| Operação da CLI [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) ou da API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) | Usuário ou sessão do IAM | Parâmetro da API Tags ou opção da CLI --tags | Parâmetro da API TransitiveTagKeys ou opção da CLI --transitive-tag-keys | 
| Operação da CLI [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-saml.html) ou da API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) | Qualquer usuário autenticado usando um provedor de identidade SAML | PrincipalTagAtributo SAML  | TransitiveTagKeysAtributo SAML  | 
| Operação da CLI [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) ou da API [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) | Qualquer usuário autenticado usando um provedor OIDC | Token OIDC PrincipalTag | Token OIDC TransitiveTagKeys | 
| Operação da CLI [https://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-federation-token.html) ou da API [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) | Usuário raiz ou usuário do IAM | Parâmetro da API Tags ou opção da CLI --tags | Não compatível | 

As operações que oferecem suporte à etiquetamento de sessão podem falhar nas seguintes condições:
+ Você passar mais de 50 tags de sessão.
+ O texto simples das chaves de etiqueta de sessão exceder 128 caracteres.
+ O texto simples dos valores de etiqueta de sessão exceder 256 caracteres.
+ O tamanho total do texto simples das políticas da sessão exceder 2048 caracteres.
+ O tamanho total compactado das políticas e etiquetas de sessão combinadas for muito grande. Se a operação falhar, a mensagem de erro indicará, em porcentagem, o quão perto as políticas e etiquetas combinadas estão do limite de tamanho superior.

## Coisas a saber sobre tags de sessão
<a name="id_session-tags_know"></a>

Antes de usar tags de sessão, revise os seguintes detalhes sobre sessões e tags.
+ Ao usar etiquetas de sessão, as políticas de confiança para todas as funções conectadas ao provedor de identidade (IdP) que está passando etiquetas devem ter a permissão [`sts:TagSession`](#id_session-tags_permissions-required). Para funções sem essa permissão na política de confiança, a operação `AssumeRole` falhará.
+ Quando você solicita uma sessão, você pode especificar etiquetas de entidades de segurança como as etiquetas de sessão. As tags se aplicam às solicitações feitas usando as credenciais da sessão.
+ As etiquetas de sessão são pares de chave-valor. Por exemplo, para adicionar informações de contato a uma sessão, você pode adicionar a chave de tag de sessão `email` e o valor da tag `johndoe@example.com`.
+ As etiquetas de sessão devem seguir as [regras para nomear etiquetas no IAM e no AWS STS](id_tags.md#id_tags_rules_creating). Este tópico inclui informações sobre diferenciação de maiúsculas e minúsculas e prefixos restritos que se aplicam às tags de sessão.
+ As novas etiquetas de sessão substituem o perfil assumido existente ou as tags de sessão de usuário federado pela mesma chave de tag, independentemente da caixa alta ou baixa dos caracteres.
+ Você não pode passar tags de sessão usando o Console de gerenciamento da AWS.
+ As tags de sessão são válidas somente para a sessão atual. 
+ As tags de sessão oferecem suporte ao [encadeamento de funções](id_roles.md#iam-term-role-chaining). Por padrão, o AWS STS não passa etiquetas para sessões de função subsequentes. No entanto, você pode definir tags de sessão como transitivas. As etiquetas transitivas persistem durante o encadeamento de funções e substituem os valores `ResourceTag` correspondentes após a avaliação da política de confiança de função. Para obter mais informações, consulte [Encadeamento de funções com tags de sessão](#id_session-tags_role-chaining).
+ Você pode usar tags de sessão para controlar o acesso a recursos ou para controlar quais tags podem ser passadas para uma sessão subsequente. Para obter mais informações, consulte [Tutorial do IAM: Usar etiquetas de sessão SAML para ABAC](tutorial_abac-saml.md).
+ Você pode visualizar as etiquetas de entidades de segurança da sua sessão, incluindo as etiquetas de sessão, nos logs do AWS CloudTrail. Para obter mais informações, consulte [Visualizar etiquetas da sessão no CloudTrail](#id_session-tags_ctlogs).
+ Você deve passar um único valor para cada etiqueta de sessão. O AWS STS não oferece suporte a etiquetas de sessão de vários valores. 
+ Você pode passar, no máximo, 50 tags de sessão. O número e o tamanho dos recursos do IAM em uma conta da AWS são limitados. Para obter mais informações, consulte [IAM e cotas do AWS STS](reference_iam-quotas.md).
+ Uma conversão da AWS compacta as políticas de sessão passadas e as etiquetas de sessão combinadas em um formato binário compactado que tem um limite separado. Se você exceder esse limite, a mensagem de erro da AWS CLI ou da API da AWS mostrará, em porcentagem, o quão perto as políticas e etiquetas combinadas estão do limite de tamanho superior.

## Permissões necessárias para adicionar tags de sessão
<a name="id_session-tags_permissions-required"></a>

Além da ação que corresponde à operação da API, é necessário ter a seguinte ação somente com permissão em sua política:

```
sts:TagSession
```

**Importante**  
Ao usar tags de sessão, as políticas de confiança da função para todas as funções conectadas a um provedor de identidade (IdP) devem ter a `sts:TagSession` permissão. A operação `AssumeRole` falhará em qualquer função conectada a um IdP que esteja passando etiquetas de sessão sem essa permissão. Se você não quiser atualizar a política de confiança de função para cada função, use uma instância de IdP separada para passar as tags da sessão. Em seguida, adicione a permissão `sts:TagSession` apenas às funções conectadas ao IdP separado.

Você pode usar a ação `sts:TagSession` com as chaves de condição a seguir.
+ `aws:PrincipalTag`: compara a etiqueta anexada à entidade de segurança que está fazendo a solicitação com a etiqueta que você especificou na política. Por exemplo, você pode permitir que um principal passe tags de sessão somente se o principal que está fazendo a solicitação tiver as tags especificadas.
+ `aws:RequestTag`: compara o par de chave-valor da etiqueta passado na solicitação com o par de etiquetas que você especificou na política. Por exemplo, você pode permitir que o principal passe as tags de sessão especificadas, mas somente com os valores especificados.
+ `aws:ResourceTag`: compara o par de chave-valor da etiqueta que você especificou na política com o par de chave-valor anexado ao recurso. Por exemplo, você pode permitir que a entidade de segurança passe etiquetas de sessão somente se a função que ela estiver assumindo incluir as etiquetas especificadas.
+ `aws:TagKeys`: compara as chaves de etiqueta em uma solicitação com as chaves que você especificou na política. Por exemplo, você pode permitir que o principal passe apenas tags de sessão com as chaves de tag especificadas. Essa chave de condição limita o conjunto máximo de tags de sessão que podem ser passadas.
+ `sts:TransitiveTagKeys`: compara as chaves de etiqueta de sessão transitiva na solicitação com aquelas especificadas na política. Por exemplo, você pode criar uma política para permitir que um principal defina apenas tags específicas como transitivas. As tags transitivas persistem durante o encadeamento de funções. Para obter mais informações, consulte [Encadeamento de funções com tags de sessão](#id_session-tags_role-chaining).

Por exemplo, a [política de confiança da função](id_roles.md#term_trust-policy) a seguir permite que o usuário `test-session-tags` assuma a função com a política anexada. Ao assumir a função, esse usuário deve usar a AWS CLI ou API da AWS para passar as três tags de sessão necessárias e o [ID externo](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id) necessário. Além disso, o usuário pode optar por definir as tags `Project` e `Department` como transitivas.

**Example Exemplo de política de confiança de função para tags de sessão**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowIamUserAssumeRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Principal": {"AWS": "arn:aws:iam::123456789012:user/test-session-tags"},
            "Condition": {
              "StringLike": {
                    "aws:RequestTag/Project": "*",
                    "aws:RequestTag/CostCenter": "*",
                    "aws:RequestTag/Department": "*"
                },
                "StringEquals": {"sts:ExternalId": "Example987"}
            }
        },
        {
            "Sid": "AllowPassSessionTagsAndTransitive",
            "Effect": "Allow",
            "Action": "sts:TagSession",
            "Principal": {"AWS": "arn:aws:iam::123456789012:user/test-session-tags"},
            "Condition": {
                "StringLike": {
                    "aws:RequestTag/Project": "*",
                    "aws:RequestTag/CostCenter": "*"
                },
                "StringEquals": {
                    "aws:RequestTag/Department": [
                        "Engineering",
                        "Marketing"
                    ]
                },
                "ForAllValues:StringEquals": {
                    "sts:TransitiveTagKeys": [
                        "Project",
                        "Department"
                    ]
                }
            }
        }
    ]
}
```

**O que essa política faz?**
+ A instrução `AllowIamUserAssumeRole` permite que o usuário `test-session-tags` assuma a função com a política anexada. Ao assumir a função, esse usuário deve passar as tags de sessão necessárias e o [ID externo](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id).
  + O primeiro bloco condicional dessa instrução requer que o usuário passe as tags de sessão `Project`, `CostCenter` e `Department`. Os valores da etiqueta não importam nesta instrução, portanto, você pode usar caracteres curinga (\$1) para os valores de etiqueta. Esse bloqueio garante que o usuário passe pelo menos essas três etiquetas de sessão. Caso contrário, haverá falha na operação. O usuário pode passar tags adicionais.
  + O segundo bloco de condição requer que o usuário passe um [ID externo](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id) com o valor `Example987`.
+ A instrução `AllowPassSessionTagsAndTransitive` permite a ação somente com permissão `sts:TagSession`. Esta ação deve ser permitida antes que o usuário possa passar tags de sessão. Se sua política incluir a primeira instrução sem a segunda instrução, o usuário não poderá assumir a função.
  + O primeiro bloco de condição dessa instrução permite que o usuário passe qualquer valor para as tags de sessão `CostCenter` e `Project`. É possível fazer isso usando curingas (\$1) para o valor de tag na política, o que requer o uso do operador de condição [StringLike](reference_policies_elements_condition_operators.md#Conditions_String) .
  + O segundo bloco de condição permite que o usuário passe somente o valor `Engineering` ou `Marketing` para a tag de sessão `Department`.
  + O terceiro bloco de condição lista o conjunto máximo de etiquetas que você pode definir como transitivas. O usuário pode optar por definir um subconjunto ou nenhuma tag como transitiva. O usuário não pode definir etiquetas adicionais como transitivas. Você pode exigir que ele defina pelo menos uma das tags como transitivas adicionando outro bloco de condição que inclui `"Null":{"sts:TransitiveTagKeys":"false"}`. 

## Passar tags de sessão usando AssumeRole
<a name="id_session-tags_adding-assume-role"></a>

A operação `AssumeRole` retorna um conjunto de credenciais temporárias que você pode usar para acessar recursos da AWS. Você pode usar o usuário do IAM ou credenciais de função para chamar `AssumeRole`. Para passar tags de sessão ao assumir uma função, use a opção `--tags` da AWS CLI ou o parâmetro `Tags` da API da AWS. 

Para definir tags como transitivas, use a opção `--transitive-tag-keys` da AWS CLI ou o parâmetro `TransitiveTagKeys` da API da AWS. As tags transitivas persistem durante o encadeamento de funções. Para obter mais informações, consulte [Encadeamento de funções com tags de sessão](#id_session-tags_role-chaining).

O exemplo a seguir mostra uma solicitação de exemplo que usa `AssumeRole`. Neste exemplo, ao assumir a função `my-role-example`, você cria uma sessão chamada `my-session`. Adicione os pares de chave-valor da tag de sessão `Project` = `Automation`, `CostCenter` = `12345` e `Department` = `Engineering`. Defina também as tags `Project` e `Department` como transitivas especificando suas chaves. Você deve passar um único valor para cada etiqueta de sessão. O AWS STS não oferece suporte a etiquetas de sessão de vários valores.

**Example Exemplo de solicitação da CLI AssumeRole**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/my-role-example \
--role-session-name my-session \
--tags Key=Project,Value=Automation Key=CostCenter,Value=12345 Key=Department,Value=Engineering \
--transitive-tag-keys Project Department \
--external-id Example987
```

## Passar tags de sessão usando AssumeRoleWithSAML
<a name="id_session-tags_adding-assume-role-saml"></a>

A operação `AssumeRoleWithSAML` é autenticada com o uso de federação baseada em SAML. Essa operação retorna um conjunto de credenciais temporárias que você pode usar para acessar recursos da AWS. Para obter mais informações sobre como usar a federação baseada em SAML para acesso ao Console de gerenciamento da AWS, consulte [Habilitar o acesso das entidades principais federadas do SAML 2.0 ao Console de gerenciamento da AWS](id_roles_providers_enable-console-saml.md). Para obter detalhes sobre acesso à AWS CLI ou à API da AWS, consulte [Federação SAML 2.0](id_roles_providers_saml.md). Para obter um tutorial sobre como configurar a federação do SAML para seus usuários do Active Directory, consulte [AWS Federated Authentication with Active Directory Federation Services (ADFS)](https://aws.amazon.com/blogs/security/aws-federated-authentication-with-active-directory-federation-services-ad-fs/) no AWS Security Blog. 

Como administrador, você pode permitir que os membros do diretório da empresa se agrupem na AWS usando a operação AWS STS da `AssumeRoleWithSAML`. Para isso, é necessário concluir as seguintes tarefas:

1. [Configurar sua rede como um provedor SAML para a AWS](id_roles_providers_saml_3rd-party.md).

1. [Criar um provedor SAML no IAM](id_roles_providers_create_saml.md)

1. [Criar um perfil para uma federação do SAML 2.0 (console)](id_roles_create_for-idp_saml.md)

1. [Concluir a configuração do IdP SAML e criar declarações para a resposta de autenticação SAML](id_roles_providers_create_saml_assertions.md)

AWSA inclui provedores de identidade com experiência de ponta a ponta certificada para etiquetas de sessão com suas soluções de identidade. Para saber como usar esses provedores de identidade para configurar tags de sessão, consulte [Integrar provedores de soluções SAML de terceiros com a AWS](id_roles_providers_saml_3rd-party.md).

Para passar atributos SAML como tags de sessão, inclua o elemento `Attribute` com o atributo `Name` definido como `https://aws.amazon.com/SAML/Attributes/PrincipalTag:{TagKey}`. Use o elemento `AttributeValue` para especificar o valor da tag. Inclua um elemento `Attribute` separado para cada tag de sessão.

Por exemplo, vamos supor que você queira passar os seguintes atributos de identidade como tags de sessão:
+ `Project:Automation`
+ `CostCenter:12345`
+ `Department:Engineering`

Para passar esses atributos, inclua os seguintes elementos em sua declaração do SAML.

**Example Exemplo de trecho de uma declaração SAML**  

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project">
  <AttributeValue>Automation</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter">
  <AttributeValue>12345</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Department">
  <AttributeValue>Engineering</AttributeValue>
</Attribute>
```

Para definir as etiquetas anteriores como transitivas, inclua outro elemento `Attribute` com o atributo `Name` definido como `https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys`. As tags transitivas persistem durante o encadeamento de funções. Para obter mais informações, consulte [Encadeamento de funções com tags de sessão](#id_session-tags_role-chaining).

Para definir as etiquetas `Project` e `Department` como transitivas, use o seguinte atributo multivalor:

**Example Exemplo de trecho de uma declaração SAML**  

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys">
  <AttributeValue>Project</AttributeValue>
  <AttributeValue>Department</AttributeValue>
</Attribute>
```

## Passar tags de sessão usando AssumeRoleWithWebIdentity
<a name="id_session-tags_adding-assume-role-idp"></a>

Use federação compatível com OpenID Connect (OIDC) para autenticar a operação `AssumeRoleWithWebIdentity`. Essa operação retorna um conjunto de credenciais temporárias que você pode usar para acessar recursos da AWS. Para obter mais informações sobre como usar a federação de identidades da web para Console de gerenciamento da AWS acesso, consulte [Federação OIDC](id_roles_providers_oidc.md).

Para passar tags de sessão do OpenID Connect (OIDC), você deve incluir as tags de sessão no JSON Web Token (JWT) quando enviar a solicitação `AssumeRoleWithWebIdentity`. Para saber mais sobre tokens e reivindicações OIDC, consulte [Usar tokens com grupos de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) no *Guia do desenvolvedor Amazon Cognito*.

A AWS aceita dois formatos de declaração para inclusão de tags de sessão no JWT: 
+ Formato de declaração aninhada
+ Formato de declaração nivelada

### Formato de declaração aninhada
<a name="id_session-tags_adding-assume-role-idp-nested-format"></a>

O formato de declaração aninhada usa uma estrutura dentro do namespace `https://aws.amazon.com/tags` no JWT. Nesse formato:
+ As tags de entidade principal são representadas como um objeto aninhado sob a chave `principal_tags`.
+ Cada tag de entidade principal é um valor de uma única string.
+ As chaves de tag transitivas são representadas em uma matriz sob a chave `transitive_tag_keys`.
+ Tanto `principal_tags` quanto `transitive_tag_keys` são aninhados sob o namespace `https://aws.amazon.com/tags`.

O exemplo a seguir mostra um JWT decodificado que usa o formato de objeto aninhado: 

**Example Exemplo de JSON Web Token decodificado que usa o formato de declaração aninhada**  

```
{
    "sub": "johndoe",
    "aud": "ac_oic_client",
    "jti": "ZYUCeRMQVtqHypVPWAN3VB",
    "iss": "https://xyz.com",
    "iat": 1566583294,
    "exp": 1566583354,
    "auth_time": 1566583292,
    "https://aws.amazon.com/tags": {
        "principal_tags": {
            "Project": ["Automation"],
            "CostCenter": ["987654"],
            "Department": ["Engineering"]
        },
        "transitive_tag_keys": [
            "Project",
            "CostCenter"
        ]
    }
}
```

### Formato de declaração nivelada
<a name="id_session-tags_adding-assume-role-idp-flattened-format"></a>

O formato de declaração nivelada é compatível com provedores de identidades que não aceitam objetos aninhados em declarações do JWT, como o Microsoft Entra ID. Nesse formato:
+ As tags de entidade principal são representadas como declarações distintas com o prefixo `https://aws.amazon.com/tags/principal_tags/`. 
+ Cada tag de entidade principal é um valor de uma única string.
+ As chaves de tag transitivas são representadas em uma única declaração como uma matriz de strings com o prefixo `https://aws.amazon.com/tags/transitive_tag_keys`.

Agora, vamos ver como as mesmas informações são representadas usando o formato de declaração nivelada:

**Example Exemplo de JSON Web Token decodificado que usa o formato de declaração nivelada**  

```
{
    "sub": "johndoe",
    "aud": "ac_oic_client",
    "jti": "ZYUCeRMQVtqHypVPWAN3VB",
    "iss": "https://xyz.com",
    "iat": 1566583294,
    "exp": 1566583354,
    "auth_time": 1566583292,
    "https://aws.amazon.com/tags/principal_tags/Project": "Automation",
    "https://aws.amazon.com/tags/principal_tags/CostCenter": "987654",
    "https://aws.amazon.com/tags/principal_tags/Department": "Engineering",
    "https://aws.amazon.com/tags/transitive_tag_keys": [
        "Project",
        "CostCenter"
    ]
}
```

Ambos os exemplos de JWT decodificados mostram uma chamada para `AssumeRoleWithWebIdentity` com as tags de sessão `Project`, `CostCenter` e `Department`. Ambos os tokens definem as tags `Project` e `CostCenter` como transitivas. As tags transitivas persistem durante o encadeamento de funções. Para obter mais informações, consulte [Encadeamento de funções com tags de sessão](#id_session-tags_role-chaining).

O formato de declaração nivelada alcança o mesmo resultado que o formato de declaração aninhada, mas usa uma estrutura nivelada para tags. Ele permite que você inclua tags de sessão em ambientes em que objetos JSON aninhados não são aceitos em declarações do JWT. Ao usar qualquer um dos formatos, certifique-se de que seu provedor de identidades esteja configurado para emitir tokens com as estruturas de declaração apropriadas. A AWS aceita os dois formatos de declaração para você poder escolher o que melhor se adapta aos requisitos específicos do seu provedor de identidades.

## Passar tags de sessão usando GetFederationToken
<a name="id_session-tags_adding-getfederationtoken"></a>

`GetFederationToken` permite federar seu usuário. Essa operação retorna um conjunto de credenciais temporárias que você pode usar para acessar recursos da AWS. Para adicionar tags à sua sessão de usuário federado, use a opção `--tags` da AWS CLI ou o parâmetro `Tags` da API da AWS. Não é possível definir etiquetas de sessão como transitivas ao usar o`GetFederationToken` porque você não pode usar as credenciais temporárias para assumir uma função. Não é possível usar encadeamento de função neste caso. 

O exemplo a seguir mostra uma solicitação de exemplo usando `GetFederationToken`. Neste exemplo, ao solicitar o token, você cria uma sessão chamada `my-fed-user`. Adicione os pares de chave-valor da tag de sessão `Project` = `Automation` e `Department` = `Engineering`.

**Example Exemplo de solicitação da CLI GetFederationToken**  

```
aws sts get-federation-token \
--name my-fed-user \
--tags key=Project,value=Automation key=Department,value=Engineering
```

Quando você usa as credenciais temporárias retornadas pela operação `GetFederationToken`, as etiquetas da entidade de segurança da sessão incluem as etiquetas do usuário e as etiquetas passadas da sessão.

## Encadeamento de funções com tags de sessão
<a name="id_session-tags_role-chaining"></a>

Você pode assumir uma função e usar as credenciais temporárias para assumir outra função. É possível continuar de sessão em sessão. Isso é chamado de [encadeamento de funções](id_roles.md#iam-term-role-chaining). Ao passar tags de sessão enquanto assume uma função, você pode definir as chaves como transitivas. Isso garante que essas tags de sessão passem para sessões subsequentes em uma cadeia de funções. Não é possível definir tags de função como transitivas. Para passar essas tags para sessões subsequentes, especifique-as como tags de sessão.

**nota**  
As etiquetas transitivas persistem durante o encadeamento de funções e substituem os valores `ResourceTag` correspondentes após a avaliação da política de confiança de função.

O exemplo a seguir mostra como o AWS STS passa etiquetas de sessão, etiquetas transitivas e etiquetas de função em sessões subsequentes em uma cadeia de função.

Neste exemplo de cenário de encadeamento de funções, você usa uma chave de acesso de usuário do IAM na AWS CLI para assumir uma função chamada `Role1`. Use as credenciais de sessão resultantes para assumir uma segunda função chamada `Role2`. Você poderá usar as credenciais de segunda sessão para assumir uma terceira função chamada `Role3`. Essas solicitações ocorrem como três operações distintas. Cada função já está etiquetada no IAM. E durante cada solicitação, você passa tags de sessão adicionais.

![\[Encadeamento de funções\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/session-tags-chaining-simple.png)


Ao encadear funções, você pode garantir que as tags de uma sessão anterior persistam para as sessões posteriores. Para fazer isso usando o comando da CLI `assume-role`, é necessário passar a etiqueta como etiqueta de sessão e definir a etiqueta como transitiva. Passe a tag `Star` = `1` como tag de sessão. O comando também anexa a etiqueta `Heart` = `1` à função e se aplica como uma etiqueta de entidade de segurança quando você usa a sessão. No entanto, você também deseja que a tag `Heart` = `1` passe automaticamente para a segunda ou terceira sessão. Para isso, inclua a tag manualmente como tag de sessão. As etiquetas de entidade de segurança de sessão resultantes incluem ambas as etiquetas e as define como transitivas.

![\[Assumir a primeira função em uma cadeia de funções\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/session-tags-chaining-role1.png)


Execute essa solicitação usando o seguinte comando da AWS CLI:

**Example Exemplo de solicitação da CLI AssumeRole**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Role1 \
--role-session-name Session1 \
--tags Key=Star,Value=1 Key=Heart,Value=1 \
--transitive-tag-keys Star Heart
```

Use as credenciais dessa sessão para assumir `Role2`. O comando anexa a etiqueta `Sun` = `2` à segunda função e se aplica como uma etiqueta de entidade de segurança quando você usa a segunda sessão. As etiquetas `Heart` e `Star` herdam as etiquetas transitivas de sessão na primeira sessão. As etiquetas de entidade de segurança resultantes da segunda sessão são `Heart` = `1`, `Star` = `1` e `Sun` = `2`. `Heart` e `Star` continuam a ser transitivas. A etiqueta `Sun` anexada à `Role2` não é marcada como transitiva porque não é uma etiqueta de sessão. Sessões futuras não herdam esta etiqueta. 

![\[Assumir a segunda função em uma cadeia de funções\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/session-tags-chaining-role2.png)


Execute essa segunda solicitação usando o seguinte comando da AWS CLI:

**Example Exemplo de solicitação da CLI AssumeRole**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Role2 \
--role-session-name Session2
```

Use as credenciais da segunda sessão para assumir `Role3`. As tags principais da terceira sessão vêm de quaisquer novas tags de sessão, as tags de sessão transitivas herdadas e as tags de função. As etiquetas `Heart` = `1` e `Star` = `1` na segunda sessão são herdadas da etiqueta de sessão transitiva na primeira sessão. Se você tentar passar a etiqueta de sessão `Sun` = `2`, a operação falhará. A etiqueta de sessão `Star` = 1 herdada substitui a etiqueta de função `Star` = `3`. No encadeamento de funções, o valor de uma etiqueta transitiva substitui a função correspondente ao valor `ResourceTag` após a avaliação da política de confiança de função. Neste exemplo, se `Role3` usar `Star` como `ResourceTag` na política de confiança de função e definir `ResourceTag` como o valor de etiqueta transitiva da sessão de função de chamada. A etiqueta `Lightning` da função também se aplica à terceira sessão e não é definida como transitiva.

![\[Assumir a terceira função em uma cadeia de funções\]](http://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/images/session-tags-chaining-role3.png)


Execute a terceira solicitação usando o seguinte comando da AWS CLI:

**Example Exemplo de solicitação da CLI AssumeRole**  

```
aws sts assume-role \
--role-arn arn:aws:iam::123456789012:role/Role3 \
--role-session-name Session3
```

## Usar tags de sessão para ABAC
<a name="id_session-tags_using-abac"></a>

O controle de acesso baseado em atributo (ABAC) é uma estratégia de autorização que define permissões com base em atributos da etiqueta. 

Se sua empresa usa um provedor de identidade (IdP) baseado em OIDC ou SAML para gerenciar identidades de usuário, você pode configurar sua declaração para passar etiquetas de sessão para a AWS. Por exemplo, com identidades de usuários corporativos, quando seus funcionários fazem federação com a AWS, a AWS aplica seus atributos às respectivas entidades de segurança resultantes. Você pode usar o ABAC para conceder ou não permissões com base nesses atributos. Para obter detalhes, consulte [Tutorial do IAM: Usar etiquetas de sessão SAML para ABAC](tutorial_abac-saml.md).

Para obter mais informações sobre como usar o IAM Identity Center com ABAC, consulte [Attributes for access control](https://docs.aws.amazon.com/singlesignon/latest/userguide/attributesforaccesscontrol.html) (Atributos para o controle de acesso) no *Guia do Usuário do Centro de Identidade do AWS IAM*.

## Visualizar etiquetas da sessão no CloudTrail
<a name="id_session-tags_ctlogs"></a>

Você pode usar AWS CloudTrail para visualizar as solicitações usadas para assumir funções ou federar usuários. O arquivo de log do CloudTrail inclui informações sobre as etiquetas de entidade de segurança para a função assumida ou a sessão de usuário federado. Para obter mais informações, consulte [Registro em log de chamadas de API do IAM e do AWS STS com o AWS CloudTrail](cloudtrail-integration.md).

Por exemplo, vamos supor que você faça uma solicitação AWS STS do `AssumeRoleWithSAML`, passe tags de sessão e defina essas tags como transitivas. Você pode encontrar as seguintes informações em seu log do CloudTrail.

**Example Exemplo de log AssumeRoleWithSAML do CloudTrail**  

```
    "requestParameters": {
        "sAMLAssertionID": "_c0046cEXAMPLEb9d4b8eEXAMPLE2619aEXAMPLE",
        "roleSessionName": "MyRoleSessionName",
        "principalTags": {
            "CostCenter": "987654",
            "Project": "Unicorn"
        },
        "transitiveTagKeys": [
            "CostCenter",
            "Project"
        ],
        "durationSeconds": 3600,
        "roleArn": "arn:aws:iam::123456789012:role/SAMLTestRoleShibboleth",
        "principalArn": "arn:aws:iam::123456789012:saml-provider/Shibboleth"
    },
```

Você pode visualizar os logs do CloudTrail a seguir para exibir eventos que usam etiquetas de sessão.
+ [Exemplo de evento de API de encadeamento de funções do AWS STS no arquivo de log do CloudTrail](cloudtrail-integration.md#stscloudtrailexample-assumerole)
+ [Exemplo de evento de API SAML do AWS STS no arquivo de log do CloudTrail](cloudtrail-integration.md#stscloudtrailexample_saml)
+ [Exemplo de evento da API AWS STS do OIDC no arquivo de log do CloudTrail](cloudtrail-integration.md#stscloudtrailexample_web-identity)