Atribuir funções do Azure com o Azure PowerShell

O controle de acesso baseado em função do Azure (Azure RBAC) é o sistema de autorização que você usa para gerenciar o acesso aos recursos do Azure. Para conceder acesso, atribua funções a utilizadores, grupos, principais de serviço ou identidades geridas num determinado âmbito. Este artigo descreve como atribuir funções usando o Azure PowerShell.

Nota

Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Pré-requisitos

Para atribuir funções, você deve ter:

Etapas para atribuir uma função do Azure

Para atribuir uma função consiste em três elementos: entidade 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. O ID tem o formato: 11111111-1111-1111-1111-111111111111. Você pode obter a ID usando o portal do Azure ou o Azure PowerShell.

Utilizador

Para um usuário do Microsoft Entra, obtenha o nome principal do usuário, como patlong@contoso.com ou a ID do objeto do usuário. Para obter a ID do objeto, você pode usar Get-AzADUser.

Get-AzADUser -StartsWith <userName>
(Get-AzADUser -DisplayName <userName>).id

Grupo

Para um grupo do Microsoft Entra, você precisa da ID do objeto do grupo. Para obter a ID do objeto, você pode usar Get-AzADGroup.

Get-AzADGroup -SearchString <groupName>
(Get-AzADGroup -DisplayName <groupName>).id

Principal 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 Get-AzADServicePrincipal. Para uma entidade de serviço, use a ID do objeto e não a ID do aplicativo.

Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id

Identidade gerida

Para uma identidade gerenciada atribuída pelo sistema ou pelo usuário, você precisa da ID do objeto. Para obter a ID do objeto, você pode usar Get-AzADServicePrincipal.

Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id

Etapa 2: Selecione 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 Get-AzRoleDefinition.

Get-AzRoleDefinition | Format-Table -Property Name, IsCustom, Id

Veja como listar os detalhes de uma função específica.

Get-AzRoleDefinition -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 menor privilégio necessário, portanto, evite atribuir uma função em um escopo mais amplo. Para obter mais informações sobre escopo, consulte Entender escopo.

Âmbito do recurso

Para o escopo do recurso, você precisa da ID do recurso para o recurso. Você pode encontrar a ID do recurso examinando as propriedades do recurso no portal do Azure. Um ID de recurso tem o seguinte formato.

/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>

Âmbito 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 Get-AzResourceGroup.

Get-AzResourceGroup

Âmbito da subscrição

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 pode usar Get-AzSubscription.

Get-AzSubscription

Âmbito do grupo de gestão

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 pode usar Get-AzManagementGroup.

Get-AzManagementGroup

Etapa 4: Atribuir função

Para atribuir uma função, use o comando New-AzRoleAssignment . Dependendo do escopo, o comando normalmente tem um dos seguintes formatos.

Âmbito do recurso

New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionId <roleId> `
-ResourceName <resourceName> `
-ResourceType <resourceType> `
-ResourceGroupName <resourceGroupName>

Âmbito do grupo de recursos

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>

Âmbito da subscrição

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>

Âmbito do grupo de gestão

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>

Atribuir exemplos de função

Atribuir uma função para todos os contêineres de blob em um escopo de recurso de conta de armazenamento

Atribui a função de Colaborador de Dados de Blob de Armazenamento a uma entidade de serviço com ID de objeto 55555555-5555-5555-5555-5555555555555 e ID de Aplicativo 66666666-6666-6666-6666-66666666666666 em um escopo de recurso para uma conta de armazenamento chamada storage12345.

PS C:\> New-AzRoleAssignment -ApplicationId 66666666-6666-6666-6666-666666666666 `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345"

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/providers/Microsoft.Authorization/roleAssignments/cccccccc-cccc-cccc-cccc-cccccccccccc
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345
DisplayName        : example-identity
SignInName         :
RoleDefinitionName : Storage Blob Data Contributor
RoleDefinitionId   : ba92f5b4-2d11-453d-a403-e96b0029c9fe
ObjectId           : 55555555-5555-5555-5555-555555555555
ObjectType         : ServicePrincipal
CanDelegate        : False

Atribuir uma função para 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 ID de objeto 55555555-5555-5555-5555-5555555555555 e ID de Aplicativo 66666666-6666-6666-6666-666666666666 em um escopo de recurso para um contêiner de blob chamado blob-container-01.

