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

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

Quais são as condições de atribuição de funções?

O controle de acesso baseado em função do Azure (Azure RBAC) é 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, você pode querer fornecer um gerenciamento de acesso mais refinado ou simplificar o gerenciamento de centenas de atribuições de função.

O Azure ABAC baseia-se no Azure RBAC adicionando 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 à sua atribuição de função para fornecer um controle de acesso mais refinado. Uma condição filtra as permissões concedidas como parte da definição e atribuição de função. Por exemplo, você pode adicionar uma condição que exija que um objeto tenha uma tag específica para ler o objeto. Não é possível negar explicitamente o acesso a recursos específicos usando condições.

Porquê usar condições?

Há três benefícios principais para o 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. Você também pode adicionar condições a ações específicas. Por exemplo, você pode conceder a João acesso de leitura a blobs em sua assinatura somente se os blobs estiverem marcados como Project=Blue.
  • Ajude a reduzir o número de atribuições de função - Cada assinatura do Azure atualmente tem um limite de atribuição de função. Há cenários que exigiriam milhares de atribuições de função. Todas essas atribuições de função teriam de ser geridas. Nesses cenários, você poderia adicionar condições para usar significativamente menos atribuições de função.
  • Use atributos que tenham 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, o estágio de desenvolvimento de software e os níveis de classificação. Os valores desses atributos de recurso são dinâmicos e mudam à medida que os usuários se movem entre equipes e projetos.

Exemplos de cenários para condições

Há vários cenários em que você pode querer adicionar uma condição à sua atribuição de função. Seguem-se alguns exemplos.

  • Acesso de leitura a blobs com a tag Project=Cascade
  • Novos blobs devem incluir a tag Project=Cascade
  • Os blobs existentes devem ser marcados com pelo menos uma chave de projeto ou chave de programa
  • Os blobs existentes devem ser marcados com uma chave Project e valores Cascade, Baker ou Skagit
  • Ler, gravar ou excluir blobs em contêineres chamados blobs-example-container
  • Acesso de leitura a blobs em contêineres chamados blobs-example-container com um caminho de somente leitura
  • Acesso de gravação a blobs em contêineres chamados Contosocorp com um caminho de uploads/contoso
  • Acesso de leitura a blobs com a tag Program=Alpine e um caminho de logs
  • Acesso de leitura a blobs com a tag Project=Baker e o usuário tem um atributo correspondente Project=Baker
  • Acesso de leitura a blobs durante um intervalo de data/hora específico.
  • Escreva o acesso a blobs apenas através de um link privado ou de uma sub-rede específica.

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

Onde podem ser acrescentadas condições?

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

Aqui estão alguns dos atributos de armazenamento de blob que você pode usar em suas condições.

  • Nome da conta
  • Tags de índice de Blob
  • Caminho do blob
  • Prefixo do blob
  • Nome do contentor
  • Nome do escopo de criptografia
  • É a versão atual
  • O namespace hierárquico está habilitado
  • É link privado
  • Instantâneo
  • UTC agora (a data e hora atuais em Tempo Universal Coordenado)
  • ID da versão

Como é uma condição?

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

Diagrama de atribuição de função com uma condição.

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

Diagrama de acesso não é permitido com uma condição.

Eis o aspeto da condição no portal do Azure:

Captura de ecrã do editor de condições no portal do Azure a mostrar a secção de expressão de compilação com valores para etiquetas de índice de blob.

Aqui está 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, consulte Formato e sintaxe da condição de atribuição de função do Azure.

Status dos recursos de condição

A tabela a seguir lista o status dos recursos de condição:

Caraterística Status Date
Usar atributos de ambiente em uma condição GA Abril de 2024
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 atributos de acesso e camadas de desempenho de conta de armazenamento. Para obter mais informações, consulte 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 Novembro de 2023

Condições e Microsoft Entra PIM

Você também pode adicionar condições a atribuições de função qualificadas usando o Microsoft Entra Privileged Identity Management (Microsoft Entra PIM) para recursos do Azure. Com o Microsoft Entra PIM, os usuários finais devem 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 que você não apenas limite o acesso de um usuário a um recurso usando condições refinadas, mas também use o Microsoft Entra PIM para protegê-lo com uma configuração com limite de tempo, fluxo de trabalho de aprovação, trilha de auditoria e assim por diante. Para obter mais informações, consulte Atribuir funções de recurso do Azure no Privileged Identity Management.

Terminologia

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

Termo Definição
controle de acesso baseado em atributos (ABAC) 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 a uma entidade de segurança acesso a um recurso com base em atributos.
Azure ABAC Refere-se à implementação do ABAC para Azure.
condição de atribuição de função Uma verificação adicional que você pode, opcionalmente, adicionar à sua atribuição de função para fornecer um controle de acesso mais refinado.
atributo Neste contexto, um par chave-valor como Project=Blue, onde Project é a chave do atributo e Blue é o valor do atributo. Atributos e tags são sinônimo para fins de controle de acesso.
expressão Uma declaração em uma condição que é avaliada como verdadeira ou falsa. Uma expressão tem o formato do valor do operador><de <atributo><.>

Limites

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

Recurso Limite Notas
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 Privileged Identity Management (PIM) e atributos de segurança personalizados, Principal não aparecerá na origem do atributo ao adicionar uma condição.

Próximos passos