Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если встроенные роли Azure не соответствуют потребностям вашей организации, вы можете создать собственные настраиваемые роли. В этой статье описывается, как перечислять, создавать, обновлять или удалять пользовательские роли с помощью Azure PowerShell.
Пошаговое руководство по созданию настраиваемой роли см. в руководстве по созданию настраиваемой роли Azure с помощью Azure PowerShell.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure PowerShell". Чтобы узнать, как осуществить переход на модуль Az PowerShell, см. статью Перенос Azure PowerShell с AzureRM на Az.
Предпосылки
Для создания пользовательских ролей в Azure требуются:
- Разрешения для создания пользовательских ролей, таких как администратор доступа пользователей
- Azure Cloud Shell или Azure PowerShell.
Список настраиваемых ролей
Чтобы вывести список ролей, доступных для назначения в области, используйте команду Get-AzRoleDefinition. В следующем примере перечислены все роли, доступные для назначения в выбранной подписке.
Get-AzRoleDefinition | FT Name, IsCustom
Name IsCustom
---- --------
Virtual Machine Operator True
AcrImageSigner False
AcrQuarantineReader False
AcrQuarantineWriter False
API Management Service Contributor False
...
В следующем примере перечислены только пользовательские роли, доступные для назначения в выбранной подписке.
Get-AzRoleDefinition -Custom | FT Name, IsCustom
Name IsCustom
---- --------
Virtual Machine Operator True
Если выбранная подписка не включена в AssignableScopes
роль, пользовательская роль не будет указана.
Перечислите определение настраиваемой роли
Чтобы вывести список настраиваемых определений ролей, используйте Get-AzRoleDefinition. Это та же команда, что и для встроенной роли.
Get-AzRoleDefinition <role_name> | ConvertTo-Json
PS C:\> Get-AzRoleDefinition "Virtual Machine Operator" | ConvertTo-Json
{
"Name": "Virtual Machine Operator",
"Id": "00000000-0000-0000-0000-000000000000",
"IsCustom": true,
"Description": "Can monitor and restart virtual machines.",
"Actions": [
"Microsoft.Storage/*/read",
"Microsoft.Network/*/read",
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Authorization/*/read",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Insights/alertRules/*",
"Microsoft.Support/*"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/11111111-1111-1111-1111-111111111111"
]
}
В следующем примере перечислены только действия роли:
(Get-AzRoleDefinition <role_name>).Actions
PS C:\> (Get-AzRoleDefinition "Virtual Machine Operator").Actions
"Microsoft.Storage/*/read",
"Microsoft.Network/*/read",
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Authorization/*/read",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Insights/alertRules/*",
"Microsoft.Insights/diagnosticSettings/*",
"Microsoft.Support/*"
Создание настраиваемой роли
Чтобы создать пользовательскую роль, используйте команду New-AzRoleDefinition . Существует два метода структурирования роли, используя PSRoleDefinition
объект или шаблон JSON.
Получение операций для поставщика ресурсов
При создании настраиваемых ролей важно знать все возможные операции ресурсных поставщиков. Список операций поставщика ресурсов можно просмотреть или использовать команду Get-AzProviderOperation для получения этих сведений. Например, если вы хотите проверить все доступные операции для виртуальных машин, используйте следующую команду:
Get-AzProviderOperation <operation> | FT OperationName, Operation, Description -AutoSize
PS C:\> Get-AzProviderOperation "Microsoft.Compute/virtualMachines/*" | FT OperationName, Operation, Description -AutoSize
OperationName Operation Description
------------- --------- -----------
Get Virtual Machine Microsoft.Compute/virtualMachines/read Get the propertie...
Create or Update Virtual Machine Microsoft.Compute/virtualMachines/write Creates a new vir...
Delete Virtual Machine Microsoft.Compute/virtualMachines/delete Deletes the virtu...
Start Virtual Machine Microsoft.Compute/virtualMachines/start/action Starts the virtua...
...
Создание настраиваемой роли с помощью объекта PSRoleDefinition
При использовании PowerShell для создания настраиваемой роли можно использовать одну из встроенных ролей в качестве отправной точки или начать с нуля. Первый пример в этом разделе начинается со встроенной роли, а затем настраивает ее с дополнительными разрешениями. Измените атрибуты для добавления Actions
или NotActions
AssignableScopes
нужного значения, а затем сохраните изменения в качестве новой роли.
В следующем примере мы начинаем с встроенной роли Virtual Machine Contributor, чтобы создать настраиваемую роль с именем Virtual Machine Operator. Новая роль предоставляет доступ ко всем действиям чтения поставщиков ресурсов Microsoft.Compute, Microsoft.Storage и Microsoft.Network и предоставляет доступ к запуску, перезапуску и мониторингу виртуальных машин. Пользовательская роль может использоваться в двух подписках.
$role = Get-AzRoleDefinition "Virtual Machine Contributor"
$role.Id = $null
$role.Name = "Virtual Machine Operator"
$role.Description = "Can monitor and restart virtual machines."
$role.Actions.Clear()
$role.Actions.Add("Microsoft.Storage/*/read")
$role.Actions.Add("Microsoft.Network/*/read")
$role.Actions.Add("Microsoft.Compute/*/read")
$role.Actions.Add("Microsoft.Compute/virtualMachines/start/action")
$role.Actions.Add("Microsoft.Compute/virtualMachines/restart/action")
$role.Actions.Add("Microsoft.Authorization/*/read")
$role.Actions.Add("Microsoft.ResourceHealth/availabilityStatuses/read")
$role.Actions.Add("Microsoft.Resources/subscriptions/resourceGroups/read")
$role.Actions.Add("Microsoft.Insights/alertRules/*")
$role.Actions.Add("Microsoft.Support/*")
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/00000000-0000-0000-0000-000000000000")
$role.AssignableScopes.Add("/subscriptions/11111111-1111-1111-1111-111111111111")
New-AzRoleDefinition -Role $role
В следующем примере показано, как создать пользовательскую роль оператора виртуальной машины . Он начинается с создания нового PSRoleDefinition
объекта. Действия указываются в переменной perms
и задаются свойством Actions
. Свойство NotActions
задается путем чтения NotActions
из встроенной роли Virtual Machine Contributor. Так как Virtual Machine Contributor не имеет NotActions
, эта строка не требуется, но она показывает, как можно получить информацию из другой роли.
$role = [Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition]::new()
$role.Name = 'Virtual Machine Operator 2'
$role.Description = 'Can monitor and restart virtual machines.'
$role.IsCustom = $true
$perms = 'Microsoft.Storage/*/read','Microsoft.Network/*/read','Microsoft.Compute/*/read'
$perms += 'Microsoft.Compute/virtualMachines/start/action','Microsoft.Compute/virtualMachines/restart/action'
$perms += 'Microsoft.Authorization/*/read'
$perms += 'Microsoft.ResourceHealth/availabilityStatuses/read'
$perms += 'Microsoft.Resources/subscriptions/resourceGroups/read'
$perms += 'Microsoft.Insights/alertRules/*','Microsoft.Support/*'
$role.Actions = $perms
$role.NotActions = (Get-AzRoleDefinition -Name 'Virtual Machine Contributor').NotActions
$subs = '/subscriptions/00000000-0000-0000-0000-000000000000','/subscriptions/11111111-1111-1111-1111-111111111111'
$role.AssignableScopes = $subs
New-AzRoleDefinition -Role $role
Создание настраиваемой роли с помощью шаблона JSON
Шаблон JSON можно использовать в качестве определения источника для пользовательской роли. В следующем примере создается пользовательская роль, которая позволяет читать доступ к хранилищу и вычислительным ресурсам, получать доступ к поддержке и добавлять эту роль в две подписки. Создайте файл C:\CustomRoles\customrole1.json
со следующим примером. Идентификатор должен быть задан null
при первоначальном создании роли, так как новый идентификатор создается автоматически.
{
"Name": "Custom Role 1",
"Id": null,
"IsCustom": true,
"Description": "Allows for read access to Azure storage and compute resources and access to support",
"Actions": [
"Microsoft.Compute/*/read",
"Microsoft.Storage/*/read",
"Microsoft.Support/*"
],
"NotActions": [],
"AssignableScopes": [
"/subscriptions/00000000-0000-0000-0000-000000000000",
"/subscriptions/11111111-1111-1111-1111-111111111111"
]
}
Чтобы добавить роль в подписки, выполните следующую команду PowerShell:
New-AzRoleDefinition -InputFile "C:\CustomRoles\customrole1.json"
Обновление настраиваемой роли
Аналогично созданию настраиваемой роли, можно изменить существующую пользовательскую роль с помощью PSRoleDefinition
объекта или шаблона JSON.
Обновление пользовательской роли с помощью объекта PSRoleDefinition
Чтобы изменить пользовательскую роль, сначала используйте команду Get-AzRoleDefinition для получения определения роли. Во-вторых, внесите необходимые изменения в определение роли. Наконец, используйте команду Set-AzRoleDefinition , чтобы сохранить измененное определение роли.
В следующем примере действие Microsoft.Insights/diagnosticSettings/*
добавляется в пользовательскую роль Оператора виртуальной машины.
$role = Get-AzRoleDefinition "Virtual Machine Operator"
$role.Actions.Add("Microsoft.Insights/diagnosticSettings/*")
Set-AzRoleDefinition -Role $role
PS C:\> $role = Get-AzRoleDefinition "Virtual Machine Operator"
PS C:\> $role.Actions.Add("Microsoft.Insights/diagnosticSettings/*")
PS C:\> Set-AzRoleDefinition -Role $role
Name : Virtual Machine Operator
Id : 88888888-8888-8888-8888-888888888888
IsCustom : True
Description : Can monitor and restart virtual machines.
Actions : {Microsoft.Storage/*/read, Microsoft.Network/*/read, Microsoft.Compute/*/read,
Microsoft.Compute/virtualMachines/start/action...}
NotActions : {}
AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000,
/subscriptions/11111111-1111-1111-1111-111111111111}
В следующем примере добавляется подписка Azure на назначенные области настраиваемой роли оператора виртуальной машины .
Get-AzSubscription -SubscriptionName Production3
$role = Get-AzRoleDefinition "Virtual Machine Operator"
$role.AssignableScopes.Add("/subscriptions/22222222-2222-2222-2222-222222222222")
Set-AzRoleDefinition -Role $role
PS C:\> Get-AzSubscription -SubscriptionName Production3
Name : Production3
Id : 22222222-2222-2222-2222-222222222222
TenantId : 99999999-9999-9999-9999-999999999999
State : Enabled
PS C:\> $role = Get-AzRoleDefinition "Virtual Machine Operator"
PS C:\> $role.AssignableScopes.Add("/subscriptions/22222222-2222-2222-2222-222222222222")
PS C:\> Set-AzRoleDefinition -Role $role
Name : Virtual Machine Operator
Id : 88888888-8888-8888-8888-888888888888
IsCustom : True
Description : Can monitor and restart virtual machines.
Actions : {Microsoft.Storage/*/read, Microsoft.Network/*/read, Microsoft.Compute/*/read,
Microsoft.Compute/virtualMachines/start/action...}
NotActions : {}
AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000,
/subscriptions/11111111-1111-1111-1111-111111111111,
/subscriptions/22222222-2222-2222-2222-222222222222}
В следующем примере группа управления добавляется к настраиваемой роли оператора виртуальной машины AssignableScopes
.
Get-AzManagementGroup
$role = Get-AzRoleDefinition "Virtual Machine Operator"
$role.AssignableScopes.Add("/providers/Microsoft.Management/managementGroups/{groupId1}")
Set-AzRoleDefinition -Role $role
PS C:\> Get-AzManagementGroup
Id : /providers/Microsoft.Management/managementGroups/marketing-group
Type : /providers/Microsoft.Management/managementGroups
Name : marketing-group
TenantId : 99999999-9999-9999-9999-999999999999
DisplayName : Marketing group
PS C:\> $role = Get-AzRoleDefinition "Virtual Machine Operator"
PS C:\> $role.AssignableScopes.Add("/providers/Microsoft.Management/managementGroups/marketing-group")
PS C:\> Set-AzRoleDefinition -Role $role
Name : Virtual Machine Operator
Id : 88888888-8888-8888-8888-888888888888
IsCustom : True
Description : Can monitor and restart virtual machines.
Actions : {Microsoft.Storage/*/read, Microsoft.Network/*/read, Microsoft.Compute/*/read,
Microsoft.Compute/virtualMachines/start/action...}
NotActions : {}
AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000,
/subscriptions/11111111-1111-1111-1111-111111111111,
/subscriptions/22222222-2222-2222-2222-222222222222,
/providers/Microsoft.Management/managementGroups/marketing-group}
Обновление настраиваемой роли с помощью шаблона JSON
С помощью предыдущего шаблона JSON можно легко изменить существующую пользовательскую роль для добавления или удаления действий. Обновите шаблон JSON и добавьте действие чтения для сети, как показано в следующем примере. Определения, перечисленные в шаблоне, не применяются к существующему определению, что означает, что роль отображается точно так же, как указано в шаблоне. Кроме того, необходимо обновить поле идентификатора с идентификатором роли. Если вы не знаете, что такое значение, можно использовать командлет Get-AzRoleDefinition для получения этих сведений.
{
"Name": "Custom Role 1",
"Id": "acce7ded-2559-449d-bcd5-e9604e50bad1",
"IsCustom": true,
"Description": "Allows for read access to Azure storage and compute resources and access to support",
"Actions": [
"Microsoft.Compute/*/read",
"Microsoft.Storage/*/read",
"Microsoft.Network/*/read",
"Microsoft.Support/*"
],
"NotActions": [],
"AssignableScopes": [
"/subscriptions/00000000-0000-0000-0000-000000000000",
"/subscriptions/11111111-1111-1111-1111-111111111111"
]
}
Чтобы обновить существующую роль, выполните следующую команду PowerShell:
Set-AzRoleDefinition -InputFile "C:\CustomRoles\customrole1.json"
Удаление настраиваемой роли
Удалите все назначения ролей, использующие пользовательскую роль. Дополнительные сведения см. в разделе "Поиск назначений ролей" для удаления настраиваемой роли.
Используйте команду Remove-AzRoleDefinition для удаления настраиваемой роли.
В следующем примере удаляется пользовательская роль оператора виртуальной машины .
Get-AzRoleDefinition "Virtual Machine Operator" Get-AzRoleDefinition "Virtual Machine Operator" | Remove-AzRoleDefinition
PS C:\> Get-AzRoleDefinition "Virtual Machine Operator" Name : Virtual Machine Operator Id : 88888888-8888-8888-8888-888888888888 IsCustom : True Description : Can monitor and restart virtual machines. Actions : {Microsoft.Storage/*/read, Microsoft.Network/*/read, Microsoft.Compute/*/read, Microsoft.Compute/virtualMachines/start/action...} NotActions : {} AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000, /subscriptions/11111111-1111-1111-1111-111111111111} PS C:\> Get-AzRoleDefinition "Virtual Machine Operator" | Remove-AzRoleDefinition Confirm Are you sure you want to remove role definition with name 'Virtual Machine Operator'. [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y