PS C:\> New-AzRoleAssignment -ApplicationId 66666666-6666-6666-6666-666666666666 `
-RoleDefinitionName "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"

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01/providers/Microsoft.Authorization/roleAssignm
                     ents/dddddddd-dddd-dddd-dddd-dddddddddddd
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01
DisplayName        : example-identity
SignInName         :
RoleDefinitionName : Storage Blob Data Contributor
RoleDefinitionId   : ba92f5b4-2d11-453d-a403-e96b0029c9fe
ObjectId           : 55555555-5555-5555-5555-555555555555
ObjectType         : ServicePrincipal
CanDelegate        : False

Atribuir uma função a um grupo em um escopo de recurso de rede virtual específico

Atribui a função de Colaborador de Máquina Virtual ao grupo Administradores de Vendas Farmacêuticas com ID aaa-aa-aa-aa-aaaaaaaa

PS C:\> New-AzRoleAssignment -ObjectId aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceName pharma-sales-project-network `
-ResourceType Microsoft.Network/virtualNetworks `
-ResourceGroupName MyVirtualNetworkResourceGroup

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
                     /providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network/providers/Microsoft.Authorizat
                     ion/roleAssignments/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
                     /providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network
DisplayName        : Pharma Sales Admins
SignInName         :
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
ObjectType         : Group
CanDelegate        : False

Atribuir uma função a um utilizador no âmbito de um grupo de recursos

Atribui a função de Colaborador de Máquina Virtual ao patlong@contoso.com usuário no escopo do grupo de recursos de vendas farmacêuticas.

PS C:\> New-AzRoleAssignment -SignInName patlong@contoso.com `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceGroupName pharma-sales

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/pr
                     oviders/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : Pat Long
SignInName         : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

Como alternativa, você pode especificar o grupo de recursos totalmente qualificado com o -Scope parâmetro:

PS C:\> New-AzRoleAssignment -SignInName patlong@contoso.com `
-RoleDefinitionName "Virtual Machine Contributor" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/providers/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : Pat Long
SignInName         : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

Atribuir uma função a 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 (Visualização) no nome. Quando a função é liberada, ela é renomeada.

Mesmo que uma função seja renomeada, a ID da função não é alterada. Se você estiver usando scripts ou automação para criar suas atribuições de função, é uma prática recomendada usar o ID de função exclusivo em vez do nome da função. Portanto, se uma função for renomeada, é mais provável que seus scripts funcionem.

O exemplo a seguir atribui a função de Colaborador de Máquina Virtual ao patlong@contoso.com usuário no escopo do grupo de recursos pharma-sales .

PS C:\> New-AzRoleAssignment -ObjectId 44444444-4444-4444-4444-444444444444 `
-RoleDefinitionId 9980e02c-c2be-4d73-94e8-173b1dc7cf3c `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/providers/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : Pat Long
SignInName         : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

Atribuir uma função para um aplicativo em um escopo de grupo de recursos

Atribui a função de Colaborador de Máquina Virtual a um aplicativo com ID de objeto principal de serviço 77777777-7777-7777-7777-7777777777777 no escopo do grupo de recursos de vendas farmacêuticas .

PS C:\> New-AzRoleAssignment -ObjectId 77777777-7777-7777-7777-777777777777 `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceGroupName pharma-sales

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/66666666-6666-6666-6666-666666666666
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : MyApp1
SignInName         :
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 77777777-7777-7777-7777-777777777777
ObjectType         : ServicePrincipal
CanDelegate        : False

Atribuir uma função a um utilizador num âmbito de subscrição

Atribui a função Leitor ao annm@example.com usuário em um escopo de assinatura.

PS C:\> New-AzRoleAssignment -SignInName annm@example.com `
-RoleDefinitionName "Reader" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000"

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/66666666-6666-6666-6666-666666666666
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000
DisplayName        : Ann M
SignInName         : annm@example.com
RoleDefinitionName : Reader
RoleDefinitionId   : acdd72a7-3385-48ef-bd42-f606fba81ae7
ObjectId           : 77777777-7777-7777-7777-777777777777
ObjectType         : ServicePrincipal
CanDelegate        : False

Atribuir uma função a um usuário em um escopo de grupo de gerenciamento

Atribui a função Leitor de Faturamento ao alain@example.com usuário em um escopo de grupo de gerenciamento.

PS C:\> New-AzRoleAssignment -SignInName alain@example.com `
-RoleDefinitionName "Billing Reader" `
-Scope "/providers/Microsoft.Management/managementGroups/marketing-group"

RoleAssignmentId   : /providers/Microsoft.Management/managementGroups/marketing-group/providers/Microsoft.Authorization/roleAssignments/22222222-2222-2222-2222-222222222222
Scope              : /providers/Microsoft.Management/managementGroups/marketing-group
DisplayName        : Alain Charon
SignInName         : alain@example.com
RoleDefinitionName : Billing Reader
RoleDefinitionId   : fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

Próximos passos