Como uso um token de MFA para autenticar o acesso aos meus recursos da AWS por meio da AWS CLI?

Última atualização: 21/08/2020

Como uso um token de MFA para autenticar o acesso aos meus recursos da AWS por meio da AWS Command Line Interface (AWS CLI)?

Resolução

Proteger sua conta e os recursos associados usando um dispositivo de autenticação multifator (MFA) é uma prática recomendada. Se você planejar interagir com seus recursos usando a AWS CLI enquanto utilizar um dispositivo com MFA, precisará criar uma sessão temporária. Se você usar um dispositivo de hardware de MFA, o valor do ARN será semelhante a GAHT12345678. Se usar um MFA virtual, o valor será semelhante a arn:aws:iam::123456789012:mfa/user. Para obter mais informações, consulte Verificação do status da MFA.

Importante:

Execute o comando sts get-session-token da AWS CLI, substituindo as variáveis pelas informações da conta, dos recursos e do dispositivo com 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 um prazo de validade (em segundos) usando a opção --duration-seconds no comando sts get-session-token. O valor pode variar de 900 segundos (15 minutos) a 129.600 segundos (36 horas). Se estiver usando as credenciais do usuário raiz, o intervalo do valor será de 900 segundos (15 minutos) a 3.600 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 variáveis de ambiente, lembre-se de cancelar suas definições antes de fazer a nova chamada de get-session-token usando os comandos a seguir.

unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset 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. Para isso, edite o arquivo credentials na pasta .aws no diretório base do usuário para adicionar uma nova configuração de perfil que emita 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: considere executar um script ou um trabalho cron em segundo plano que verifique o valor “Expiration” (Validade) na saída do comando get-session-token e, em seguida, solicite uma nova autenticação.

Se a AWS CLI for definida usando o comando configure, haverá uma configuração padrão com credenciais permanentes do usuário do AWS Identity and Access Management (IAM). Esse usuário do IAM pode usar comandos que não exigem autenticação MFA.

Exemplo de configuração:

.aws/credentials

[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: o parâmetro mfa_serial não pode ser usado com credenciais permanentes do IAM.

Se você usar perfis para autenticar comandos por meio da AWS CLI, especifique a opção --profile acompanhada pelo nome do perfil para confirmar que as chamadas são autenticadas usando MFA.

Por exemplo, o comando a seguir usa as credenciais do perfil padrão e não é autenticado por MFA.

$ aws s3 ls

Importante: revise com atenção a precedência de credenciais para confirmar que está usando as credenciais corretas ao fazer chamadas de API.

$ aws s3 ls --profile mfa

Você também pode exigir a autenticação MFA quando um usuário executa ações específicas de API com as condições aws:MultiFactorAuthPresent ou aws:MultiFactorAuthAge na política do IAM.


Este artigo foi útil?


Precisa de ajuda com faturamento ou suporte técnico?