Создание или изменение настраиваемых ролей Azure с помощью Azure CLI
Если встроенные роли Azure не соответствуют потребностям вашей организации, вы можете создать собственные настраиваемые роли. В этой статье описывается, как выводить, создавать, обновлять или удалять настраиваемые роли при помощи Azure CLI.
Пошаговое руководство по созданию настраиваемой роли см. в статье Создание настраиваемых ролей Azure с помощью Azure CLI.
Необходимые компоненты
Для создания пользовательских ролей в Azure требуются:
- Разрешения на создание пользовательских ролей, таких как Администратор istrator для доступа пользователей
- Azure Cloud Shell или Azure CLI.
Вывод списка настраиваемых ролей
Чтобы получить список пользовательских ролей, доступных для назначения, используйте команду az role definition list. В следующих примерах приведены все настраиваемые роли в текущей подписке.
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"
}
]
Вывод определения настраиваемой роли
Чтобы вывести определение настраиваемой роли, используйте команду az role definition list. Эта команда является той же командой, что и для встроенной роли.
az role definition list --name {roleName}
В следующем примере приведено определение роли Оператор виртуальной машины:
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"
}
]
В следующем примере приведены только действия роли Оператор виртуальной машины:
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/*"
]
]
Создание пользовательской роли
Чтобы создать пользовательскую роль, используйте команду az role definition create. Определением роли может быть описание JSON или путь к файлу, содержащему описание JSON.
az role definition create --role-definition {roleDefinition}
В следующем примере показано создание пользовательской роли Оператор виртуальной машины. Эта пользовательская роль назначает доступ ко всем действиям чтения поставщиков ресурсов Microsoft.Compute, Microsoft.служба хранилища и Microsoft.Network и назначает доступ для запуска, перезапуска и мониторинга виртуальных машин. Эту настраиваемую роль можно использовать в двух подписках. В этом примере в качестве входных данных используется JSON-файл.
vmoperator.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
Обновление пользовательской роли
Чтобы обновить пользовательскую роль, сначала используйте команду az role definition list для получения определения роли. Затем внесите необходимые изменения в определение роли. И наконец, сохраните обновленное определение роли с помощью команды az role definition update.
az role definition update --role-definition {roleDefinition}
В следующем примере добавляется Microsoft.Аналитика/diagnostic Параметры/action to Actions
AssignableScopes
и добавляет группу управления для настраиваемой роли оператора виртуальной машины.
vmoperator.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
Удаление настраиваемой роли
Удалите все назначения ролей, использующие пользовательскую роль. Дополнительные сведения см. в разделе "Поиск назначений ролей" для удаления настраиваемой роли.
Используйте az role definition delete , чтобы удалить пользовательскую роль. Чтобы указать роль, которую необходимо удалить, используйте имя или идентификатор роли. Чтобы определить идентификатор роли, используйте команду az role definition list.
az role definition delete --name {roleNameOrId}
В следующем примере показано удаление пользовательской роли Оператор виртуальной машины.
az role definition delete --name "Virtual Machine Operator"