Para atribuir uma função do Azure a uma entidade de segurança utilizando o PowerShell, chame o comando New-AzRoleAssignment. Para executar o comando, você precisa de uma função que inclua permissões de Microsoft.Authorization/roleAssignments/write atribuídas a você no escopo correspondente ou em um nível superior.
O formato do comando pode ser diferente com base no escopo da tarefa, mas os parâmetros -ObjectId e -RoleDefinitionName são necessários. Embora o -Scope parâmetro não seja necessário, inclua-o para manter o princípio do privilégio mínimo. Limitando as funções e o escopo, você limita os recursos que correrão riscos se a entidade de segurança for comprometida.
O parâmetro -ObjectId é a ID do objeto Microsoft Entra do usuário, grupo ou entidade de serviço à qual você está atribuindo a função. Para recuperar o identificador, use Get-AzADUser para filtrar os usuários do Microsoft Entra, conforme mostrado no exemplo a seguir.
Get-AzADUser -DisplayName '<Display Name>'
(Get-AzADUser -StartsWith '<substring>').Id
A primeira resposta retorna a entidade de segurança, enquanto a segunda fornece o ID do objeto da entidade de segurança.
UserPrincipalName : markpdaniels@contoso.com
ObjectType : User
DisplayName : Mark P. Daniels
Id : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
Type :
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
O valor do parâmetro -RoleDefinitionName é o nome da função RBAC que precisa ser atribuída ao principal. Para acessar dados de blob no portal do Azure com as credenciais do Microsoft Entra, um usuário deve ter as seguintes atribuições de função:
- Uma função de acesso a dados, como Colaborador de dados do Blob de Armazenamento ou Leitor de dados do Blob de Armazenamento
- A função de Leitor do Azure Resource Manager
Para atribuir uma função com escopo a um contêiner de blob ou a uma conta de armazenamento, especifique uma cadeia de caracteres contendo o escopo do recurso para o -Scope parâmetro. Essa ação está em conformidade com o princípio de privilégios mínimos, um conceito de segurança de informações no qual um usuário recebe o nível mínimo de acesso necessário para executar suas funções de trabalho. Essa prática reduz o possível risco de danos acidentais ou intencionais que podem ser trazidos por privilégios desnecessários.
O escopo de um contêiner está no formato:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>
O escopo de uma conta de armazenamento está no formato:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>
Para atribuir uma função com escopo a uma conta de armazenamento, especifique uma cadeia de caracteres que contenha o escopo do contêiner para o parâmetro --scope.
O exemplo a seguir atribui a função Storage Blob Data Contributor a um usuário. A atribuição de função tem como escopo o nível do contêiner. Substitua os valores de exemplo e os valores de espaço reservado entre colchetes (<>) pelos seus próprios valores:
New-AzRoleAssignment -SignInName <email> `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>"
O exemplo a seguir atribui a função de Leitor de Dados do Blob de Armazenamento a um usuário especificando a ID do objeto. A atribuição de função tem como escopo o nível da conta de armazenamento. Certifique-se de substituir os valores de exemplo e os valores de espaço reservado entre parênteses angulares (<>) pelos seus próprios valores:
New-AzRoleAssignment -ObjectID "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" `
-RoleDefinitionName "Storage Blob Data Reader" `
-Scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
A saída deve ser semelhante a esta:
RoleAssignmentId : /subscriptions/<subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.Storage/storageAccounts/<Storage Account>/providers/Microsoft.Authorization/roleAssignments/<Role Assignment ID>
Scope : /subscriptions/<subscription ID>/resourceGroups/<Resource Group>/providers/Microsoft.Storage/storageAccounts/<Storage Account>
DisplayName : Mark Patrick
SignInName : markpdaniels@contoso.com
RoleDefinitionName : Storage Blob Data Reader
RoleDefinitionId : <Role Definition ID>
ObjectId : <Object ID>
ObjectType : User
CanDelegate : False
Para obter informações sobre a atribuição de funções com o PowerShell no escopo de assinatura ou grupo de recursos, confira Atribuir funções do Azure usando o Azure PowerShell.
Para atribuir uma função Azure a uma entidade de segurança usando CLI do Azure, use o comando az role assignment create. O formato do comando pode diferir a depender do escopo da atribuição. Para executar o comando, você deve ter uma função que inclua Microsoft. Permissões de autorização/roleAssignments/write atribuídas a você no escopo correspondente ou superior.
Para atribuir uma função com escopo a um contêiner, especifique uma cadeia de caracteres que contenha o escopo do contêiner para o parâmetro --scope. O escopo de um contêiner está no formato:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>
O exemplo a seguir atribui a função Storage Blob Data Contributor a um usuário. A atribuição de função tem como escopo o nível do contêiner. Substitua os valores de exemplo e os valores de espaço reservado entre colchetes (<>) pelos seus próprios valores:
az role assignment create \
--role "Storage Blob Data Contributor" \
--assignee <email> \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>"
O exemplo a seguir atribui a função de Leitor de dados do armazenamento de blob a um usuário especificando a ID do objeto. Para saber mais sobre os parâmetros --assignee-object-id e --assignee-principal-type, consulte atribuição de função az. Neste exemplo, a atribuição de função tem como escopo o nível da conta de armazenamento. Certifique-se de substituir os valores de exemplo e os valores de espaço reservado nos colchetes angulares (<>) pelos seus próprios valores.
az role assignment create \
--role "Storage Blob Data Reader" \
--assignee-object-id "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" \
--assignee-principal-type "User" \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
Quando você atribui funções ou remove atribuições de função, pode levar até 10 minutos para que as alterações entrem em vigor.
Para obter informações sobre como atribuir funções com a CLI do Azure no escopo da assinatura, do grupo de recursos ou da conta de armazenamento, consulte Atribuir funções do Azure usando a CLI do Azure.