Como usar a AWS CLI para autenticar o acesso aos recursos da AWS com um token de MFA?

4 minuto de leitura
0

Quero usar um token de autenticação multifator (MFA) com a AWS Command Line Interface (AWS CLI) para autenticar o acesso aos meus recursos da AWS.

Breve descrição

Você pode ativar até oito dispositivos de MFA para cada usuário do AWS Identity and Access Management (AWS IAM).

Observação: a ativação da MFA para o usuário-raiz afeta somente as credenciais do usuário-raiz. Cada identidade do IAM na conta da AWS tem sua própria configuração de MFA.

Para ativar a MFA, consulte Proteger seu login de usuário-raiz com MFA e MFA no IAM.

Resolução

Para usar a AWS CLI para se autenticar em recursos da AWS, use a ação de API GetSessionToken para obter credenciais temporárias.

Observação: se você receber erros ao executar comandos da AWS CLI, consulte Solução de erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

ARN do dispositivo MFA

Para obter o ARN do dispositivo MFA, conclua estas etapas:

  1. Abra o console do IAM.
  2. No painel de navegação, escolha Usuários e, em seguida, seu usuário do IAM.
  3. Na página Resumo, escolha a guia Credenciais de segurança.
  4. Em Dispositivo MFA atribuído, copie o ARN do dispositivo MFA.

Usar a AWS CLI para obter credenciais temporárias

Execute o comando get-session-token:

aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

Exemplo de saída:

{
    "Credentials": {
        "SecretAccessKey": "secret-access-key",
        "SessionToken": "temporary-session-token",
        "Expiration": "expiration-date-time",
        "AccessKeyId": "access-key-id"
    }
}

Importante: verifique se o número de série, o token e o ARN do dispositivo MFA estão corretos, ou você poderá receber uma mensagem de erro semelhante à seguinte:

“Ocorreu um erro (AccessDenied) ao chamar a operação GetSessionToken: Falha em MultiFactorAuthentication, não é possível validar o código de MFA. Verifique se o número de série da MFA é válido e está associado a esse usuário.”

Para autenticar o dispositivo físico e MFA, o número de série geralmente fica na parte traseira do dispositivo e o valor é semelhante a GAHT12345678. Para autenticar o dispositivo virtual de MFA, o valor é semelhante a arn:aws:iam::123456789012:mfa/user.

Observação: a AWS CLI oferece suporte à autenticação de MFA somente com um dispositivo MFA virtual ou físico. Ela não oferece suporte à autenticação de MFA com a chave de segurança FIDO.

Para mais informações, consulte Atribuir dispositivos de MFA na AWS CLI ou na API da AWS.

Usar credenciais temporárias para exportar os valores para variáveis de ambiente

Execute os seguintes comandos no seu sistema operacional (SO):

Linux

export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output
export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output
export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output

Windows

set AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output
set AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output
set AWS_SESSION_TOKEN=example-session-Token-as-in-previous-output

Antes de executar o comando get-session-token novamente, execute os seguintes comandos para remover a definição das variáveis de ambiente:

Linux

unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN

Windows

set AWS_ACCESS_KEY_ID=
set AWS_SECRET_ACCESS_KEY=
set AWS_SESSION_TOKEN=

Usar credenciais temporárias com perfis nomeados

Você também pode usar perfis nomeados para especificar os comandos que exigem autenticação MFA. No arquivo credenciais que está na pasta .aws do diretório inicial do usuário, adicione uma nova configuração de perfil para emitir comandos autenticados por MFA.

Exemplo de configuração de perfil:

[mfa]aws_access_key_id = example-access-key-as-in-returned-output
aws_secret_access_key = example-secret-access-key-as-in-returned-output
aws_session_token = example-session-token-as-in-returned-output

Depois que as credenciais expirarem, execute o comando get-session-token novamente e, em seguida, exporte os valores retornados para as variáveis de ambiente ou para a configuração do perfil.

É uma prática recomendada executar um script ou um cron job em segundo plano que verifique a validade da saída do comando get-session-token. Se o token de MFA expirar, certifique-se de que o script ou o cron job solicite a reautenticação.

Ao usar perfis nomeados para autenticação, especifique a opção —perfil seguida pelo nome do perfil para verificar se as chamadas de API usam a MFA para autenticar.

Informações relacionadas

Como faço para redefinir um dispositivo MFA perdido ou corrompido para meu usuário do IAM ou usuário-raiz da conta da AWS?

Como faço para aplicar a autenticação de MFA para usuários do IAM que usam o Console de Gerenciamento da AWS e a AWS CLI?