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
É possível 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 Proteja seu login de usuário-raiz com autenticação multifator (MFA) e autenticação multifator da AWS no IAM.
Resolução
Se você receber erros ao executar comandos da AWS CLI, consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Para usar a AWS CLI para se autenticar em recursos da AWS, use a ação de API GetSessionToken para obter credenciais temporárias. As credenciais temporárias são válidas por 12 horas por padrão. Use o parâmetro duration-seconds para configurar a duração temporária da credencial para qualquer período entre 15 minutos e 36 horas.
Observação: o usuário precisa das permissões de IAM apropriadas para usar o GetSessionToken. Para obter mais informações, consulte 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?
ARN do dispositivo MFA
Para obter o nome do recurso da Amazon (ARN) do dispositivo MFA, conclua estas etapas:
- Abra o console do IAM.
- No painel de navegação, escolha Usuários e selecione seu usuário do IAM.
- Na página Resumo, escolha a guia Credenciais de segurança.
- 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. Se não estiverem, você poderá receber uma mensagem de erro semelhante à seguinte:
“An error occurred (AccessDenied) when calling the GetSessionToken operation: MultiFactorAuthentication failed, unable to validate MFA code. Please verify your MFA serial number is valid and associated with this user.”
Para autenticar o dispositivo físico e MFA, o número de série geralmente fica na parte traseira do dispositivo e é 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-outputexport 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-outputset 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_IDunset 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
também é possível 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.
Exemplo de configuração de perfil:
[mfa]aws_access_key_id = example-access-key-as-in-returned-outputaws_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. 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 de perfil seguida pelo nome do perfil. Isso verifica se as chamadas de API usam MFA para se 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?