A segurança dos dados (e recursos) é uma preocupação crucial tanto a nível individual quanto para empresas, especialmente no ambiente em nuvem. E não seria exagero dizer que uma das áreas mais críticas em relação a proteção é o gerenciamento de acessos e identidades - no caso da AWS, feito pelo IAM - pois é por ele que podemos controlar quem ou que tem acesso aos recursos.
Como é melhor prevenir do que remediar, reuni aqui 5 recomendações de boas práticas de segurança para o AWS IAM:
1) Jamais compartilhe o usuário raiz
Nem com a sua conta pessoal, muito menos na empresa em que você estiver trabalhando: nunca, JAMAIS compartilhe a conta raiz (root account)!
Imagine o estrago que alguém mal intencionado pode fazer com acesso a todos os recursos da AWS? Ou ao seu cartão de crédito? Agora imagine o mesmo cenário ocorrendo para uma empresa... É verdadeiramente assustador.
Por isso, é ideal que qualquer outra ação que não necessite de privilégios do usuário raiz - e posso dizer que isso vai ocorrer em raras ocasiões - seja executada por outros usuários do IAM. Em outras palavras, crie um usuário do IAM com as permissões de acesso necessárias a ele.
Por exemplo, as políticas de acesso mais indicadas para associar ao usuário que você vai criar são a AdministratorAccess e PowerUserAccess. É claro que existem outras políticas e você mesmo pode criar as suas, mas já é um bom começo. Com isso, você não vai precisar usar a conta raiz para seus estudos ou seu trabalho.
Dessa forma, você estará seguindo o Princípio do menor privilégio (least privilege principle), que se trata de conceder ao usuário somente aquilo que é necessário para ele executar suas tarefas.
2) Habilite o MFA na sua conta
A autenticação multifator (MFA) é um recurso que solicita ao usuário seguir algumas etapas de autenticação que vão além do simples colocar o usuário e senha e logar.
Para tal, um dispositivo externo gera uma "senha" para liberar esse acesso - pode ser por SMS, e-mail, ou um app de autenticação. Isso adiciona uma camada de segurança extra, mitigando o acesso não autorizado a uma conta.
Na AWS, é muito importante que a sua conta raiz e as outras contas de usuário tenham o MFA habilitado. Você pode usar um virtual MFA device (um app como o Microsoft Authenticator, por exemplo) ou por um U2F (security key externa).

No IAM, há a opção de habilitar o MFA, no painel do usuário:

3) Crie grupos
Uma prática muito recomendada é criar grupos no IAM de acordo com as necessidades específicas de cada função ou departamento de uma empresa, atribuindo a eles as permissões por meio de políticas anexadas.
Por exemplo, você pode criar os grupos de Desenvolvedores, Suporte, DevOps, etc. Com isso, os usuários inseridos nesses grupos herdam as permissões de acesso do grupo. Ou seja, se o usuário é um desenvolvedor, ele deverá ser adicionado ao grupo Desenvolvedores e terá todas as permissões e restrições do grupo.
Além de ser uma boa prática de segurança, essa medida simplifica o gerenciamento de usuários e acessos, e garante também o princípio do menor privilégio.
4) Padronize e mude as senhas periodicamente
Nada de senhas fáceis, eternas e que nunca mudam! Por serem a primeira linha de defesa contra acessos não autorizados, nada melhor do que usar uma senha forte e robusta para assegurar esse nível inicial de segurança.
É interessante que você estabeleça uma política de senhas para os usuários do IAM, tais como:
- Tamanho mínimo das senhas
- Uso de letras maiúsculas, minúsculas e números
- Uso de caracteres especiais
Além disso, você pode implementar a expiração periódica das senhas, permitindo que haja uma rotação das mesmas. No IAM, você pode especificar um período dentre 1 a 1.095 dias para que as senhas de usuário do IAM permaneçam válidas após serem definidas.
5) Monitore as atividades do IAM
Em determinadas ocasiões pode ser interessante rastrear ou identificar alguma atividade do IAM - quem nunca deletou um banco de dados sem querer, não é mesmo? Rsrs...
Na AWS, há um serviço de governança que possibilita realizar a auditoria das chamadas de API, o CloudTrail. Em poucas palavras, ele atua como um "fofoqueiro" que registra e mostra todas as atividades - ou seja, você pode saber quem deletou um Bucket S3, por exemplo.
Com ele, você pode registrar ações dos usuários do IAM. Por padrão, ele captura os eventos de gerenciamento sem custos, armazenando-os por até 90 dias para consultas rápidas.
Uma forma de fazer esse registro é criar uma trilha para capturar Eventos de gerenciamento e armazena-los em um Bucket S3. [Logo colocarei um passo a passo aqui no blog].
Depois de criar a trilha, você pode revisar regularmente os logs no CloudTrail ou ativar o Amazon CloudWatch para definir alarmes baseados em eventos críticos, de modo a garantir que qualquer comportamento suspeito seja imediatamente identificado.
Essas foram algumas dicas básicas de segurança para o AWS IAM.
Bons estudos!