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 leitura a todos os recursos do 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 da entidade de segurança que tem a função atribuída. |
ObjectType principalType |
O tipo de objeto do Microsoft Entra que a entidade de segurança 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 no seu locatário do Microsoft Entra. É possível atribuir uma função a uma entidade de segurança. Use a ID do objeto do Microsoft Entra ID para identificar a entidade de segurança à 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 precisam ser exclusivos no locatário do Microsoft Entra, mesmo que o escopo da atribuição de função seja mais restritivo.
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)?