Noções básicas sobre as atribuições de função 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 entidade 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:

  • A entidade de segurança ou quem recebeu a atribuição de função.
  • A função que foi atribuída a eles.
  • O escopo em que a função é atribuída.
  • O nome da atribuição de função e uma descrição que ajuda você a explicar por que a função foi atribuída.

Por exemplo, é possível usar o Azure RBAC para atribuir funções como:

  • O usuário Sara 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.

Veja a seguir um exemplo das propriedades em uma atribuição de função quando exibida usando 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
}

Veja a seguir um exemplo das propriedades em uma atribuição de função quando exibida 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 que significam as propriedades da atribuição de função.

Propriedade Descrição
RoleAssignmentName
name
O nome da atribuição de função, que é um GUID (identificador global exclusivo).
RoleAssignmentId
id
A ID exclusiva da atribuição de função, que inclui o nome.
Scope
scope
O identificador de recurso do Azure que está dentro do escopo da atribuição de função.
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 a entidade representa. Os valores válidos incluem User, Group e ServicePrincipal.
DisplayName Em atribuições de função para usuários, o nome de exibição do usuário.
SignInName
principalName
O UPN (nome exclusivo da entidade de segurança) 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
Instrução de condição criada usando uma ou mais ações de atributos e definição de função.
ConditionVersion
conditionVersion
O número de versão da condição. O padrão é 2.0 e é a única versão com suporte.
CanDelegate
canDelegate
Não implementado.

Escopo

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

Dica

Use o menor escopo necessário para atender aos seus requisitos.

Por exemplo, se você precisar conceder um acesso de identidade gerenciada a uma só 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 grupo de recursos ou no escopo da assinatura.

Para obter mais informações sobre escopo, confira Noções básicas de escopo.

Função para 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 no 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. Ao criar uma atribuição de função, algumas ferramentas exigem que você use a ID de definição de função, enquanto outras ferramentas permitem que você forneça o nome da função.

Para saber mais sobre definições de função, confira Noções básicas sobre definições de função.

Principal

As entidades de segurança incluem usuários, grupos de segurança, identidades gerenciadas, identidades de carga de trabalho e entidades de serviço. As entidades de segurança são criadas e gerenciadas em seu locatário do Microsoft Entra. É possível atribuir uma função a uma entidade de segurança. Use a ID do objeto Microsoft Entra ID 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 Bicep ou outra tecnologia de IaC (infraestrutura como código), você especifica o tipo de entidade de segurança. Os tipos de entidade de segurança incluem Usuário, Grupo e Entidade de Serviço. É importante especificar o tipo de entidade de segurança correto. Caso contrário, você pode receber erros de implantação intermitentes, especialmente ao trabalhar com entidades de serviço e identidades gerenciadas.

Nome

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

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

Dica

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

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

Comportamento de exclusão de recursos

Quando você exclui um usuário, grupo, entidade de serviço ou identidade gerenciada do Microsoft Entra ID, é uma boa prática excluir também as atribuições de função relacionadas a ele. Elas não são excluídas automaticamente. Todas as atribuições de função que se referem a uma ID de entidade de segurança excluída 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 tem maior probabilidade de ocorrer de ocorrer ao usar o Bicep ou um modelo do ARM (modelo do Azure Resource Manager) para implantar as atribuições de função, pois é necessário definir explicitamente o nome da atribuição de função quando você usar essas ferramentas. Para contornar esse comportamento, você deve remover a atribuição de função antiga antes de recriá-la ou certificar-se de usar um nome exclusivo ao implantar uma nova atribuição de função.

Descrição

É possível 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 atribuições de função. Forneça uma breve justificativa do motivo pelo qual a entidade de segurança precisa da função atribuída. Quando alguém audita as atribuições de função, as descrições podem ajudar a entender por qual motivo elas foram criadas e se ainda são aplicáveis.

Condições

Algumas funções dão suporte a 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.

Por exemplo, é possível adicionar uma condição que exige que um objeto tenha uma marca específica para ler o objeto.

Normalmente, você cria condições usando um editor de condições visuais, mas veja aqui 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'))

Essa condição permite que os usuários leiam blobs com uma chave de marca de índice de blob de Projeto e um valor de Cascata.

Para saber mais sobre as condições, confira O que é o Azure ABAC (controle de acesso baseado em atributo)?

Próximas etapas