Como utilizar um token de MFA para autenticar o acesso aos meus recursos da AWS por meio da AWS CLI?
Quero usar um token de MFA para autenticar o acesso aos meus recursos da AWS com a AWS Command Line Interface (AWS CLI).
Resolução
É uma prática recomendada proteger sua conta e seus recursos usando um dispositivo de autenticação multifator (MFA). Se você pretende interagir com seus recursos usando a AWS CLI enquanto utiliza um dispositivo com MFA, será necessário criar uma sessão temporária. Se você utilizar um dispositivo de hardware de MFA, o valor será semelhante a GAHT12345678. Se você estiver usando uma MFA virtual, o valor poderá ser encontrado visualizando as credenciais de segurança. É semelhante a arn:aws:iam::123456789012:mfa/user. Para obter mais informações, consulte Verificação do status da MFA.
Importante:
- O suporte para chaves de segurança está disponível somente com o Console de Gerenciamento da AWS. Para obter mais informações, consulte Habilitar uma chave de segurança FIDO (console). Como solução alternativa, você pode usar um dispositivo com MFA virtual. Para obter mais informações, consulte Habilitar e gerenciar dispositivos MFA virtuais (AWS CLI ou API da AWS).
- Todos os usuários do IAM devem ter permissões suficientes para criar, visualizar e desativar dispositivos de MFA atribuídos a seus usuários. Eles também devem ter um dispositivo MDA ligado e atribuído ao usuário antes de começar.
- Se você receber erros ao executar comandos da AWS CLI, confirme se está usando a versão mais recente da AWS CLI .
Execute o comando sts get-session-token da AWS CLI, substituindo as variáveis por informações de sua conta, recursos e dispositivo MFA:
$ aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token
Você receberá uma saída com credenciais temporárias e um horário de validade (por padrão, 12 horas) semelhante a este exemplo:
{ "Credentials": { "SecretAccessKey": "secret-access-key", "SessionToken": "temporary-session-token", "Expiration": "expiration-date-time", "AccessKeyId": "access-key-id" } }
Observação: você pode especificar uma validade (em segundos) usando a opção --duration-seconds no comando sts get-session-token, em que o valor pode variar de 900 segundos (15 minutos) a 129.600 segundos (36 horas). Caso esteja usando as credenciais do usuário raiz, o intervalo do valor será de 900 segundos (15 minutos) a 3600 segundos (1 hora).
Usar credenciais temporárias com variáveis de ambiente
Você pode usar credenciais temporárias exportando seus valores para variáveis de ambiente usando os comandos a seguir.
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
Se você definir as variáveis de ambiente, não se esqueça de desconfigurá-las antes de fazer a chamada get-session-token novamente usando esses comandos.
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 necessitam de autenticação MFA. Para fazer isso, edite o arquivo credencials (credenciais) na pasta .aws no diretório inicial do usuário para adicionar uma nova configuração de perfil para emitir comandos autenticados por MFA. Veja este 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 exporte os valores retornados para as variáveis de ambiente ou para a configuração do perfil.
Dica: execute um script ou um trabalho cron em segundo plano que verifica a validade da saída do comando get-session-token e solicita a nova autenticação.
Se a AWS CLI for configurada usando o comando configure (configurar), haverá uma configuração padrão com credenciais de usuário permanentes do AWS Identity and Access Management (IAM). Esse usuário do IAM pode usar comandos que não necessitam de autenticação MFA.
Exemplo de configuração:
.aws/credenciais
[default] aws_access_key_id = example-access-Key-for-an-IAM-user aws_secret_access_key = example-secret-access-key-for-IAM-user
Observação: não é possível usar o parâmetro mfa_serial com credenciais permanentes do IAM.
Se você usar perfis para autenticar comandos usando a AWS CLI, especifique a opção --profile seguida pelo nome do perfil para verificar se as chamadas são autenticadas usando MFA.
Por exemplo, esse comando usa as credenciais de perfil padrão e não é autenticado com MFA.
$ aws s3 ls
Importante: confirme que entendeu a prioridade de credenciais para verificar se as credenciais corretas são usadas ao fazer chamadas de API. Isso pode ser feito usando o comando GetCallerIdentity.
$ aws s3 ls --profile mfa
Você também pode exigir que um usuário autentique usando MFA para executar ações de API específicas com as condições aws:MultiFactorAuthPresent ou aws:MultiFactorAuthAge em uma política do IAM.
Informações relacionadas
Habilitar dispositivos de MFA para usuários na AWS
Dispositivo com autenticação multifator (MFA) perdido ou inutilizável
Vídeos relacionados

Conteúdo relevante
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 meses
- AWS OFICIALAtualizada há 5 meses
- AWS OFICIALAtualizada há um ano