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

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

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

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

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

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

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

Вход в Azure CLI

Войдите в Azure CLI.

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

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

  1. Просмотрите список действий для поставщика ресурсов Microsoft.Support. Полезно знать, какие действия доступны для создания разрешений.

    Действие Description
    Microsoft.Support/register/action Выполняет регистрацию в поставщике ресурсов поддержки.
    Microsoft.Support/supportTickets/read Возвращает подробные сведения о запросе в службу поддержки (включая состояние, серьезность, контактную информацию и сообщения) или возвращает список запросов в службу поддержки в подписках.
    Microsoft.Support/supportTickets/write Создает или обновляет запрос в службу поддержки. Можно создавать запросы в службу поддержки по техническим проблемам, а также проблемам, связанным с выставлением счетов, квотами или управлением подписками. Вы можете изменить уровень серьезности, контактную информацию и сообщения для существующих запросов в службу поддержки.
  2. Создайте файл с именем ReaderSupportRole.json.

  3. Откройте роль ReaderSupportRole.json в редакторе и добавьте приведенный ниже код JSON.

    См. дополнительные сведения о различных свойствах настраиваемых ролей.

    {
      "Name": "",
      "IsCustom": true,
      "Description": "",
      "Actions": [],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/subscriptions/{subscriptionId1}"
      ]
    }
    
  4. Добавьте следующие действия в свойство Actions. Эти действия позволяют пользователю просматривать все объекты в подписке, а также создавать запросы в службу поддержки.

    "*/read",
    "Microsoft.Support/*"
    
  5. Получите идентификатор подписки с помощью команды az account list.

    az account list --output table
    
  6. В AssignableScopes замените {subscriptionId1} идентификатором своей подписки.

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

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

    az role definition create --role-definition "~/CustomRoles/ReaderSupportRole.json"
    
    {
      "additionalProperties": {},
      "assignableScopes": [
        "/subscriptions/00000000-0000-0000-0000-000000000000"
      ],
      "description": "View everything in the subscription and also open support tickets.",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/22222222-2222-2222-2222-222222222222",
      "name": "22222222-2222-2222-2222-222222222222",
      "permissions": [
        {
          "actions": [
            "*/read",
            "Microsoft.Support/*"
          ],
          "additionalProperties": {},
          "dataActions": [],
          "notActions": [],
          "notDataActions": []
        }
      ],
      "roleName": "Reader Support Tickets",
      "roleType": "CustomRole",
      "type": "Microsoft.Authorization/roleDefinitions"
    }
    

    Новая пользовательская роль станет доступной на портале Azure. Ее можно назначать пользователям, группам или субъектам-службам, так же как и встроенные роли.

Вывод списка настраиваемых ролей

  • Получить список всех пользовательских ролей можно с помощью команды az role definition list с параметром --custom-role-only.

    az role definition list --custom-role-only true
    
    [
      {
        "additionalProperties": {},
        "assignableScopes": [
          "/subscriptions/00000000-0000-0000-0000-000000000000"
        ],
        "description": "View everything in the subscription and also open support tickets.",
        "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/22222222-2222-2222-2222-222222222222",
        "name": "22222222-2222-2222-2222-222222222222",
        "permissions": [
          {
            "actions": [
              "*/read",
              "Microsoft.Support/*",
              "Microsoft.Resources/deployments/*",
              "Microsoft.Insights/diagnosticSettings/*/read"
            ],
            "additionalProperties": {},
            "dataActions": [],
            "notActions": [],
            "notDataActions": []
          }
        ],
        "roleName": "Reader Support Tickets",
        "roleType": "CustomRole",
        "type": "Microsoft.Authorization/roleDefinitions"
      }
    ]
    

    Пользовательскую роль также можно просмотреть на портале Azure.

    screenshot of custom role imported in the Azure portal

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

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

  1. Откройте файл ReaderSupportRole.json.

  2. В Actions добавьте действие для создания и администрирования развертываний группы ресурсов "Microsoft.Resources/deployments/*". Не забудьте добавить запятую после предыдущего действия.

    Обновленный файл JSON должен выглядеть примерно так:

    {
      "Name": "Reader Support Tickets",
      "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"
      ]
    }
    
  3. Чтобы обновить пользовательскую роль, используйте команду az role definition update и укажите обновленный файл JSON.

    az role definition update --role-definition "~/CustomRoles/ReaderSupportRole.json"
    
    {
      "additionalProperties": {},
      "assignableScopes": [
        "/subscriptions/00000000-0000-0000-0000-000000000000"
      ],
      "description": "View everything in the subscription and also open support tickets.",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/22222222-2222-2222-2222-222222222222",
      "name": "22222222-2222-2222-2222-222222222222",
      "permissions": [
        {
          "actions": [
            "*/read",
            "Microsoft.Support/*",
            "Microsoft.Resources/deployments/*"
          ],
          "additionalProperties": {},
          "dataActions": [],
          "notActions": [],
          "notDataActions": []
        }
      ],
      "roleName": "Reader Support Tickets",
      "roleType": "CustomRole",
      "type": "Microsoft.Authorization/roleDefinitions"
    }
    

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

  • Используйте команду az role definition delete и укажите имя или идентификатор роли для удаления пользовательской роли.

    az role definition delete --name "Reader Support Tickets"
    

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