Использование управляемых удостоверений

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
...