Что такое настраиваемые роли в Azure?
Иногда встроенные роли не предоставляют точный уровень доступа. С помощью настраиваемых ролей можно определять роли, соответствующие конкретным потребностям организации. Настраиваемые роли Azure, созданные для пользователей, групп и субъектов-служб, можно назначить в области подписки, группы ресурсов или отдельного ресурса.
В этом уроке вы узнаете о пользовательских ролях в управлении доступом на основе ролей Azure (RBAC).
Роли Microsoft Entra и Azure
Роли Microsoft Entra и роли Azure часто путаются при первой работе с Azure. Роли Microsoft Entra предоставляют механизм управления разрешениями для ресурсов Microsoft Entra, таких как учетные записи пользователей и пароли. Роли Azure предоставляют множество возможностей для управления ресурсами Azure, такими как виртуальные машины (VM), на детальном уровне.
В следующей таблице показаны тонкие различия между настройкой и управлением двумя способами:
Роли в Azure | Роли Microsoft Entra |
---|---|
Управление доступом к ресурсам Azure, таким как виртуальные машины, хранилище, сети и многое другое | Управление доступом к ресурсам Microsoft Entra, таким как учетные записи пользователей и пароли |
Несколько уровней области (группа управления, подписка, группа ресурсов, отдельный ресурс) | Область только на уровне клиента |
Сведения о ролях, доступные через портал Azure, Azure CLI, Azure PowerShell, шаблоны Azure Resource Manager, REST API | Сведения о роли, доступные на портале администрирования Azure, Центр администрирования Microsoft 365, Microsoft Graph, Microsoft Graph PowerShell |
Для нашего сценария нам нужна настраиваемая роль для управления виртуальными машинами Azure в области подписки, поэтому нам нужно использовать пользовательские роли в Azure RBAC.
Назначение настраиваемых ролей и определение их области
Пользователи с ролями администратора доступа пользователей или владельца могут создавать или назначать пользовательские роли в Azure RBAC.
Пользовательские роли можно назначить следующим:
Субъект безопасности | Итоги |
---|---|
Пользователь | Отдельный пользователь, имеющий профиль в идентификаторе Microsoft Entra |
Групповое | Набор пользователей, созданных в идентификаторе Microsoft Entra |
Субъекты-службы | Удостоверение безопасности, используемое приложениями или службами для доступа к определенным ресурсам Azure |
Управляемое удостоверение | Удостоверение в идентификаторе Microsoft Entra, которое автоматически управляется Azure |
Можно ограничить назначение и связанные разрешения различными уровнями в Azure. Ниже перечислены различные области:
- Подписка
- Группа ресурсов
- Отдельный ресурс
Определение и структура роли
Определение настраиваемой роли разделяется на коллекцию различных разрешений. В определении перечисляются операции, которые разрешено выполнять, например чтение, запись и удаление. Определение формируется с использованием следующих структур:
{
"Name": "",
"IsCustom": true,
"Description": "",
"Actions": [],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionId1}"
]
}
В следующем примере показано определение роли для роли участника :
{
"Name": "Contributor",
"Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
"IsCustom": false,
"Description": "Lets you manage everything except access to resources.",
"Actions": [
"*"
],
"NotActions": [
"Microsoft.Authorization/*/Delete",
"Microsoft.Authorization/*/Write",
"Microsoft.Authorization/elevateAccess/Action",
"Microsoft.Blueprint/blueprintAssignments/write",
"Microsoft.Blueprint/blueprintAssignments/delete"
],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/"
]
}
Все определения ролей объявляются в следующем формате:
{Company}.{ProviderName}/{resourceType}/{action}
В части "action" обычно используется одно из следующих действий:
- *
- чтение
- запись
- действие
- удалить
Определение настраиваемой роли для управления виртуальными машинами
Чтобы определить, какие разрешения следует включить в определение роли, используйте список операций поставщика ресурсов Azure Resource Manager и просмотрите встроенные роли Azure, имеющие разрешения, аналогичные тем, которые требуются.
Просмотр встроенных ролей
В нашем сценарии встроенная роль участника виртуальной машины имеет больше разрешений, чем требуется сотрудникам, а имя входа администратора виртуальной машины недостаточно.
Следующая команда Azure CLI возвращает разрешения для встроенного участника виртуальной машины:
az role definition list --name "Virtual Machine Contributor" --output json | jq '.[] | .permissions[0].actions'
В следующем списке отображаются разрешения для встроенного участника виртуальной машины:
[
"Microsoft.Authorization/*/read",
"Microsoft.Compute/availabilitySets/*",
"Microsoft.Compute/locations/*",
"Microsoft.Compute/virtualMachines/*",
"Microsoft.Compute/virtualMachineScaleSets/*",
"Microsoft.DevTestLab/schedules/*",
"Microsoft.Insights/alertRules/*",
"Microsoft.Network/applicationGateways/backendAddressPools/join/action",
"Microsoft.Network/loadBalancers/backendAddressPools/join/action",
"Microsoft.Network/loadBalancers/inboundNatPools/join/action",
"Microsoft.Network/loadBalancers/inboundNatRules/join/action",
"Microsoft.Network/loadBalancers/probes/join/action",
"Microsoft.Network/loadBalancers/read",
"Microsoft.Network/locations/*",
"Microsoft.Network/networkInterfaces/*",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/publicIPAddresses/join/action",
"Microsoft.Network/publicIPAddresses/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.RecoveryServices/locations/*",
"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write",
"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read",
"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read",
"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write",
"Microsoft.RecoveryServices/Vaults/backupPolicies/read",
"Microsoft.RecoveryServices/Vaults/backupPolicies/write",
"Microsoft.RecoveryServices/Vaults/read",
"Microsoft.RecoveryServices/Vaults/usages/read",
"Microsoft.RecoveryServices/Vaults/write",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/deployments/*",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.SqlVirtualMachine/*",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Support/*"
]
Чтобы получить этот список в PowerShell, выполните следующую команду:
Get-AzRoleDefinition -Name "Virtual Machine Contributor" | Select Actions | ConvertTo-Json
Для нашего сценария требуется пользовательская роль, которая позволяет отслеживать и перезапускать виртуальные машины для конкретной подписки, поэтому мы хотим включить следующие действия, связанные с уровнем подписки:
- Доступ для чтения к вычислительным ресурсам, сети и хранилищу
- Возможность запуска и перезапуска виртуальных машин
- Доступ к группам ресурсов в подписке
- Доступ к мониторингу ресурсов
Существуют некоторые операции в определении роли участника виртуальной машины, которые можно использовать, например "Microsoft.Insights/alertRules/*"
для мониторинга, но перезапуск и некоторые другие не перечислены как действия в определении этой роли.
Поиск операций поставщика ресурсов
Действие перезапуска виртуальной машины можно найти в списке операций поставщика ресурсов Azure Resource Manager или выполнив следующую команду PowerShell для возврата операций для виртуальных машин:
Get-AzProviderOperation */virtualMachines/*
Следующая операция перезапуска возвращается в списке:
Operation : Microsoft.Compute/virtualMachines/restart/action
OperationName : Restart Virtual Machine
ProviderNamespace : Microsoft Compute
ResourceName : Virtual Machines
Description : Restarts the virtual machine
IsDataAction : False
Командлет Azure PowerShell Get-AzProviderOperation
можно использовать для получения самого текущего списка операций поставщика ресурсов. В Azure CLI используйте команду az provider operation show
. Вы можете найти опубликованный список поставщиков ресурсов и операций в содержимом Azure RBAC в документации.
Создание определения роли для оператора виртуальной машины
Предположим, что мы выбрали, что нам нужно, просмотрев определения встроенных ролей и список операций поставщика ресурсов. В итоге мы имеем следующее определение роли для нашей настраиваемой роли. Мы будем использовать это определение для нашей настраиваемой роли.
{
"Name": "Virtual Machine Operator",
"Id": "88888888-8888-8888-8888-888888888888",
"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": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionId1}"
]
}