Что такое настраиваемые роли в 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, таким как виртуальные машины, хранилище, сети и многое другое Управление доступом к ресурсам 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}" 
   ]
   }