Руководство. Создание настраиваемой роли Azure с помощью Azure PowerShell

Если встроенные роли Azure не соответствуют потребностям вашей организации, вы можете создать собственные настраиваемые роли. С помощью этого руководства и Azure PowerShell вы создадите настраиваемую роль с именем "Запросы в службу поддержки от читателя". Она позволяет пользователю просматривать все объекты в плоскости управления подписки, а также делать запросы в службу поддержки.

В этом руководстве описано следующее:

  • Создание пользовательской роли
  • Вывод списка настраиваемых ролей
  • Обновление пользовательской роли
  • Удаление настраиваемой роли

Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

Примечание.

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

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

Для выполнения этого руководства потребуется следующее:

Вход в Azure PowerShell

Войдите в Azure PowerShell.

Создание пользовательской роли

Создать пользовательскую роль проще всего с помощью встроенной роли, в которую вы можете добавлять изменения для создания новой роли.

  1. В 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...
    
  2. Используйте команду Get-AzRoleDefinition, чтобы отобразить роль Читатель в формате JSON.

    Get-AzRoleDefinition -Name "Reader" | ConvertTo-Json | Out-File C:\CustomRoles\ReaderSupportRole.json
    
  3. Откройте в редакторе файл 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": [
        "/"
      ]
    }
    
  4. Измените файл JSON, добавив действие "Microsoft.Support/*" в свойство Actions. Не забудьте включить запятую после действия чтения. Это действие разрешит пользователю создавать запросы в службу поддержки.

  5. Получите идентификатор подписки с помощью команды Get-AzSubscription.

    Get-AzSubscription
    
  6. В AssignableScopes добавьте свой идентификатор подписки в следующем формате: "/subscriptions/00000000-0000-0000-0000-000000000000"

    Вам нужно добавить явные идентификаторы подписки, иначе вы не сможете импортировать роль в подписку.

  7. Удалите строку свойства Id и измените свойство IsCustom на true.

  8. Измените свойства 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"
      ]
    }
    
  9. Чтобы создать пользовательскую роль, используйте команду 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.

    screenshot of custom role imported in the Azure portal

Обновление пользовательской роли

Чтобы обновить пользовательскую роль, обновите файл JSON или используйте объект PSRoleDefinition.

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

    Get-AzRoleDefinition -Name "Reader Support Tickets" | ConvertTo-Json | Out-File C:\CustomRoles\ReaderSupportRole2.json
    
  2. Откройте файл в редакторе.

  3. В 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"
      ]
    }
    
  4. Чтобы обновить пользовательскую роль, используйте команду 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}
    
  5. Чтобы с помощью объекта PSRoleDefintion обновить пользовательскую роль, сначала получите эту роль, используя команду Get-AzRoleDefinition.

    $role = Get-AzRoleDefinition "Reader Support Tickets"
    
  6. Вызовите метод Add, чтобы добавить действие для чтения параметров диагностики.

    $role.Actions.Add("Microsoft.Insights/diagnosticSettings/*/read")
    
  7. Обновите роль с помощью команды 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}
    

Удаление настраиваемой роли

  1. Получите идентификатор пользовательской роли с помощью команды Get-AzRoleDefinition.

    Get-AzRoleDefinition "Reader Support Tickets"
    
  2. Укажите идентификатор пользовательской роли, чтобы удалить пользовательскую роль, с помощью команды 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"):
    
  3. В запросе на подтверждение выберите Да.

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