Para atribuir um papel Azure a um principal de segurança usando o PowerShell, chame o comando New-AzRoleAssignment. Para executar o comando, necessita de uma função que inclua permissões Microsoft.Authorization/roleAssignments/write atribuídas a si no âmbito correspondente ou superior.
O formato do comando pode variar consoante o âmbito da atribuição, mas os -ObjectId parâmetros e -RoleDefinitionName são necessários. Embora o -Scope parâmetro não seja obrigatório, inclua-o para manter o princípio do menor privilégio. Ao limitar funções e escopos, você limita os recursos que estão em risco se a entidade de segurança for comprometida.
O parâmetro -ObjectId é o ID de objeto Microsoft Entra do utilizador, grupo ou principal de serviço a quem está a atribuir a função. Para recuperar o identificador, use Get-AzADUser para filtrar utilizadores do Microsoft Entra, como mostrado no exemplo seguinte.
Get-AzADUser -DisplayName '<Display Name>'
(Get-AzADUser -StartsWith '<substring>').Id
A primeira resposta retorna a entidade de segurança e a segunda retorna a 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 -RoleDefinitionName valor do parâmetro é o nome da função de controle de acesso baseado em função (RBAC) que precisa ser atribuída ao principal de segurança. Para acessar dados de blob no portal do Azure com 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 de Blob de Armazenamento ou Leitor de Dados de Blob de Armazenamento
- A função Leitor do Azure Resource Manager
Para atribuir uma função com âmbito a um contentor de blob ou a uma conta de armazenamento, especifique uma string contendo o âmbito do recurso no parâmetro -Scope. Esta ação está em conformidade com o princípio do menor privilégio, um conceito de segurança da informação em que um usuário recebe o nível mínimo de acesso necessário para desempenhar suas funções de trabalho. Esta prática reduz o risco potencial de danos acidentais ou intencionais que privilégios desnecessários podem causar.
O escopo para 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á na forma:
/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 --scope parâmetro.
O exemplo a seguir atribui a um utilizador a função de Colaborador de Dados de Blob de Armazenamento. A atribuição de função tem como escopo o nível do contêiner. Certifique-se de substituir os valores de exemplo e os valores 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 Storage Blob Data Reader 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 nos marcadores (<>) 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 ao seguinte:
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 como atribuir funções com o PowerShell no escopo da assinatura ou do grupo de recursos, consulte Atribuir funções do Azure usando o Azure PowerShell.
Para atribuir um papel de Azure a um principal de segurança usando CLI do Azure, utilize o comando de atribuição de funções az create. O formato do comando pode variar com base no escopo da atribuição. Para executar o comando, deve ter uma função que inclua Microsoft.Authorization/roleAssignments/write permissões atribuídas a você no âmbito correspondente ou superior.
Para atribuir uma função com escopo a um contêiner, especifique uma cadeia de caracteres contendo o escopo do contêiner para o --scope parâmetro. O escopo para 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 de Colaborador de Dados de Blob de Armazenamento a um utilizador. A atribuição de função tem como escopo o nível do contêiner. Certifique-se de substituir os valores de exemplo e os valores de marcador de posição entre colchetes (<>) por 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 Storage Blob Data Reader a um usuário especificando a ID do objeto. Para saber mais sobre os parâmetros --assignee-object-id e --assignee-principal-type, consulte az role assignment. 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 entre colchetes (<>) por os 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, grupo de recursos ou conta de armazenamento, consulte Atribuir funções do Azure usando a CLI do Azure.