AWS na prática | IAM ( Identity and Access Management)

AWS na prática | IAM ( Identity and Access Management)

No artigo anterior desta série falamos sobre o modelo de responsabilidade compartilhada, agora vamos falar sobre o serviço IAM ( Identity and Access Management).

IAM é o serviço que permite controlar acesso a serviços e recursos da AWS. Com o IAM você pode gerenciar permissões de forma granular, permitindo acesso somente ao que é necessário.

O IAM trabalha com 3 tipos de entidades:

  • Usuários
  • Grupos
  • Policies

Usuário é um login de acesso, que pode ser atrelado a uma pessoa ou a um sistema. Você pode criar usuários tanto para acesso programático, como para acesso via console web. Acesso programático é para casos em que você utiliza AccessKey e Secret Key, via API, CLI, SDK, dentre outros modos.

Um grupo é um conjunto de usuários, com permissões atribuídas a ele. Todos os usuários neste grupo terão as permissões concedidas ao respectivo grupo. Por exemplo, você pode ter um grupo chamado Admins, que contenham todos os usuários com permissão administrativa em sua conta. Se, em algum momento, um desses usuários não exercer mais essa função, basta removê-lo deste grupo.

O objetivo dos grupos é facilitar o gerenciamento de permissões. Uma boa prática é sempre conceder permissões para grupos, nunca para usuários.

Policies, ou permissões, são as regras de acesso aos recursos da AWS. As Policies são atreladas a usuários, grupos e roles, que por padrão não têm nenhuma permissão.

Existem algumas Policies pré-definidas pela AWS que você pode usar para determinados propósitos. Porém você também pode, e é aconselhável, que você crie suas próprias policies, e que estas sejam o mais restritivo possível.

E as Roles?

As roles do IAM permitem que você delegue acesso aos usuários e serviços que normalmente não têm acesso aos recursos da AWS. As roles podem ser atribuídas a usuários e também a serviços da AWS, como EC2 e RDS.

As roles possibilitam que você defina um conjunto de permissões e, então, permita que usuários autenticados ou instâncias do EC2 assumam essas permissões, obtendo acesso temporário aos recursos que você determinar.

As roles ajudam em situações em que você precisa conceder acesso temporário a determinados recursos. Também são úteis para que você não precise criar chaves para instâncias, onde estas ficariam armazenadas dentro do sistema operacional.

Você pode, por exemplo, definir uma Role em que um determinado pool de instâncias tenham acesso read-only em um determinado bucket do S3. Você consegue fazer isso sem precisar armazenar credenciais dentro do sistema operacional ou dentro do seu código.

Boas práticas de segurança envolvendo o IAM

  • NUNCA use a conta root!
  • Crie usuários individuais, nada de usuários compartilhados!
  • Use o conceito de menor privilégio
  • Conceda permissões para grupos, não usuários.
  • Configure uma política de senhas.
  • Habilite MFA em todas as contas administrativas
  • Para aplicações que rodam em EC2, use Roles.
  • Rotacione suas credenciais regularmente.
  • Remova credenciais desnecessárias.
  • Use o CloudTrail para manter um histórico de atividades em sua conta AWS.

Para todos que já usam a AWS, recomendo fortemente que leiam o whitepaper AWS security best practices