O que é o ABAC do Azure (controle de acesso baseado em atributo do Azure)?

O controle de acesso baseado em atributo (ABAC) é um sistema de autorização que define o acesso baseado em atributos associados a entidades de segurança, recursos e ao ambiente de uma solicitação de acesso. Com o ABAC, você pode conceder acesso de entidade de segurança a um recurso com base em atributos. O ABAC do Azure refere-se à implementação do ABAC para Azure.

O que são condições de atribuição de função?

O RBAC (controle de acesso baseado em função) do Azure é um sistema de autorização que ajuda você a gerenciar quem tem acesso aos recursos do Azure, o que eles podem fazer com esses recursos e a quais áreas eles têm acesso. Na maioria dos casos, o RBAC do Azure fornecerá o gerenciamento de acesso necessário usando definições de função e atribuições de função. No entanto, em alguns casos, o ideal é fornecer um gerenciamento de acesso mais refinado ou simplificar o gerenciamento de centenas de atribuições de função.

O ABAC do Azure baseia-se no RBAC do Azure pela adição de condições de atribuição de função com base em atributos no contexto de ações específicas. Uma condição de atribuição de função é uma verificação adicional que você pode opcionalmente adicionar à atribuição de função para fornecer controle de acesso mais refinado. Uma condição filtra as permissões concedidas como parte da definição de função e da atribuição de função. Por exemplo, você pode adicionar uma condição que exige que um objeto tenha uma marca específica para ler o objeto. Não é possível negar explicitamente o acesso a recursos específicos usando condições.

Por que usar condições?

Há três benefícios principais do uso de condições de atribuição de função:

  • Fornecer um controle de acesso mais refinado: uma atribuição de função usa uma definição de função com ações e ações de dados para conceder permissões de entidade de segurança. Você pode escrever condições para filtrar essas permissões para um controle de acesso mais refinado. Adicione também condições a ações específicas. Por exemplo, você poderá permitir a Júlio o acesso de leitura a blobs na sua assinatura somente se os blobs forem marcados como Project=Blue.
  • Ajudar a reduzir o número de atribuições de função – cada assinatura do Azure atualmente tem um limite de atribuições de função. Há cenários que exigem milhares atribuições de função. Todas essas atribuições de função precisam ser gerenciadas. Nesses cenários, você pode adicionar condições para usar significativamente menos atribuições de função.
  • Usar atributos que têm significado comercial específico: as condições permitem que você use atributos que têm significado comercial específico para você no controle de acesso. Alguns exemplos de atributos são o nome do projeto, a fase de desenvolvimento de software e os níveis de classificação. Os valores desses atributos de recurso são dinâmicos e mudam conforme os usuários passam pelas equipes e pelos projetos.

Exemplos de cenários para migração

Há vários cenários em que o ideal é adicionar uma condição à atribuição de função. Veja alguns exemplos.

  • Acesso de leitura aos blobs com a marca Project=Cascade
  • Os novos blobs precisam incluir a marca Project=Cascade
  • Os blobs existentes precisam ser marcados com, pelo menos, uma chave Project ou uma chave Program
  • Os blobs existentes precisam ser marcados com uma chave Project e os valores Cascade, Baker ou Skagit
  • Ler, gravar ou excluir blobs em contêineres chamados blobs-example-container
  • Acesso de leitura aos blobs em contêineres chamados blobs-example-container com um caminho igual a readonly
  • Acesso de gravação aos blobs em contêineres chamados Contosocorp com um caminho igual a uploads/contoso
  • Acesso de leitura aos blobs com a marca Program=Alpine e um caminho de logs
  • Acesso de leitura a blobs com a marca Project=Baker e o usuário tem um atributo correspondente Project=Ela
  • Acesso de leitura aos blobs durante um intervalo específico de data/hora.
  • Acesso de gravação aos blobs somente por meio de um link privado ou a partir de uma sub-rede específica.

Para obter mais informações sobre como criar esses exemplos, confira Exemplo de condições de atribuição de função do Azure para Armazenamento de Blobs.

Em que local as condições podem ser adicionadas?

Atualmente, as condições podem ser adicionadas a atribuições de função personalizada ou internas que tenham ações de dados de armazenamento de fila ou de armazenamento de blobs. As condições são adicionadas no mesmo escopo da atribuição de função. Assim como as atribuições de função, você precisa ter permissões Microsoft.Authorization/roleAssignments/write para adicionar uma condição.

