Boas práticas de segurança para AWS CLI
Tags: aws, security, cloud, tutorial
Published: 2023-03-10 17:46:41

## Motivação
Alguém já teve problemas de algum russo invadir sua conta AWS e começar a usar recursos ali? Pois eu já tive hehe, e diga-se de passage o susto foi grande, por sorte eu tinha utilizado um cartão de crédito virtual e não me foi cobrado nada, eu tinha uma conta AWS pessoal mesmo, utilizei algumas vezes somente para estudo, porém na época não tinha seguido os conselhos básicos de segurança, tipo o 2FA, IAM etc. Eu acabei seguindo o ensinamento antigo: “É tomando na tampa que a gente aprende”.

Baseado nessa experiência traumática resolvi aplicar pelo menos o básico na próxima conta AWS que eu abri e hoje venho compartilhar um pouco dessa xp aqui. O foco vai ser em acesso programático a recursos AWS, como o AWS CLI ou EB.

## Passos para proteger sua conta dev AWS e rodar comandos CLI localmente com segurança
Aqui acho que vale um disclaimer, esses passos são focados em segurança para contas AWS pessoais, focadas em estudo ou projetos pequenos, para sistemas maiores e mais production ready existe muito mais complexidade envolvida, especialmente na parte do IAM.

Dito isso, esses foram os passos que eu tomei:

### Passo 1 - Proteção básica da sua conta AWS Root

Quando criamos uma conta AWS normalmente estamos criando a conta Root (tipo root do linux mesmo, é o bixao, tem permissão pra fazer tudo, inclusive estourar seu cartão de crédito)

Para proteger a conta root tomei apenas 3 simples cuidados

- Habilitar o 2FA (no caso MFA no settings)
- Cadastrar cartão de crédito virtual (seguro morreu de velho, HUE)
- Não gerar nenhuma access key para acesso programático (maioria do pessoal peca nessa parte)

### Passo 2 - Utilize o IAM de maneira correta

O IAM nada mais é que o serviço AWS utilizado para controlar acessos aos recursos e serviços, ou seja, através de users, roles, policies, etc você controla quem acessa o que e como.

Tendo esse serviço em mente, algumas das opções que temos são:

1. Usar AWS CloudShell, basicamente um shell que roda dentro do browser e já está autenticado, ou seja, não precisa rodar nada localmente e nem instalar nenhum CLI. (tem pouco uso prático mas funciona para alguns casos)
2. Usar AWS IAM Identity Center, uma solução mais voltada para organizações que já possuem algum mecanismo próprio de autenticação (tipo um Single Sign On, Okta, etc), não vou entrar tanto no mérito aqui pois estou mais focado na AWS no caso de estudos / contribuidor individual
3. Usar IAM roles para gerar chaves de acesso temporárias. Com roles podemos pegar um usuário não root e dar a ele acesso temporário a algum recurso, sendo assim, mesmo que alguém obtiver acesso a sua access key não vai conseguir acessar nenhum serviço ou recurso sem a role correta

Pra minha conta acabei optando pela opção 3 e achei esse 
 [blog post](https://jack-vanlightly.com/blog/2018/8/14/aws-security-securing-your-use-of-the-aws-cli-and-automation-tools) bem completo sobre o assunto, onde ele explica de maneira bem didática como executar esse setup, vale a leitura se te interessar.

## Conclusão
Bom, com esse setup acredito ter conseguido um mínimo de segurança para poder estudar serviços AWS ou rodar toy projects.

Aceito sugestões também dos security experts por aí.

É isso, tomem cuidado com os russianos mineradores de bitcoin :)