Compreender as atribuições de funções do Azure

As atribuições de função permitem que você conceda a uma entidade de segurança (como um usuário, um grupo, uma identidade gerenciada ou uma entidade de serviço) acesso a um recurso específico do Azure. Este artigo descreve os detalhes das atribuições de função.

Atribuição de função

O acesso aos recursos do Azure é concedido criando uma atribuição de função e o acesso é revogado removendo uma atribuição de função.

Uma atribuição de função tem vários componentes, incluindo:

  • O principal ou a quem é atribuída a função.
  • A função que lhes é atribuída.
  • O escopo no qual a função é atribuída.
  • O nome da atribuição de função e uma descrição que ajuda a explicar por que a função foi atribuída.

Por exemplo, você pode usar o RBAC do Azure para atribuir funções como:

  • O usuário Sally tem acesso de proprietário à conta de armazenamento contoso123 no grupo de recursos ContosoStorage.
  • Todos no grupo Administradores de Nuvem no Microsoft Entra ID têm acesso de leitor a todos os recursos no grupo de recursos ContosoStorage.
  • A identidade gerenciada associada a um aplicativo tem permissão para reiniciar máquinas virtuais na assinatura da Contoso.

A seguir mostra um exemplo das propriedades em uma atribuição de função quando exibidas usando o Azure PowerShell:

{
  "RoleAssignmentName": "00000000-0000-0000-0000-000000000000",
  "RoleAssignmentId": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
  "Scope": "/subscriptions/11111111-1111-1111-1111-111111111111",
  "DisplayName": "User Name",
  "SignInName": "user@contoso.com",
  "RoleDefinitionName": "Contributor",
  "RoleDefinitionId": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "ObjectId": "22222222-2222-2222-2222-222222222222",
  "ObjectType": "User",
  "CanDelegate": false,
  "Description": null,
  "ConditionVersion": null,
  "Condition": null
}

A seguir mostra um exemplo das propriedades em uma atribuição de função quando exibidas usando a CLI do Azure ou a API REST:

{
  "canDelegate": null,
  "condition": null,
  "conditionVersion": null,
  "description": null,
  "id": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
  "name": "00000000-0000-0000-0000-000000000000",
  "principalId": "22222222-2222-2222-2222-222222222222",
  "principalName": "user@contoso.com",
  "principalType": "User",
  "roleDefinitionId": "/subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
  "roleDefinitionName": "Contributor",
  "scope": "/subscriptions/11111111-1111-1111-1111-111111111111",
  "type": "Microsoft.Authorization/roleAssignments"
}

A tabela a seguir descreve o significado das propriedades de atribuição de função.

Propriedade Descrição
RoleAssignmentName
name
O nome da atribuição de função, que é um identificador global exclusivo (GUID).
RoleAssignmentId
id
A ID exclusiva da atribuição de função, que inclui o nome.
Scope
scope
O identificador de recurso do Azure para o qual a atribuição de função tem escopo.
RoleDefinitionId
roleDefinitionId
A ID exclusiva da função.
RoleDefinitionName
roleDefinitionName
O nome da função.
ObjectId
principalId
O identificador de objeto do Microsoft Entra para a entidade de segurança que tem a função atribuída.
ObjectType
principalType
O tipo de objeto Microsoft Entra que o principal representa. Os valores válidos incluem User, Group, e ServicePrincipal.
DisplayName Para atribuições de função para usuários, o nome para exibição do usuário.
SignInName
principalName
O UPN (nome principal exclusivo) do usuário ou o nome do aplicativo associado à entidade de serviço.
Description
description
A descrição da atribuição de função.
Condition
condition
Declaração de condição criada usando uma ou mais ações da definição de função e atributos.
ConditionVersion
conditionVersion
O número da versão da condição. O padrão é 2.0 e é a única versão suportada.
CanDelegate
canDelegate
Não implementado.

Âmbito

Ao criar uma atribuição de função, você precisa especificar o escopo no qual ela é aplicada. O escopo representa o recurso, ou conjunto de recursos, que a entidade de segurança tem permissão para acessar. Você pode definir o escopo de uma atribuição de função para um único recurso, um grupo de recursos, uma assinatura ou um grupo de gerenciamento.

