IAM ou Identity and Access Management é o serviço AWS responsável por gerenciar tudo que se diz respeito a segurança dos demais serviços AWS.

É através do IAM que novos usuários vinculados a uma conta são criados, assim como é dado o acesso aos recursos necessários para que esses usuários executem seu trabalho.

Em resumo, podemos dizer que o IAM controla usuários (Users), grupos (Groups), funções (Roles) e políticas de acesso (Policies).

User é uma conta criada para que uma pessoa acesse o console da AWS com as permissões definidas em uma ou mais políticas de acesso.

Groups são agrupamentos lógicos de usuários, que tem como finalidade facilitar o gerenciamento das políticas de acesso de maneira compartilhada para múltiplos usuários.

Roles são basicamente agrupamentos de políticas de acesso que deverão ser utilizadas por máquinas ou serviços.

Policies são regras de acesso escritas em JSON que podem ser utilizadas por Users, Groups ou Roles. A AWS oferece uma série de políticas prontas (conhecidas como Managed Policies ou Políticas Gerenciadas) que podem ser utilizadas para dar permissões de acesso ou para servir de base para a criação de políticas customizadas.

Diferente da grande maioria de serviços da AWS, o IAM é um serviço Global, ou seja, não está vinculado a nenhuma Região da AWS. Portanto uma política criada no IAM estará disponível para ser consumida por recursos de todas as regiões da AWS.

Melhores Práticas de Segurança na AWS

1 – É de extrema importância que a conta Root (Aquele usuário que é criado automaticamente ao cadastrar uma nova conta no console AWS) nunca seja utilizada para gerenciar recursos ou serviços. Como melhor prática, é indicado que a conta Root seja utilizada apenas uma vez para criar um Usuário Administrador no IAM. Após a criação desse usuário, a conta root deve ser guardada a sete chaves e os demais acessos ao console devem ser feitos através desse novo usuário.

2 – Uma pessoa deve ter somente um único usuário IAM. É má prática criar múltiplos usuários para a mesma pessoa. Caso essa pessoa já tenha um usuário IAM e precise de mais permissões de acesso, as políticas de acesso necessárias devem ser vinculadas a esse usuário ou ao grupo que ele pertence (caso seja viável).

3 – Cada Serviço ou Máquina deve ter único IAM Role, então se a sua infraestrutura utiliza dois servidores EC2 que devem consumir um bucket S3, por exemplo, cada uma das máquinas EC2 deverão ter seu próprio Role.

4 – As credenciais de acesso de um usuário nunca deverão ser compartilhadas. Caso uma segunda pessoa precise ter acesso ao console AWS, um novo usuário deverá ser criado para essa pessoa.

5 – Nunca deve-se salvar credenciais IAM em código

6 – Sempre que possível, ative o MFA (Multi Factor Authentication) principalmente para as contas Root e Administradoras.

7 – É uma boa prática manter sempre o mínimo de permissão possível para que um usuário, grupo ou função (role) efetue seu trabalho. Isso é conhecido como Least Privilege Principle ou Princípio do Privilégio Mínimo. Ex: Se um usuário necessita de permissão de envio de arquivos em um Bucket S3 específico, o administrador deverá vincular políticas que permitam SOMENTE que esse usuário envie arquivos a esse bucket específico, ou seja, ele não deverá ter permissão para excluir arquivos e nem para enviar de arquivos para outros buckets.

Conclusão

Um bom entendimento de como funcionam as políticas de acesso dos recursos da AWS não somente simplificam muito o trabalho dos administradores como diminuem consideravelmente os riscos de perda de informação ou de controle sobre um ambiente cloud.