Чтобы назначить роль Azure субъекту безопасности с помощью PowerShell, вызовите команду New-AzRoleAssignment. Чтобы выполнить команду, требуется роль, которая включает разрешения Microsoft.Authorization/roleAssignments/write, назначенные вам на соответствующем уровне или выше.
Формат команды может отличаться в зависимости от области применения, однако параметры -ObjectId и -RoleDefinitionName являются обязательными.
-Scope Хотя параметр не требуется, включите его для сохранения принципа наименьшей привилегии. Ограничивая роли и области, вы ограничиваете ресурсы, которые подвергаются риску, если объект безопасности когда-либо скомпрометирован.
Параметр -ObjectId — это идентификатор объекта Microsoft Entra, относящийся к пользователю, группе или служебному принципалу, которому назначена роль. Чтобы получить идентификатор, используйте Get-AzADUser для фильтрации Microsoft Entra пользователей, как показано в следующем примере.
Get-AzADUser -DisplayName '<Display Name>'
(Get-AzADUser -StartsWith '<substring>').Id
Первый ответ возвращает субъект безопасности, а второй — идентификатор объекта субъекта безопасности.
UserPrincipalName : markpdaniels@contoso.com
ObjectType : User
DisplayName : Mark P. Daniels
Id : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
Type :
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
Значение параметра -RoleDefinitionName — это имя роли RBAC, которая должна быть назначена субъекту. Чтобы получить доступ к данным объектов BLOB в портале Azure с учетными данными Microsoft Entra, пользователь должен иметь следующие назначения ролей.
- Роль доступа к данным, например Участник данных хранилища BLOB-объектов или Читатель данных хранилища BLOB-объектов
- Роль Читатель в Azure Resource Manager
Чтобы назначить роль, ограниченную контейнером BLOB или учетной записью хранения, укажите строку, содержащую область ресурса в параметре -Scope. Это действие соответствует принципу наименьших привилегий — концепции информационной безопасности, в соответствии с которым пользователю предоставляется минимальный уровень доступа, необходимый для выполнения его функций. Такая методика снижает риск случайного или намеренного ущерба, к которому могут привести лишние привилегии.
Область для контейнера имеет следующий формат:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>
Область для учетной записи хранения имеет следующий формат:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>
Чтобы назначить роль, область действия которой ограничивается учетной записью хранения, укажите строку, содержащую область контейнера для параметра --scope.
В следующем примере пользователю назначается роль участника данных BLOB-объектов хранилища. Назначение роли ограничивается уровнем контейнера. Замените примеры значений и значения-заполнители в скобках (<>) собственными значениями.
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>"
В следующем примере пользователю назначается роль Читатель данных хранилища BLOB-объектов путем указания идентификатора объекта. Назначение роли распространяется на уровень учетной записи хранения. Замените примеры значений и значения-заполнители в скобках (<>) собственными значениями.
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>"
Выходные данные должны быть аналогичны приведенным ниже:
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
Сведения о назначении ролей с помощью PowerShell в области подписки или группы ресурсов см. в статье Назначение ролей Azure с использованием Azure PowerShell.
Чтобы назначить роль Azure субъекту безопасности с помощью Azure CLI, используйте команду az role assignment create. Формат команды может зависеть от области назначения. Чтобы выполнить команду, необходимо иметь роль, содержащую разрешения Microsoft.Authorization/roleAssignments/write, назначенные вам в соответствующей области или более.
Чтобы назначить роль, область действия которой ограничивается контейнером, укажите строку, содержащую область контейнера для параметра --scope. Область для контейнера имеет следующий формат:
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>
В следующем примере пользователю назначается роль участника данных BLOB-объектов хранилища. Назначение роли ограничивается уровнем контейнера. Замените примеры значений и значения-заполнители в скобках (<>) собственными значениями.
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>"
В следующем примере пользователю назначается роль Читатель данных хранилища BLOB-объектов путем указания идентификатора объекта. Дополнительные сведения о назначении --assignee-object-id ролей и --assignee-principal-type параметрах см. в статье az role assignment. В этом примере назначение роли ограничивается уровнем учетной записи хранения. Замените примеры значений и значения-заполнители в скобках (<>) собственными значениями.
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>"
При назначении ролей или удалении назначений ролей может потребоваться до 10 минут, чтобы изменения вступили в силу.
Сведения о назначении ролей с помощью Azure CLI в подписке, группе ресурсов или области учетной записи хранения см. в статье "Назначение ролей Azure с помощью Azure CLI".