Fala galera, bem demais? Espero que sempre!
Muitos profissionais de TI que são responsáveis por gerenciamento de recursos na AWS fazem uso de linha de comando para tal a fim de facilitar e agilizar o dia a dia e para isso utilizamos o AWS CLI, interface de linha de comando criado pela AWS.
Na configuração tradicional do AWS CLI, são gerados dois arquivos no diretório do usuário logado, sendo “config” e “credentials”. Estes arquivos ficam em uma pasta oculta de nome “.aws” (Estou configurando em Windows, mas em MAC e Linux é muito parecido). A questão maior é que no arquivo “credentials” ficarão salvos as chave de acesso e chave secreta, onde com tais dados, qualquer um poderá fazer autenticação usando seu usuário, sendo um risco enorme para a segurança do seu ambiente. Para minimizar os riscos temos duas ações a serem feitas, habilitar MFA para o usuário e fazer uso da ferramenta aws-vault para não deixar exposto o arquivo “credentials”.
Legal, agora que entendemos a necessidade, vamos primeiramente mostrar como fazer a configuração tradicional do AWS CLI.
Primeiramente, é necessário fazer download do AWS CLI seguindo o passo a passo equivalente ao seu sistema operacional através deste link. Neste momento, o diretório oculto “.aws” ainda não foi criado.
Agora você precisa gerar a chave de acesso através da console AWS. Para esta configuração acesse a console AWS, pesquise e selecione pelo serviço “IAM”, vá até a aba “Usuários”, selecione o usuário a qual será gerada a chave de acesso e clique na aba “Credenciais de segurança”.

Caso você esteja gerando chave de acesso para usuário logado, como atalho basta clicar no nome da sua conta AWS ao canto superior direito e selecionar opção “Credenciais de segurança”, conforme imagem abaixo:

Navegue com barra de rolagem até o nível “Chaves de acesso” e clique em “Criar chave de acesso”:

Selecione a opção “Interface de linha de comando (CLI)”, aceite os termos e clique em “Next”:

Clique em “Criar chave de acesso” e sua chave será criada, armazene tais credenciais em cofre seguro ou faça download do arquivo csv e salve em repositório seguro e confiável.

Agora que você possui a chave de acesso e já instalou o AWS CLI, abra seu terminal de comando, digite “aws configure” e pressione “enter”. Será solicitado Access key, Secret Key, região padrão e formato padrão de saída, preencha conforme sua necessidade (Utilize chave de acesso e chave secreta gerada anteriormente).
Agora sim você verá os arquivos gerados que mencionei no inicio deste post:

E inclusive, se você abrir o arquivo “credentials” estará estarão expostos suas credenciais de acesso:

Agora que o AWS CLI está configurado, já consigo executar os comandos para gestão de recursos AWS a qual o usuário possui permissão.

Para a execução acima, eu atribui a política “AmazonEC2FullAccess” diretamente para o nosso usuário em questão porém essa não é uma prática recomendada, usei apenas para validação do AWS CLI, sem essa atribuição teríamos o seguinte retorno.

Sendo assim, seguiremos com a configuração do AWS CLI para assumir uma role e a role é quem terá as devidas permissões. Não vou entrar no detalhe de como configurar uma role e como atribuir as permissões para o usuário assumir a mesma pois o foco deste post é a configuração do AWS CLI.
Edite o arquivo “config” na sua pasta “.aws” e crie um novo perfil da seguinte maneira, substituindo “000000000000” pelo id da sua conta e “role_name” pelo nome da role a qual o usuário em questão possui permissão de assumir:
[default]
output = json
region = us-east-1
[profile principal]
role_arn=arn:aws:iam::000000000000:role/role_name
source_profile=default
Agora precisará executar os comandos aws cli parametrizando o perfil criado. Na imagem abaixo verá que sem passar o perfil como parâmetro, será retornado acesso negado pois o usuário já não possui nenhuma permissão direta, apenas via role:

Para configurar o MFA no aws cli, basta editar novamente o arquivo “config” na sua pasta “.aws” e incluir o parâmetro “mfa_serial” sendo seu valor o arn do device criado conforme mostro no post habilitar MFA para o usuário, ficando então da seguinte forma:
[default]
output = json
region = us-east-1
[profile principal]
role_arn=arn:aws:iam::000000000000:role/role_name
source_profile=default
mfa_serial=arn:aws:iam::000000000000:mfa/mfa_device_name
Será solicitado o código MFA ao chamar o comando cli novamente e após inserir, será executado com sucesso:

Beleza pessoal, agora vamos partir para última parte que seria configurar o aws-vault para armazenar as nossas credenciais sem ter que deixar a mesma exposta no arquivo “credentials”.
Para começarmos, vou pedir que faça download e instalação do aws-vault seguindo o passo a passo de acordo com o seu sistema operacional conforme explicado no repositório github do aws-vault, clique aqui.
No meu caso, utilizo windows e instalei utilizando o chocolatey, para instalação do chocolatey clique aqui e siga as instruções.
Agora vamos criar um perfil de autenticação de nome “login” que substituirá o nosso “default” e para isso, primeiro devemos excluir o arquivo “credentials” da pasta “.aws”, na sequência abra um terminal/cmd e execute o comando “aws-vault add login” e insira as credenciais criadas no começo deste post:

Agora que o vault já está configurado, ajuste o seu arquivo config removendo o perfil “default” e substitua a referência do “source_profile” de “default” para “login”, o meu ficou assim:
[profile principal]
role_arn=arn:aws:iam::770409265803:role/role_admin_access
source_profile=login
mfa_serial=arn:aws:iam::770409265803:mfa/usr_admin
[profile login]
Agora com tudo configurado, para iniciar sua sessão, basta executar o comando “aws-vault exec principal –region us-east-1”, inserir o código MFA quando solicitado e então executar os comandos aws cli para gestão de seus recursos.
Note na imagem abaixo que o arquivo “credentials” já não existe e que após iniciar sessão do aws-vault, não é mais necessário passar parâmetro do profile nos comandos aws cli:

Lembrando que ainda tem mais formas para melhorar ainda mais a segurança do seu ambiente, como por exemplo a configuração de SSO para autenticação, veremos isso em breve através de outro post.
É isso galera, espero que tenham gostado.
Abraços e até breve!
Top demais Walisson!
CurtirCurtir