Gorjeta

Use o menor escopo necessário para atender às suas necessidades.

Por exemplo, se você precisar conceder acesso a uma identidade gerenciada a uma única conta de armazenamento, é uma boa prática de segurança criar a atribuição de função no escopo da conta de armazenamento, não no escopo do grupo de recursos ou da assinatura.

Para obter mais informações sobre escopo, consulte Entender escopo.

Função a atribuir

Uma atribuição de função está associada a uma definição de função. A definição de função especifica as permissões que a entidade de segurança deve ter dentro do escopo da atribuição de função.

Você pode atribuir uma definição de função interna ou uma definição de função personalizada. Quando você cria uma atribuição de função, algumas ferramentas exigem que você use o ID de definição de função, enquanto outras ferramentas permitem que você forneça o nome da função.

Para obter mais informações sobre definições de função, consulte Compreender definições de função.

Principal

As entidades incluem usuários, grupos de segurança, identidades gerenciadas, identidades de carga de trabalho e entidades de serviço. As entidades são criadas e gerenciadas em seu locatário do Microsoft Entra. Você pode atribuir uma função a qualquer entidade de segurança. Use a ID do objeto ID do Microsoft Entra para identificar a entidade à qual você deseja atribuir a função.

Ao criar uma atribuição de função usando o Azure PowerShell, a CLI do Azure, o Bíceps ou outra tecnologia de infraestrutura como código (IaC), você especifica o tipo principal. Os tipos principais incluem User, Group e ServicePrincipal. É importante especificar o tipo principal correto. Caso contrário, você poderá obter erros de implantação intermitentes, especialmente quando trabalha com entidades de serviço e identidades gerenciadas.

Nome

O nome do recurso de uma atribuição de função deve ser um identificador global exclusivo (GUID).

Os nomes de recursos de atribuição de função devem ser exclusivos dentro do locatário do Microsoft Entra, mesmo que o escopo da atribuição de função seja mais restrito.

Gorjeta

Quando você cria uma atribuição de função usando o portal do Azure, o Azure PowerShell ou a CLI do Azure, o processo de criação dá à atribuição de função um nome exclusivo para você automaticamente.

Se você criar uma atribuição de função usando a tecnologia Bicep ou outra infraestrutura como código (IaC), precisará planejar cuidadosamente como nomear suas atribuições de função. Para obter mais informações, consulte Criar recursos do RBAC do Azure usando o Bicep.

Comportamento de exclusão de recursos

Quando você exclui um usuário, grupo, entidade de serviço ou identidade gerenciada da ID do Microsoft Entra, é uma boa prática excluir todas as atribuições de função. Eles não são excluídos automaticamente. Todas as atribuições de função que se referem a um ID principal excluído tornam-se inválidas.

Se você tentar reutilizar o nome de uma atribuição de função para outra atribuição de função, a implantação falhará. Esse problema é mais provável de ocorrer quando você usa o Bicep ou um modelo do Azure Resource Manager (modelo ARM) para implantar suas atribuições de função, porque você precisa definir explicitamente o nome da atribuição de função quando usa essas ferramentas. Para contornar esse comportamento, você deve remover a atribuição de função antiga antes de recriá-la ou garantir que você use um nome exclusivo quando você implantar uma nova atribuição de função.

Descrição

Você pode adicionar uma descrição de texto a uma atribuição de função. Embora as descrições sejam opcionais, é uma boa prática adicioná-las às suas atribuições de função. Forneça uma breve justificativa para o motivo pelo qual o principal precisa da função atribuída. Quando alguém audita as atribuições de função, as descrições podem ajudar a entender por que elas foram criadas e se ainda são aplicáveis.

Condições

Algumas funções suportam condições de atribuição de funções 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.

Por exemplo, você pode adicionar uma condição que exija que um objeto tenha uma tag específica para o usuário ler o objeto.

Normalmente, você cria condições usando um editor de condições visual, mas aqui está a aparência de uma condição de exemplo 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'))

A condição anterior permite que os usuários leiam blobs com uma chave de tag de índice de blob do Project e um valor de Cascade.

Para obter mais informações sobre condições, consulte O que é o controle de acesso baseado em atributos do Azure (Azure ABAC)?

Próximos passos