Definir permissões com base em atributos com autorização ABAC - AWS Identity and Access Management

Definir permissões com base em atributos com autorização ABAC

Controle de acesso por atributo (ABAC) é uma estratégia de autorização que define permissões com base em atributos. A AWS chama esses atributos de tags. Você pode anexar tags a recursos do IAM, incluindo entidades do IAM (usuários ou perfis do IAM) e a recursos da AWS. É possível criar uma única política de ABAC ou um pequeno conjunto de políticas para suas entidades do IAM. Você pode criar políticas de ABAC que permitem operações quando a tag da entidade principal corresponde à tag de recurso. O sistema de atributos do ABAC que fornece tanto contexto de usuário de nível alto quanto controle de acesso granular. Como o ABAC é baseado em atributo, ele pode realizar a autorização dinâmica de dados ou aplicações, concedendo ou revogando acesso em tempo real. O ABAC é útil em ambientes que estão escalando e em situações em que o gerenciamento de políticas de identidades ou de recursos se tornou um problema.

Por exemplo, é possível criar três perfis do IAM com a chave de tag access-project. Defina o valor da tag do primeiro perfil do IAM como Heart, o segundo como Star e o terceiro como Lightning. Você então pode usar uma única política que permita acesso quando o perfil do IAM e o recurso da AWS tiverem uma tag access-project. Para obter um tutorial detalhado que demonstra como usar o ABAC na AWS, consulte Tutorial do IAM: Definir permissões para acessar recursos da AWS com base em etiquetas. Para saber mais sobre os serviços compatíveis com ABAC, consulte Serviços da AWS que funcionam com o IAM.

Esse diagrama mostra que as tags aplicadas a uma entidade principal devem corresponder às tags aplicadas a um recurso para que o usuário tenha permissões de acesso ao recurso. As tags devem ser aplicadas a grupos de recursos, usuários individuais, recursos individuais e grupos do IAM.

Comparação do ABAC com o modelo RBAC tradicional

O modelo de autorização tradicional usado no IAM é o controle de acesso por perfil (RBAC). O RBAC define permissões com base no cargo ou no perfil de uma pessoa, o que é diferente de um perfil do IAM. O IAM inclui políticas gerenciadas para funções de trabalho que alinham as permissões para uma função de trabalho em um modelo de RBAC.

No IAM, você implementa o RBAC criando diferentes políticas para diferentes funções de trabalho. Em seguida, você anexa as políticas às identidades (usuários, grupos ou perfis do IAM). Como prática recomendada, conceda as permissões mínimas necessárias para o perfil de trabalho. Isso resulta em acesso com privilégio mínimo. Cada política de trabalho lista os recursos específicos que as identidades que têm essa política atribuída a elas podem acessar. A desvantagem de usar o modelo RBAC tradicional é que, quando você ou seus usuários adicionam novos recursos ao ambiente, é necessário atualizar as políticas para permitir o acesso a esses recursos.

Por exemplo, vamos supor que você tenha três projetos, chamados Heart, Star e Lightning, nos quais seus funcionários trabalham. Você cria uma função do IAM para cada projeto. Depois, você anexa políticas a cada perfil do IAM para definir os recursos que qualquer pessoa com permissão para assumir esse perfil pode acessar. Se um funcionário mudar de cargo na sua empresa, você atribuirá a ele outra função do IAM. Você pode atribuir mais de um perfil do IAM a pessoas ou a programas. No entanto, o projeto Star pode exigir recursos adicionais, como um novo contêiner do Amazon EC2. Nesse caso, é necessário atualizar a política anexada ao perfil do IAM Star para especificar o novo recurso de contêiner. Caso contrário, os membros do projeto Star não terão permissão para acessar o novo contêiner.

Esse diagrama ilustra que o controle de acesso baseado em perfil exige que cada identidade seja atribuída a uma política baseada em cargo específica para acessar recursos diferentes.
O ABAC oferece as seguintes vantagens em relação ao modelo de RBAC tradicional:
  • As permissões de ABAC são dimensionadas com inovação. Não é mais necessário que um administrador atualize as políticas existentes para permitir o acesso a novos recursos. Por exemplo, vamos supor que você tenha criado sua estratégia de ABAC com a tag access-project. Um desenvolvedor usa o perfil do IAM com a tag access-project = Heart. Quando as pessoas no projeto Heart precisarem de recursos adicionais do Amazon EC2, o desenvolvedor poderá criar novas instâncias do Amazon EC2 com a etiqueta access-project = Heart. Depois disso, qualquer pessoa no projeto Heart pode iniciar e interromper essas instâncias porque seus valores de tag são correspondentes.

  • O ABAC exige menos políticas. Como não é necessário criar políticas diferentes para funções de trabalho diferentes, você cria menos políticas. Essas políticas são mais fáceis de gerenciar.

  • Usando o ABAC, as equipes podem responder de modo dinâmico a mudança e crescimento. Como as permissões para novos recursos são concedidas automaticamente com base em atributos, você não precisa atribuir políticas às identidades manualmente. Por exemplo, se a empresa já oferece suporte aos projetos Star e Heart que usam o ABAC, é fácil adicionar um novo projeto Lightning. Um administrador do IAM cria um novo perfil do IAM com a tag access-project = Lightning. Não é necessário alterar a política para oferecer suporte a um novo projeto. Qualquer pessoa com permissões para assumir o perfil do IAM pode criar e visualizar instâncias marcadas com access-project = Lightning. Outro cenário é quando um membro da equipe muda do projeto Heart para o projeto Lightning. Para fornecer aos membros da equipe acesso ao projeto Lightning, o administrador do IAM atribui a eles outro perfil do IAM. Não é necessário alterar as políticas de permissões.

  • Permissões granulares são possíveis usando ABAC. Ao criar políticas, faz parte das melhores práticas conceder privilégio mínimo. Usando o RBAC tradicional, você escreve uma política que permite o acesso a recursos específicos. Porém, quando você usa o ABAC, pode permitir ações em todos os recursos se a tag de recurso corresponder à tag da entidade principal.

  • Use atributos de funcionário do seu diretório corporativo com ABAC. Você pode configurar seu provedor SAML ou OIDC para passar tags de sessão para o IAM. Quando seus funcionários formam uma federação na AWS, o IAM aplica os atributos desses funcionários à entidade principal. Você pode usar o ABAC para conceder ou não permissões com base nesses atributos.

Para obter um tutorial detalhado que demonstra como usar o ABAC na AWS, consulte Tutorial do IAM: Definir permissões para acessar recursos da AWS com base em etiquetas.