Назначение ролей Azure с помощью Azure PowerShell

Управление доступом на основе ролей Azure (Azure RBAC) — это система авторизации, используемая для управления доступом к ресурсам в Azure. Чтобы предоставить доступ, необходимо назначить роли пользователям, группам, субъектам-службам или управляемым удостоверениям в определенной области. В этой статье описывается назначение ролей с помощью Azure PowerShell.

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Необходимые компоненты

Чтобы назначать роли, необходимо наличие следующего:

Действия по назначению роли Azure

Назначение ролей состоит из трех элементов: субъект безопасности, определение роли и область действия.

Шаг 1. Определение пользователей, которым требуется доступ

Роль можно назначить пользователю, группе, субъекту-службе или управляемому удостоверению. Чтобы назначить роль, может потребоваться указать уникальный идентификатор объекта. Идентификатор имеет следующий формат: 11111111-1111-1111-1111-111111111111. Этот идентификатор можно получить с помощью портала Azure или Azure PowerShell.

Пользователь

Для пользователя Microsoft Entra получите имя субъекта-пользователя, например patlong@contoso.com идентификатор объекта пользователя. Чтобы получить идентификатор объекта, можно использовать Get-AzADUser.

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

Групповое

Для группы Microsoft Entra требуется идентификатор объекта группы. Чтобы получить идентификатор объекта, можно использовать Get-AzADGroup.

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

Субъект-служба

Для субъекта-службы Microsoft Entra (удостоверения, используемого приложением), вам потребуется идентификатор объекта субъекта-службы. Чтобы получить идентификатор объекта, можно использовать Get-AzADServicePrincipal. Для субъекта-службы используйте идентификатор объекта, а не идентификатор приложения.

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

Управляемое удостоверение

Для назначенного системой или управляемого пользователем удостоверения требуется идентификатор объекта. Чтобы получить идентификатор объекта, можно использовать Get-AzADServicePrincipal.

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

Шаг 2. Выбор подходящей роли

Разрешения объединяются в роли. Вы можете выбрать из списка несколько встроенных ролей Azure или использовать собственные настраиваемые роли. Мы рекомендуем предоставлять доступ с минимальными необходимыми привилегиями, поэтому не следует назначать роли, предоставляющие более широкие разрешения.

Чтобы отобразить список ролей и получить уникальный идентификатор роли, можно использовать Get-AzRoleDefinition.

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

Ниже показано, как вывести сведения о конкретной роли.

Get-AzRoleDefinition -Name <roleName>

Дополнительные сведения см. в разделе Вывод списка всех ролей.

Шаг 3. Определение необходимой области

Azure предоставляет четыре уровня области действия: ресурс, группа ресурсов, подписка и группа управления. Мы рекомендуем предоставлять доступ с минимальными необходимыми привилегиями, поэтому не следует назначать роли, предоставляющие более широкие разрешения. Дополнительные сведения об областях см. в статье Общие сведения об областях для Azure RBAC.

Область ресурсов

Для области ресурса требуется идентификатор ресурса. Идентификатор ресурса можно найти, ознакомившись со свойствами ресурса на портале Azure. Идентификатор ресурса имеет следующий формат.

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

Область группы ресурсов

Для области группы ресурсов требуется имя группы ресурсов. Имя можно найти на странице Группа ресурсов на портале Azure или воспользоваться Get-AzResourceGroup.

Get-AzResourceGroup

Область подписки

Для области подписки требуется идентификатор подписки. Идентификатор находится на странице Подписки на портале Azure. Также можно воспользоваться Get-AzSubscription.

Get-AzSubscription

Область группы управления

Для области группы управления требуется имя группы управления. Имя можно найти на странице Группа управления на портале Azure или воспользоваться Get-AzManagementGroup.

Get-AzManagementGroup

Шаг 4. Назначение роли

Чтобы назначить роль, используйте команду New-AzRoleAssignment. В зависимости от области команда обычно имеет один из следующих форматов.

Область ресурсов

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>

Область группы ресурсов

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

Область подписки

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

Область группы управления

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

Примеры назначения ролей

Назначение роли для всех контейнеров BLOB-объектов в области ресурсов учетной записи хранения

Назначает роль участника данных большого двоичного объекта служба хранилища субъекту-службе с идентификатором объекта 55555555-5555-5555-55555-5555555555555 и приложением Идентификатор 66666666666-6666-66666-6666666666666666 на область учетной записи хранения с именем 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

Назначение роли для определенной области ресурсов контейнера BLOB-объектов

Назначает роль участника данных больших двоичных объектов служба хранилища субъекту-службе с идентификатором объекта 55555555-5555-5555-55555-555555555555 и идентификатором приложения 16666666666-6666-6666-6666666666666666 на область для контейнера BLOB-объектов с именем 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

Назначение роли для группы в определенной области ресурса виртуальной сети

Назначает роль Участник виртуальных машин группе Virtual Machine Contributor с идентификатором aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa в области ресурса для виртуальной сети с именем pharma-sales-project-network.

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

Назначение роли пользователю в пределах группы ресурсов

Назначает роль patlong@contoso.com участника виртуальной машины пользователю в группе ресурсов pharma-sales область.

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

Кроме того, можно указать полное имя группы ресурсов с помощью параметра -Scope.

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

Назначение роли для пользователя с помощью уникального идентификатора роли в пределах группы ресурсов

В некоторых случаях имя роли может измениться, например в следующих:

  • вы используете собственную настраиваемую роль и решили переименовать ее;
  • вы используете роль предварительного просмотра с указанием (Preview) в имени. После выпуска роли она будет переименована.

Даже если роль переименована, идентификатор роли остается прежним. Если вы используете скрипты или автоматизацию для создания назначений ролей, рекомендуется использовать уникальный идентификатор роли вместо имени роли. Таким образом, если роль переименована, скорее всего, скрипты будут работать.

В следующем примере роль участника patlong@contoso.com виртуальной машины назначается пользователю в группе ресурсов 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

Назначение роли пользователю в области группы ресурсов

Назначает роль Участник виртуальных машины приложению с идентификатором объекта субъекта-службы 77777777-7777-7777-7777-777777777777 в области группы ресурсов pharma-sales.

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

Назначение роли в области подписки

Назначает роль annm@example.com читателя пользователю в область подписки.

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

Назначение роли в области действия группы управления

Назначает роль alain@example.com читателя выставления счетов пользователю в группе управления область.

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

Следующие шаги