AWS: Podemos habilitar o MFA para acesso à linha de comando?

3

Eu habilitei o MFA para um usuário da AWS e ele funciona quando o usuário faz login no AWS Console. No entanto, este usuário também pode acessar todos os serviços via CLI (por chave de acesso e chave secreta), isso significa que o CLI sempre irá ignorar o MFA, mesmo que esteja habilitado para este usuário?

    
por starchx 05.12.2014 / 02:53

2 respostas

4

Você pode ativar o MFA no acesso à API , mas todos os serviços que usam essas credenciais, incluindo o O CLI precisa usar credenciais de segurança temporárias (ou seja, você faz uma chamada AssumeRole fornecendo seu acesso key, secret e token MFA e retorna chaves de acesso temporário que são válidas enquanto a autenticação do MFA é válida).

Dito isso, geralmente é considerado uma boa prática separar suas contas de "Login" (ou seja, aquelas com as quais você faz login pelo AWS Console) de suas contas "Credenciais de acesso" (ou seja, onde as chaves da API são usadas outro software).

Suas contas de "Login" devem ter o MFA ativado, mas sem credenciais de acesso. Você usa essa conta para criar outros usuários "Credenciais de acesso" que têm acesso limitado apenas aos serviços / funções que você precisa acessar especificamente.

    
por 05.12.2014 / 23:24
3

Adicionando uma nova resposta, pois essa situação mudou um pouco. A CLI pode gerenciar muito isso para você, se você estiver usando funções. Descrito aqui: link

No meu arquivo de credenciais eu tenho:

[my_iam_user]
aws_access_key_id = AKIABLAHBLAHBLAHBLAH
aws_secret_access_key = <blah>
region = us-east-1

[my_admin_role]
role_arn = arn:aws:iam::123456789123:role/my_admin_role
source_profile = my_iam_user
mfa_serial = arn:aws:iam::123456789123:mfa/my_iam_user
region = us-east-1

Observe a entrada mfa_serial . Você pode obter esse valor com os detalhes do usuário no console do AWS IAM. Essa entrada informa à CLI que o MFA é necessário para essa função.

Quando eu chamo aws s3 ls --profile my_admin_role , diz Enter MFA code: , depois de colar o código, ele retorna a listagem.

Observação: eu não encontrei uma maneira de fazer com que o CLI solicitasse o MFA ao chamar um perfil de usuário ( --profile my_iam_user ), somente chamar um perfil de função aciona a solicitação do MFA.

O token do MFA é então transmitido e o perfil do usuário também pode ser usado:

aws sts get-caller-identity --profile my_iam_user
 # {
 # "Account": "123456789123",
 # "UserId": "AIDABLAHBLAHBLAHBLAH",
 # "Arn": "arn:aws:iam::123456789123:user/my_iam_user"
 # }

aws sts get-caller-identity --profile my_admin_role
 # {
 # "Account": "123456789123",
 # "UserId": "AROABLAHBLAHBLAHBLAH:AWS-CLI-session-1234567890",
 # "Arn": "arn:aws:sts::123456789123:assumed-role/my_admin_role/AWS-CLI-session-1234567890"
 # }
    
por 31.01.2017 / 19:39