Seidor
AWS

22 de março de 2024

AWS IAM: Controle de acesso a recursos e serviços AWS

Para esta entrada do blog, continuaremos com a mesma temática da última, a segurança na Amazon Web Services, onde demos vários conselhos para a utilização dos Security Groups da AWS. Neste caso, falaremos de outra ferramenta que a Amazon Web Services coloca à nossa disposição para garantir a segurança da nossa infraestrutura e seu conteúdo. Desta vez, falaremos sobre o AWS IAM (Identity and Access Management), que, como o próprio nome indica, é uma ferramenta para gerenciar o acesso dos usuários aos recursos da Amazon Web Services. E para entender o grande potencial que essa ferramenta possui, devemos conhecer vários conceitos, como usuários, grupos, funções e políticas.

Características dos usuários, grupos e papéis IAM

Os usuários IAM

São objetos da conta que permitem a um usuário individual acessar o ambiente AWS com um conjunto de credenciais. As permissões podem ser aplicadas individualmente a um usuário, mas não é o recomendável, o mais ideal é vincular cada usuário a um grupo IAM, e a esse grupo sim, serão atribuídas as permissões para acessar os recursos e objetos da AWS.

Os grupos IAM

São objetos que permitem gerenciar de maneira eficiente as permissões e o acesso aos seus recursos na AWS. É altamente recomendável o uso de grupos IAM para gerenciar as permissões e necessário no caso de haver um número considerável de usuários com acesso a recursos AWS. Cada grupo abrangerá diferentes usuários com as mesmas permissões, no caso de não serem atribuídas permissões diretamente aos usuários. Usar grupos IAM permite ter tudo bem organizado e economizar tempo, pois no caso de precisar adicionar um novo usuário, a atribuição de permissões para este será questão de segundos, já que você só precisará vinculá-lo ao grupo correspondente. Uma boa prática é criar um grupo para cada departamento (Admins, Developers, etc) já que todos os integrantes de cada grupo deverão exercer tarefas similares dentro do ambiente AWS.

Os papéis IAM

Têm semelhanças com os grupos IAM, embora em vez de fornecer permissões a usuários, os papéis servem para conceder permissões às instâncias assim que são criadas. Dessa forma, as aplicações que rodam em uma instância poderão utilizar essas credenciais para assinar as solicitações, por exemplo, uma aplicação que precise ter acesso a um bucket do S3.

Autenticação Multifator

AWS IAM permite utilizar autenticação multifator (MFA) para adicionar uma camada adicional de proteção. Isso é recomendável para usuários IAM com muitos privilégios. Dessa forma, o usuário, além de inserir seu usuário e senha, deverá realizar uma segunda autenticação. Pode ser gerada por um software ou por um hardware, que você pode conseguir através da AWS.

Políticas IAM

As políticas IAM são um documento onde se enumeram as ações que um usuário, grupo ou função pode realizar sobre os recursos da AWS. A seguir, mencionamos algumas das características das políticas IAM:

  • São arquivos em formato JSON.
  • Por padrão, a permissão está negada (Deny by default)
  • Se houver várias políticas, as mais restritivas são as que prevalecem.
  • A ordem de prioridade é a seguinte:
    • Primeiro Negar Explicitamente
    • Segundo Explicit Allow
    • Terceiro Negado Implicitamente

O campo “Effect” é onde você define se é uma política de permitir ou negar, portanto, são políticas explícitas, conforme indicamos nas características, em caso de negação, prevalecerá sobre qualquer permissão que tenha sido criada.

O campo “Action” é onde você indica a chamada à API para os recursos da AWS. Neste campo, podem ser indicadas várias ações que devem ser separadas por uma vírgula. Também é possível incluir todas as ações possíveis escrevendo *. Por exemplo, se tivermos a seguinte ação, estamos indicando que será possível criar e excluir um bucket no S3:

“Action”:”s3:CreateBucket”,”s3:DeleteBucket”

Com a seguinte ação, sabemos que poderá realizar qualquer ação sobre S3:

“Action”:”s3:*”

No campo “Resource” é indicado sobre qual recurso da AWS a política será aplicada. Neste elemento devem ser indicados vários campos:

arn:partition:service:region:account-id:resource

  • Onde “partition” é onde se encontra o recurso, portanto, será indicado que é na aws.
  • Em “service” será indicado o serviço ao qual se faz menção, como por exemplo ec2, dynamodb ou s3.
  • Para “region” indicaremos a região em que se encontra o recurso. Em alguns casos, não será indicada nenhuma região específica.
  • No caso de “account-id” será mencionado o ID da sua conta AWS, que para alguns serviços também não será necessário preencher.
  • E o último campo é “resource” onde variará dependendo do serviço. Por exemplo, se você está criando uma política para S3, aqui mencionará o bucket ao qual deseja aplicar esta política.

O elemento posterior “Condition” é opcional e é onde serão indicadas as condições que devem ser cumpridas para que a política seja aplicada.

11 práticas recomendadas para um bom uso do serviço IAM

Para finalizar, deixamos as seguintes recomendações da Amazon Web Services:

  1. Criar usuários individuais para cada pessoa que tenha acesso a recursos da AWS.
  2. Gerenciar as permissões através dos grupos.
  3. Conceder as permissões mínimas a cada grupo.
  4. Ativar o AWS CloudTrail para extrair os logs de todas as chamadas à API que foram realizadas.
  5. Configurar uma política de senhas fortes.
  6. Habilitar MFA (Autenticação multifator) para os usuários que tenham altos privilégios.
  7. Usar os papéis IAM para as instâncias de EC2.
  8. Usar papéis IAM para o acesso compartilhado.
  9. Rotacionar as credenciais de segurança com certa regularidade.
  10. Utilizar condições nas políticas para restringir o acesso.
  11. Não utilizar o usuário root.