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

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

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

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

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

Примечание.

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

Предварительные требования

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

Вход в Azure PowerShell

Войдите в Azure PowerShell.

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

Проще всего создать пользовательскую роль, взяв за основу встроенную роль, отредактировав её, а затем создав новую роль.

  1. В PowerShell используйте команду Get-AzProviderOperation, чтобы получить список операций для поставщика ресурсов Microsoft.Support. Полезно знать операции, которые доступны для создания разрешений. Список всех операций см. в статье Операции с поставщиками ресурсов 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. Дополнительные сведения о различных свойствах см. в пользовательских ролях Azure.

    {
      "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.

    Снимок экрана пользовательской роли, импортированной на портал Azure

Обновить настраиваемую роль

Чтобы обновить пользовательскую роль, обновите файл 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. Чтобы с помощью объекта PSRoleDefinition обновить пользовательскую роль, сначала получите эту роль, используя команду 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. В запросе на подтверждение выберите Да.

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