Использование управляемых удостоверений
Azure AD управляемые удостоверения можно использовать для разрешения Azure CycleCloud на управление кластерами в подписке (в качестве альтернативы использованию субъекта-службы). Они также могут быть назначены виртуальным машинам CycleCloud для предоставления доступа к ресурсам Azure (таким как хранилище, Key Vault или реестры контейнеров Azure).
Разрешения виртуальной машины CycleCloud с управляемым удостоверением
CycleCloud автоматизирует множество вызовов Resource Manager Azure для управления кластерами HPC. Для этой автоматизации требуется предоставить CycleCloud определенные разрешения. Этот доступ можно предоставить CycleCloud, настроив субъект-службу или назначив управляемое удостоверение виртуальной машине CycleCloud.
Как правило, для предоставления этих разрешений рекомендуется использовать управляемое удостоверение, назначаемое системой или пользователем, а не субъект-службу .
После установки Azure CycleCloud на виртуальной машине Azure с назначенным ей управляемым удостоверением диалоговое окно Создание учетной записи поставщика облачных служб будет вести себя немного иначе. Появится новый флажок Управляемое удостоверение , а идентификатор подписки будет предварительно заполнен подпиской виртуальной машины узла.
По-прежнему можно ввести стандартный набор учетных данных, просто сняв флажок Управляемое удостоверение . После этого стандартные поля будут добавлены в форму. Кроме того, вполне допустимо использовать отдельный идентификатор подписки; Указанное значение предназначено только для удобства.
Создание настраиваемой роли и управляемого удостоверения для CycleCloud
Самый простой вариант (с достаточными правами доступа) — назначить роль участника для подписки виртуальной машине CycleCloud в качестве управляемого удостоверения System-Assigned. Однако роль участника имеет более высокий уровень привилегий, чем требуется CycleCloud. Можно создать настраиваемую роль и назначить ее виртуальной машине.
Ниже приведена достаточная политика для большинства функций CycleCloud.
{
"assignableScopes": [
"/"
],
"description": "CycleCloud Orchestrator Role",
"permissions": [
{
"actions": [
"Microsoft.Commerce/RateCard/read",
"Microsoft.Compute/*/read",
"Microsoft.Compute/availabilitySets/*",
"Microsoft.Compute/disks/*",
"Microsoft.Compute/images/read",
"Microsoft.Compute/locations/usages/read",
"Microsoft.Compute/register/action",
"Microsoft.Compute/skus/read",
"Microsoft.Compute/virtualMachines/*",
"Microsoft.Compute/virtualMachineScaleSets/*",
"Microsoft.Compute/virtualMachineScaleSets/virtualMachines/*",
"Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action",
"Microsoft.Network/*/read",
"Microsoft.Network/locations/*/read",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/publicIPAddresses/read",
"Microsoft.Network/publicIPAddresses/write",
"Microsoft.Network/publicIPAddresses/delete",
"Microsoft.Network/publicIPAddresses/join/action",
"Microsoft.Network/register/action",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Resources/deployments/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/subscriptions/resourceGroups/resources/read",
"Microsoft.Resources/subscriptions/operationresults/read",
"Microsoft.Storage/*/read",
"Microsoft.Storage/checknameavailability/read",
"Microsoft.Storage/register/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/write"
],
"dataActions": [],
"notActions": [],
"notDataActions": []
}
],
"Name": "CycleCloud",
"roleType": "CustomRole",
"type": "Microsoft.Authorization/roleDefinitions"
}
Важно!
Для использования настраиваемой роли требуется лицензия Azure AD Premium P1. Чтобы найти подходящую лицензию для ваших требований, см. статью Сравнение общедоступных функций выпусков Free, Basic и Premium.
Дополнительные разрешения
Чтобы разрешить CycleCloud назначать управляемые удостоверения виртуальным машинам, которые он создает в кластерах, добавьте следующее "actions"
:
"Microsoft.Authorization/*/read",
"Microsoft.Authorization/roleAssignments/*",
"Microsoft.Authorization/roleDefinitions/*",
Чтобы разрешить CycleCloud создавать группы ресурсов для каждого кластера и управлять ими (рекомендуется, если это разрешено политикой), добавьте следующее "actions"
:
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
Создание роли
Роль можно создать на основе определений ролей с помощью Azure CLI . Используйте эту роль для создания определения роли в клиенте Azure. Когда роль существует в клиенте, назначьте ее удостоверению с соответствующими область.
Ниже приведен базовый поток с помощью Azure CLI.
# Create a custom role definition
az role definition create --role-definition role.json
# Create user identity
az identity create --name <name>
# Assign the custom role to the identity with proper scope
az role assignment create --role <CycleCloudRole> --assignee-object-id <identity-id> --scope <subscription>
Теперь настраиваемая роль назначается и ограничивается удостоверением и может использоваться с виртуальной машиной.
Назначение ролей виртуальным машинам кластера с управляемым удостоверением
Для узлов кластера обычно требуется доступ к ресурсам Azure. Например, для выполнения рабочей нагрузки многим кластерам требуется доступ к службе хранилища Azure, Key Vault или реестрам контейнеров Azure. Настоятельно рекомендуется передавать необходимые учетные данные доступа с помощью управляемого удостоверения, назначаемого пользователем , а не передавать секреты или учетные данные на узел через конфигурацию кластера.
User-Assigned управляемые удостоверения можно настроить на виртуальных машинах кластера с помощью Azure.Identities
свойства node. Значение Azure.Identities
свойства представляет собой разделенный запятыми список строк идентификатора ресурса управляемого удостоверения:
[cluster sample]
...
[[node defaults]]
...
Azure.Identities = $ManagedServiceIdentity
...
[parameters Required Settings]
...
[[parameter ManagedServiceIdentity]]
ParameterType = Azure.ManagedIdentity
Label = MSI Identity
Description = The resource ID of the Managed Service Identity to apply to the nodes
...