Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O RBAC (controle de acesso baseado em função) do Azure é o sistema de autorização que você usa para gerenciar o acesso aos recursos do Azure. Para conceder acesso, você atribui funções a usuários, grupos, entidades de serviço ou identidades gerenciadas em um determinado escopo. Este artigo descreve como atribuir funções usando a CLI do Azure.
Pré-requisitos
Para atribuir funções, você deve ter:
-
Permissões
Microsoft.Authorization/roleAssignments/write, como Administrador de Controle de Acesso Baseado em Função - Bash no Azure Cloud Shell ou CLI do Azure
Etapas para atribuir uma função do Azure
Para atribuir uma função, são necessários três elementos: principal de segurança, definição de função e escopo.
Etapa 1: Determinar quem precisa de acesso
Você pode atribuir uma função a um usuário, grupo, entidade de serviço ou identidade gerenciada. Para atribuir uma função, talvez seja necessário especificar a ID exclusiva do objeto. A ID tem o formato: 11111111-1111-1111-1111-111111111111. Você pode obter a ID usando o portal do Azure ou a CLI do Azure.
User
Para um usuário do Microsoft Entra, obtenha o nome principal do usuário, como patlong@contoso.com ou o ID do objeto do usuário. Para obter a ID do objeto, você pode usar az ad user show.
az ad user show --id "{principalName}" --query "id" --output tsv
Grupo
Para um grupo do Microsoft Entra, você precisa da ID do objeto de grupo. Para obter a ID do objeto, você pode usar az ad group show ou az ad group list.
az ad group show --group "{groupName}" --query "id" --output tsv
Entidade de serviço
Para uma entidade de serviço do Microsoft Entra (identidade usada por um aplicativo), você precisa da ID do objeto da entidade de serviço. Para obter a ID do objeto, você pode usar az ad sp list. Para uma entidade de serviço, use a ID do objeto e não a ID do aplicativo.
az ad sp list --all --query "[].{displayName:displayName, id:id}" --output tsv
az ad sp list --display-name "{displayName}"
Identidade gerenciada
Para uma identidade gerenciada atribuída pelo sistema ou atribuída pelo usuário, você precisa da ID do objeto. Para obter a ID do objeto, você pode usar az ad sp list.
az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'"
Para listar apenas identidades gerenciadas atribuídas pelo usuário, você pode usar az identity list.
az identity list
Etapa 2: Selecionar a função apropriada
As permissões são agrupadas em funções. Você pode selecionar em uma lista de várias funções internas do Azure ou pode usar suas próprias funções personalizadas. É uma prática recomendada conceder acesso com o menor privilégio necessário, portanto, evite atribuir uma função mais ampla.
Para listar funções e obter a ID de função exclusiva, você pode usar az role definition list.
az role definition list --query "[].{name:name, roleType:roleType, roleName:roleName}" --output tsv
Veja como listar os detalhes de uma função específica.
az role definition list --name "{roleName}"
Para obter mais informações, consulte Listar definições de função do Azure.
Etapa 3: identificar o escopo necessário
O Azure fornece quatro níveis de escopo: recurso, grupo de recursos, assinatura e grupo de gerenciamento. É uma prática recomendada conceder acesso com o privilégio mínimo necessário, portanto, evite atribuir uma função em um escopo mais amplo. Para obter mais informações sobre o escopo, consulte Noções básicas sobre o escopo.
Escopo do recurso
Para o escopo do recurso, você precisa da ID do recurso. Você pode encontrar a ID do recurso examinando as propriedades do recurso no portal do Azure. Uma ID de recurso tem o seguinte formato.
/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}
Escopo do grupo de recursos
Para o escopo do grupo de recursos, você precisa do nome do grupo de recursos. Você pode encontrar o nome na página Grupos de recursos no portal do Azure ou pode usar az group list.
az group list --query "[].{name:name}" --output tsv
Escopo da assinatura
Para o escopo da assinatura, você precisa da ID da assinatura. Você pode encontrar a ID na página Assinaturas no portal do Azure ou usar az account list.
az account list --query "[].{name:name, id:id}" --output tsv
Escopo do grupo de gerenciamento
Para o escopo do grupo de gerenciamento, você precisa do nome do grupo de gerenciamento. Você pode encontrar o nome na página Grupos de Gerenciamento no portal do Azure ou usar az account management-group list.
az account management-group list --query "[].{name:name, id:id}" --output tsv
Etapa 4: Atribuir função
Para atribuir uma função, use o comando az role assignment create . Dependendo do escopo, o comando normalmente tem um dos seguintes formatos.
Escopo do recurso
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}"
Escopo do grupo de recursos
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"
Escopo da assinatura
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}"
Escopo do grupo de gerenciamento
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/providers/Microsoft.Management/managementGroups/{managementGroupName}"
O exemplo a seguir mostra um exemplo da saída quando você atribui a função Colaborador de Máquina Virtual a um usuário em um escopo de grupo de recursos.
{
"canDelegate": null,
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
"name": "{roleAssignmentId}",
"principalId": "{principalId}",
"principalType": "User",
"resourceGroup": "{resourceGroupName}",
"roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c",
"scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
"type": "Microsoft.Authorization/roleAssignments"
}
Atribuir exemplos de função
Atribuir uma função para todos os contêineres de blob em um escopo de recurso da conta de armazenamento
Atribui a função de Colaborador de dados de blob de armazenamento a uma entidade de serviço com a ID de objeto 55555555-5555-5555-5555-555555555555 em um escopo de recurso para uma conta de armazenamento denominada storage12345.
az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345"
Atribuir uma função a um escopo de recurso de contêiner de blob específico
Atribui a função de Colaborador de dados de blob de armazenamento a uma entidade de serviço com a ID de objeto 55555555-5555-5555-5555-555555555555 em um escopo de recurso para um contêiner de blob denominado blob-container-01.
az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01"
Atribuir uma função a um grupo em um escopo de recurso de rede virtual específico
Atribui a função Colaborador da Máquina Virtual para o grupo Ann Mack Team com ID 22222222-2222-2222-2222-222222222222 em um escopo de recursos para uma rede virtual denominada pharma-sales-project-network.
az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales/providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network"
Atribuir uma função para um usuário em um escopo de grupo de recursos
Atribui a função Colaborador de Máquina Virtual ao patlong@contoso.com usuário no escopo do grupo de recursos pharma-sales.
az role assignment create --assignee "patlong@contoso.com" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Atribuir uma função para um usuário usando a ID de função exclusiva em um escopo de grupo de recursos
Há algumas vezes em que um nome de função pode mudar, por exemplo:
- Você está usando sua própria função personalizada e decide alterar o nome.
- Você está usando uma função de visualização que tem (versão prévia) no nome. Quando o papel é liberado, o papel é renomeado.
Mesmo que uma função seja renomeada, a ID da função não será alterada. Se você estiver usando scripts ou automação para criar suas atribuições de função, é uma prática recomendada usar a ID de função exclusiva em vez do nome da função. Portanto, se uma função for renomeada, os scripts serão mais propensos a funcionar.
O exemplo a seguir atribui a função Colaborador de Máquina Virtual ao usuário patlong@contoso.com no escopo do grupo de recursos pharma-sales.
az role assignment create --assignee "patlong@contoso.com" \
--role "9980e02c-c2be-4d73-94e8-173b1dc7cf3c" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Atribuir uma função para todos os contêineres de blob em um escopo de grupo de recursos
Atribui a função de Colaborador de dados de blob de armazenamento a uma entidade de serviço com a ID de objeto 55555555-5555-5555-5555-555555555555 no escopo do grupo de recursos Example-Storage-rg.
az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Example-Storage-rg"
Atribuir uma função para um aplicativo em um escopo de grupo de recursos
Atribui a função Colaborador de Máquina Virtual a um aplicativo com a ID do objeto principal do serviço 44444444-4444-4444-4444-444444444444 no escopo do grupo de recursos pharma-sales.
az role assignment create --assignee "44444444-4444-4444-4444-444444444444" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Atribuir um cargo para um novo principal de serviço em um escopo de grupo de recursos
Se você criar uma nova entidade de serviço e tentar atribuir imediatamente uma função a essa entidade de serviço, essa atribuição de função poderá falhar em alguns casos. Por exemplo, se você usar um script para criar uma nova identidade gerenciada e tentar atribuir uma função a essa entidade de serviço, a atribuição de função poderá falhar. O motivo dessa falha provavelmente é um atraso de replicação. A entidade de serviço é criada em uma região; no entanto, a atribuição de função pode ocorrer em uma região diferente que ainda não replicou a entidade de serviço. Para resolver esse cenário, você deve especificar o tipo principal ao criar a atribuição de função.
Para atribuir uma função, use az role assignment create, especifique um valor para --assignee-object-ide, em seguida, defina --assignee-principal-type como ServicePrincipal.
az role assignment create --assignee-object-id "{assigneeObjectId}" \
--assignee-principal-type "{assigneePrincipalType}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"
O exemplo a seguir atribui a função Colaborador de Máquina Virtual à identidade gerenciada msi-test no escopo do grupo de recursos pharma-sales:
az role assignment create --assignee-object-id "33333333-3333-3333-3333-333333333333" \
--assignee-principal-type "ServicePrincipal" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Atribuir uma função para um usuário em um escopo de assinatura
Atribui a função Leitor ao usuário annm@example.com no escopo de uma assinatura.
az role assignment create --assignee "annm@example.com" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Atribuir uma função para um grupo em um escopo de assinatura
Atribui a função Leitor ao grupo Ann Mack Team com ID 22222222-2222-2222-2222-222222222222 no escopo da assinatura.
az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Atribuir uma função para todos os contêineres de blob em um escopo de assinatura
Atribui a função de Leitor de dados de blob de armazenamento ao usuário alain@example.com em um escopo de assinatura.
az role assignment create --assignee "alain@example.com" \
--role "Storage Blob Data Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Atribuir uma função para um usuário em um escopo de grupo de gerenciamento
Atribui a função Leitor de Cobrança ao usuário alain@example.com no escopo de um grupo de gerenciamento.
az role assignment create --assignee "alain@example.com" \
--role "Billing Reader" \
--scope "/providers/Microsoft.Management/managementGroups/marketing-group"