Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Управление доступом на основе ролей Azure (Azure RBAC) — это система авторизации, используемая для управления доступом к ресурсам в Azure. Чтобы предоставить доступ, необходимо назначить роли для пользователей, групп, субъектов-служб или управляемых удостоверений в определенной области применимости. В этой статье описывается назначение ролей с помощью Azure PowerShell.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure PowerShell". Чтобы узнать, как перейти на модуль Az PowerShell, см. статью Миграция Azure PowerShell с AzureRM на Az.
Предпосылки
Чтобы назначить роли, необходимо:
-
Microsoft.Authorization/roleAssignments/write
разрешения, такие как Администратор управления доступом на основе ролей - PowerShell в Azure Cloud Shell или Azure PowerShell
- Учетная запись, используемая для выполнения команды PowerShell, должна иметь разрешение Microsoft Graph
Directory.Read.All
.
Действия по назначению роли Azure
Назначение роли состоит из трех элементов: субъект безопасности, определение роли и область.
Шаг 1. Определение пользователей, которым требуется доступ
Роль можно назначить пользователю, группе, служебному принципалу или управляемому удостоверению. Чтобы назначить роль, может потребоваться указать уникальный идентификатор объекта. Идентификатор имеет формат: 11111111-1111-1111-1111-111111111111
Идентификатор можно получить с помощью портала Azure или Azure PowerShell.
Пользователь
Для пользователя Microsoft Entra получите основное имя пользователя, например [email protected], или идентификатор объекта пользователя. Чтобы получить идентификатор объекта, можно использовать 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>
Дополнительные сведения см. в разделе Список определений ролей в Azure.
Шаг 3. Определение необходимой области
Azure предоставляет четыре уровня области: ресурс, группу ресурсов, подписку и группу управления. Рекомендуется предоставлять доступ с минимальными привилегиями, поэтому избегайте назначения роли в более широкой области. Дополнительные сведения об областях см. в разделе Понимание области.
Область ресурсов
Для области ресурсов необходим идентификатор этого ресурса. Идентификатор ресурса можно найти, просмотрев свойства ресурса на портале 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-5555-555555555555 и идентификатором приложения 66666666-6666-6666-6666-666666666666 на уровне ресурса для учетной записи хранения с именем 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-контейнера.
Назначается роль участника данных хранилища BLOB субъекту-службе с идентификатором объекта 55555555-5555-5555-5555-555555555555 и идентификатором приложения 66666666-6666-6666-6666-666666666666 в области ресурсов для контейнера 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
Назначение роли для группы в определенной области ресурсов виртуальной сети
Назначает группу "Pharma Sales Admins" с ролью участник по работе с виртуальными машинами и идентификатором 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
Назначение роли пользователю в масштабе группы ресурсов
Присваивает пользователю роль участника виртуальной машины в области группы ресурсов [email protected].
PS C:\> New-AzRoleAssignment -SignInName [email protected] `
-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 : [email protected]
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 [email protected] `
-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 : [email protected]
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId : 44444444-4444-4444-4444-444444444444
ObjectType : User
CanDelegate : False
Назначить роль пользователю, используя уникальный идентификатор роли в пределах группы ресурсов.
Существует несколько раз, когда имя роли может измениться, например:
- Вы используете собственную пользовательскую роль и решаете изменить имя.
- Вы используете роль, в названии которой указано (предварительный). Когда роль освобождается, её переименовывают.
Даже если роль переименована, идентификатор роли остается прежним. Если вы используете скрипты или автоматизацию для создания назначений ролей, рекомендуется использовать уникальный идентификатор роли вместо имени роли. Таким образом, если роль будет переименована, ваши скрипты с большей вероятностью будут работать.
В следующем примере роль Участника с правами управления виртуальными машинами назначается пользователю [email protected] на уровне группы ресурсов 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 : [email protected]
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
Назначьте роль пользователю на уровне подписки
Назначает пользователю роль [email protected] на уровне подписки.
PS C:\> New-AzRoleAssignment -SignInName [email protected] `
-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 : [email protected]
RoleDefinitionName : Reader
RoleDefinitionId : acdd72a7-3385-48ef-bd42-f606fba81ae7
ObjectId : 77777777-7777-7777-7777-777777777777
ObjectType : ServicePrincipal
CanDelegate : False
Назначить пользователю роль в области управления группой
Назначает пользователю роль [email protected] на уровне группы управления.
PS C:\> New-AzRoleAssignment -SignInName [email protected] `
-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 : [email protected]
RoleDefinitionName : Billing Reader
RoleDefinitionId : fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64
ObjectId : 44444444-4444-4444-4444-444444444444
ObjectType : User
CanDelegate : False