Руководство. Создание настраиваемой роли Azure с помощью Azure PowerShell
Если встроенные роли Azure не соответствуют потребностям вашей организации, вы можете создать собственные настраиваемые роли. С помощью этого руководства и Azure PowerShell вы создадите настраиваемую роль с именем "Запросы в службу поддержки от читателя". Она позволяет пользователю просматривать все объекты в плоскости управления подписки, а также делать запросы в службу поддержки.
В этом руководстве описано следующее:
- Создание пользовательской роли
- Вывод списка настраиваемых ролей
- Обновление пользовательской роли
- Удаление настраиваемой роли
Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure PowerShell". Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
Необходимые компоненты
Для выполнения этого руководства потребуется следующее:
- Разрешения на создание пользовательских ролей, таких как Администратор istrator для доступа пользователей
- Azure Cloud Shell или Azure PowerShell.
Вход в Azure PowerShell
Войдите в Azure PowerShell.
Создание пользовательской роли
Создать пользовательскую роль проще всего с помощью встроенной роли, в которую вы можете добавлять изменения для создания новой роли.
В PowerShell вы можете получить список операций, доступных поставщику ресурсов с помощью команды Get-AzProviderOperation. Полезно знать операции, которые доступны для создания разрешений. Список всех операций см. в статье Операции с поставщиками ресурсов Azure.
Get-AzProviderOperation "Microsoft.Support/*" | FT Operation, Description -AutoSize
Operation Description --------- ----------- Microsoft.Support/register/action Registers to Support Resource Provider Microsoft.Support/supportTickets/read Gets Support Ticket details (including status, severity, contact ... Microsoft.Support/supportTickets/write Creates or Updates a Support Ticket. You can create a Support Tic...
Используйте команду Get-AzRoleDefinition, чтобы отобразить роль Читатель в формате JSON.
Get-AzRoleDefinition -Name "Reader" | ConvertTo-Json | Out-File C:\CustomRoles\ReaderSupportRole.json
Откройте в редакторе файл ReaderSupportRole.json.
Ниже приведены выходные данные JSON. См. дополнительные сведения о различных свойствах настраиваемых ролей.
{ "Name": "Reader", "Id": "acdd72a7-3385-48ef-bd42-f606fba81ae7", "IsCustom": false, "Description": "Lets you view everything, but not make any changes.", "Actions": [ "*/read" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/" ] }
Измените файл JSON, добавив действие
"Microsoft.Support/*"
в свойствоActions
. Не забудьте включить запятую после действия чтения. Это действие разрешит пользователю создавать запросы в службу поддержки.Получите идентификатор подписки с помощью команды Get-AzSubscription.
Get-AzSubscription
В
AssignableScopes
добавьте свой идентификатор подписки в следующем формате:"/subscriptions/00000000-0000-0000-0000-000000000000"
Вам нужно добавить явные идентификаторы подписки, иначе вы не сможете импортировать роль в подписку.
Удалите строку свойства
Id
и измените свойствоIsCustom
наtrue
.Измените свойства
Name
иDescription
на "Запросы в службу поддержки от читателя" и "Просмотр всех объектов в подписке и создание запросов в службу поддержки".Файл JSON должен выглядеть примерно так:
{ "Name": "Reader Support Tickets", "IsCustom": true, "Description": "View everything in the subscription and also open support tickets.", "Actions": [ "*/read", "Microsoft.Support/*" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/00000000-0000-0000-0000-000000000000" ] }
Чтобы создать пользовательскую роль, используйте команду New-AzRoleDefinition и укажите файл определения роли JSON.
New-AzRoleDefinition -InputFile "C:\CustomRoles\ReaderSupportRole.json"
Name : Reader Support Tickets Id : 22222222-2222-2222-2222-222222222222 IsCustom : True Description : View everything in the subscription and also open support tickets. Actions : {*/read, Microsoft.Support/*} NotActions : {} DataActions : {} NotDataActions : {} AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000}
Новая пользовательская роль станет доступной на портале Azure. Ее можно назначать пользователям, группам или субъектам-службам, как и встроенные роли.
Вывод списка настраиваемых ролей
Получить список всех пользовательских ролей можно с помощью команды Get-AzRoleDefinition.
Get-AzRoleDefinition | ? {$_.IsCustom -eq $true} | FT Name, IsCustom
Name IsCustom ---- -------- Reader Support Tickets True
Пользовательскую роль также можно просмотреть на портале Azure.
Обновление пользовательской роли
Чтобы обновить пользовательскую роль, обновите файл JSON или используйте объект PSRoleDefinition
.
Используйте команду Get-AzRoleDefinition, чтобы обновить файл JSON и отобразить пользовательскую роль в формате JSON.
Get-AzRoleDefinition -Name "Reader Support Tickets" | ConvertTo-Json | Out-File C:\CustomRoles\ReaderSupportRole2.json
Откройте файл в редакторе.
В
Actions
добавьте действие для создания и администрирования развертываний группы ресурсов"Microsoft.Resources/deployments/*"
.Обновленный файл JSON должен выглядеть примерно так:
{ "Name": "Reader Support Tickets", "Id": "22222222-2222-2222-2222-222222222222", "IsCustom": true, "Description": "View everything in the subscription and also open support tickets.", "Actions": [ "*/read", "Microsoft.Support/*", "Microsoft.Resources/deployments/*" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/00000000-0000-0000-0000-000000000000" ] }
Чтобы обновить пользовательскую роль, используйте команду Set-AzRoleDefinition и укажите обновленный файл JSON.
Set-AzRoleDefinition -InputFile "C:\CustomRoles\ReaderSupportRole2.json"
Name : Reader Support Tickets Id : 22222222-2222-2222-2222-222222222222 IsCustom : True Description : View everything in the subscription and also open support tickets. Actions : {*/read, Microsoft.Support/*, Microsoft.Resources/deployments/*} NotActions : {} DataActions : {} NotDataActions : {} AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000}
Чтобы с помощью объекта
PSRoleDefintion
обновить пользовательскую роль, сначала получите эту роль, используя команду Get-AzRoleDefinition.$role = Get-AzRoleDefinition "Reader Support Tickets"
Вызовите метод
Add
, чтобы добавить действие для чтения параметров диагностики.$role.Actions.Add("Microsoft.Insights/diagnosticSettings/*/read")
Обновите роль с помощью команды Set-AzRoleDefinition.
Set-AzRoleDefinition -Role $role
Name : Reader Support Tickets Id : 22222222-2222-2222-2222-222222222222 IsCustom : True Description : View everything in the subscription and also open support tickets. Actions : {*/read, Microsoft.Support/*, Microsoft.Resources/deployments/*, Microsoft.Insights/diagnosticSettings/*/read} NotActions : {} DataActions : {} NotDataActions : {} AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000}
Удаление настраиваемой роли
Получите идентификатор пользовательской роли с помощью команды Get-AzRoleDefinition.
Get-AzRoleDefinition "Reader Support Tickets"
Укажите идентификатор пользовательской роли, чтобы удалить пользовательскую роль, с помощью команды Remove-AzRoleDefinition.
Remove-AzRoleDefinition -Id "22222222-2222-2222-2222-222222222222"
Confirm Are you sure you want to remove role definition with id '22222222-2222-2222-2222-222222222222'. [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):
В запросе на подтверждение выберите Да.