Создание или изменение настраиваемых ролей Azure с помощью Azure CLICreate or update Azure custom roles using Azure CLI

Важно!

В настоящее время добавление группы управления в AssignableScopes доступно в режиме предварительной версии.Adding a management group to AssignableScopes is currently in preview. Эта предварительная версия предоставляется без соглашения об уровне обслуживания и не рекомендована для использования рабочей среде.This preview version is provided without a service level agreement, and it's not recommended for production workloads. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены.Certain features might not be supported or might have constrained capabilities. Дополнительные сведения см. в статье Дополнительные условия использования предварительных выпусков Microsoft Azure.For more information, see Supplemental Terms of Use for Microsoft Azure Previews.

Если встроенные роли Azure не соответствуют потребностям вашей организации, вы можете создать собственные настраиваемые роли.If the Azure built-in roles don't meet the specific needs of your organization, you can create your own custom roles. В этой статье описывается, как получить список, создать, обновить или удалить пользовательские роли с помощью Azure CLI.This article describes how to list, create, update, or delete custom roles using Azure CLI.

Пошаговое руководство по созданию настраиваемой роли см. в разделе учебник. Создание настраиваемой роли Azure с помощью Azure CLI.For a step-by-step tutorial on how to create a custom role, see Tutorial: Create an Azure custom role using Azure CLI.

Предварительные условияPrerequisites

Для создания пользовательских ролей в Azure требуются:To create custom roles, you need:

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

Чтобы получить список пользовательских ролей, доступных для назначения, используйте команду az role definition list.To list custom roles that are available for assignment, use az role definition list. В следующем примере перечисляются все пользовательские роли в текущей подписке.The following example lists all the custom roles in the current subscription.

az role definition list --custom-role-only true --output json --query '[].{roleName:roleName, roleType:roleType}'
[
  {
    "roleName": "My Management Contributor",
    "type": "CustomRole"
  },
  {
    "roleName": "My Service Reader Role",
    "type": "CustomRole"
  },
  {
    "roleName": "Virtual Machine Operator",
    "type": "CustomRole"
  }
]

Вывод определения пользовательской ролиList a custom role definition

Чтобы получить список пользовательских определений ролей, используйте команду AZ Role Definition List.To list a custom role definition, use az role definition list. Это та же команда, которая используется для встроенной роли.This is the same command you would use for a built-in role.

az role definition list --name {roleName}

В следующем примере показано определение роли оператора виртуальной машины :The following example lists the Virtual Machine Operator role definition:

az role definition list --name "Virtual Machine Operator"
[
  {
    "assignableScopes": [
      "/subscriptions/{subscriptionId}"
    ],
    "description": "Can monitor and restart virtual machines.",
    "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
    "name": "00000000-0000-0000-0000-000000000000",
    "permissions": [
      {
        "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/*"
        ],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "Virtual Machine Operator",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

В следующем примере перечисляются только действия роли оператора виртуальной машины :The following example lists just the actions of the Virtual Machine Operator role:

az role definition list --name "Virtual Machine Operator" --output json --query '[].permissions[0].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/*"
  ]
]

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

Чтобы создать пользовательскую роль, используйте команду az role definition create.To create a custom role, use az role definition create. Определением роли может быть описание JSON или путь к файлу, содержащему описание JSON.The role definition can be a JSON description or a path to a file containing a JSON description.

az role definition create --role-definition {roleDefinition}

В следующем примере показано создание пользовательской роли Оператор виртуальной машины.The following example creates a custom role named Virtual Machine Operator. Пользовательская роль предоставляет доступ ко всем операциям чтения поставщиков ресурсов Microsoft.Compute, Microsoft.Storage и Microsoft.Network, а также доступ для запуска, перезапуска и мониторинга виртуальных машин.This custom role assigns access to all read operations of Microsoft.Compute, Microsoft.Storage, and Microsoft.Network resource providers and assigns access to start, restart, and monitor virtual machines. Эту настраиваемую роль можно использовать в двух подписках.This custom role can be used in two subscriptions. В этом примере в качестве входных данных используется JSON-файл.This example uses a JSON file as an input.

vmoperator.jsonvmoperator.json

{
  "Name": "Virtual Machine Operator",
  "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": [

  ],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}"
  ]
}
az role definition create --role-definition ~/roles/vmoperator.json

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

Чтобы обновить пользовательскую роль, сначала используйте команду az role definition list для получения определения роли.To update a custom role, first use az role definition list to retrieve the role definition. Затем внесите необходимые изменения в определение роли.Second, make the desired changes to the role definition. И наконец, сохраните обновленное определение роли с помощью команды az role definition update.Finally, use az role definition update to save the updated role definition.

az role definition update --role-definition {roleDefinition}

В следующем примере добавляется операция Microsoft. Insights/diagnosticSettings/ , которая Actions добавляет группу управления в AssignableScopes для настраиваемой роли оператора виртуальной машины .The following example adds the Microsoft.Insights/diagnosticSettings/ operation to Actions and adds a management group to AssignableScopes for the Virtual Machine Operator custom role. В настоящее время добавление группы управления в AssignableScopes доступно в режиме предварительной версии.Adding a management group to AssignableScopes is currently in preview.

vmoperator.jsonvmoperator.json

{
  "Name": "Virtual Machine Operator",
  "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.Insights/diagnosticSettings/*",
    "Microsoft.Support/*"
  ],
  "NotActions": [

  ],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}",
    "/providers/Microsoft.Management/managementGroups/marketing-group"
  ]
}
az role definition update --role-definition ~/roles/vmoperator.json

Удаление настраиваемой ролиDelete a custom role

Чтобы удалить пользовательскую роль, используйте команду az role definition delete.To delete a custom role, use az role definition delete. Чтобы указать роль, которую необходимо удалить, используйте имя или идентификатор роли.To specify the role to delete, use the role name or the role ID. Чтобы определить идентификатор роли, используйте команду az role definition list.To determine the role ID, use az role definition list.

az role definition delete --name {roleNameOrId}

В следующем примере показано удаление пользовательской роли Оператор виртуальной машины.The following example deletes the Virtual Machine Operator custom role.

az role definition delete --name "Virtual Machine Operator"

Дальнейшие действияNext steps