

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

------