Estes são alguns dos atributos de armazenamento de blob que você pode usar nas condições.

  • Nome da conta
  • Marcas de índice do blob
  • Caminho do Blob
  • Prefixo do blob
  • Nome do contêiner
  • Nome do escopo de criptografia
  • É a versão atual
  • Está habilitado para namespace hierárquico
  • É um link privado
  • Instantâneo
  • UTC agora (a data e a hora atuais no Tempo Universal Coordenado)
  • ID da versão

Qual é a aparência de uma condição?

Você pode adicionar condições a atribuições de função novas ou existentes. Esta é a função Leitor de Dados do Blob de Armazenamento que foi atribuída a um usuário chamado Carlos em um escopo do grupo de recursos. Também foi adicionada uma condição que só permite o acesso de leitura aos blobs com a marca Project=Cascade.

Diagram of role assignment with a condition.

Se Carlos tentar ler um blob sem a marca Project=Cascade, o acesso não será permitido.

Diagram of access is not allowed with a condition.

Veja a aparência da condição no portal do Azure:

Screenshot of condition editor in Azure portal showing build expression section with values for blob index tags.

Veja a aparência da condição no código:

(
    (
        !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'}
        AND NOT
        SubOperationMatches{'Blob.List'})
    )
    OR
    (
        @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEqualsIgnoreCase 'Cascade'
    )
)

Para obter mais informações sobre o formato das condições, confira Formato e sintaxe da condição de atribuição de função do Azure.

Status dos recursos de condição

Alguns recursos de condições ainda estão em versão prévia. A seguinte tabela lista o status dos recursos de condição:

Recurso Status Data
Usar atributos de ambiente em uma condição Visualização Abril de 2022
Adicionar condições usando o editor de condições no portal do Azure GA Outubro de 2022
Adicionar condições usando o Azure PowerShell, a CLI do Azure ou a API REST GA Outubro de 2022
Use atributos de recurso e solicitação para combinações específicas de recursos de armazenamento do Azure, tipos de atributo de acesso e níveis de desempenho da conta de armazenamento. Para saber mais, confira Status dos recursos de condição no Armazenamento do Azure. GA Outubro de 2022
Usar atributos de segurança personalizados em uma entidade de segurança em uma condição GA novembrod e 2023

Condições e o Microsoft Entra PIM

Também é possível adicionar condições para atribuições de função qualificadas usando o Microsoft Entra PIM (Privileged Identity Management) para recursos do Azure. Com o Microsoft Entra PIM, os usuários finais precisam ativar uma atribuição de função qualificada para obter permissão para executar determinadas ações. O uso de condições no Microsoft Entra PIM permite não apenas limitar o acesso de um usuário a um recurso usando condições refinadas, mas também usar o Microsoft Entra PIM para protegê-lo com uma configuração de tempo limitado, fluxo de trabalho de aprovação, trilha de auditoria e assim por diante. Para obter mais informações, confira Atribuir funções de recursos do Azure no Privileged Identity Management.

Terminologia

Para entender melhor o RBAC e o ABAC do Azure, consulte a lista de termos a seguir.

Termo Definição
ABAC (controle de acesso baseado em atributo) Um sistema de autorização que define o acesso com base em atributos associados a entidades de segurança, recursos e ambiente. Com o ABAC, você pode conceder acesso de entidade de segurança a um recurso com base em atributos.
ABAC do Azure Refere-se à implementação do ABAC do Azure.
condição de atribuição de função Uma verificação adicional que você pode adicionar opcionalmente à sua atribuição de função para fornecer controle de acesso mais refinado.
Atributo Nesse contexto, um par chave-valor, como Project=Blue, em que Project é a chave de atributo e Blue é o valor do atributo. Atributos e marcas são sinônimos para fins de controle de acesso.
expressão Uma instrução em uma condição que é avaliada como true ou false. Uma expressão tem o formato <atributo><operador><valor>.

Limites

Aqui estão alguns dos limites para as condições.

Recurso Limite Observações
Número de expressões por condição usando o editor visual 5 Você pode adicionar mais de cinco expressões usando o editor de código

Problemas conhecidos

Aqui estão os problemas conhecidos com condições:

  • Se você estiver usando o Microsoft Entra PIM (Privileged Identity Management) e atributos de segurança personalizados, a entidade de segurança não aparecerá na Origem do atributo ao adicionar uma condição.

Próximas etapas