你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用托管标识

Azure AD 托管标识可用于允许 Azure CycleCloud 管理订阅中的群集, (作为使用 服务主体) 的替代方法。 还可以将其分配给 CycleCloud VM,以提供对 Azure 资源 ((例如存储、密钥保管库或 Azure 容器注册表) )的访问权限。

具有托管标识的 CycleCloud VM 权限

CycleCloud 自动执行对 Azure 资源管理器的多次调用,以管理 HPC 群集。 此自动化需要向 CycleCloud 授予某些权限。 可以通过配置服务主体或向 CycleCloud VM 分配 托管标识 来授予 CycleCloud 的此访问权限。

通常建议使用 系统分配用户分配的托管标识 来授予这些权限,而不是服务主体。

在分配了托管标识的 Azure VM 上安装 Azure CycleCloud 后, “创建云提供程序帐户 ”对话框的行为将略有不同。 将有一个新的 托管标识 复选框, 订阅 ID 将预填充主机 VM 的订阅。

添加订阅托管标识

添加订阅托管标识

仍可以通过取消选中“ 托管标识 ”复选框来输入标准凭据集。 执行此操作后,标准字段将添加到窗体中。 此外,完全可以接受使用单独的 订阅 ID;提供的值只是为了方便起见。

为 CycleCloud 创建自定义角色和托管标识

(具有足够访问权限) 的最简单选项是将订阅的参与者角色作为 System-Assigned 托管标识分配给 CycleCloud VM。 但是,参与者角色的特权级别高于 CycleCloud 所需的权限级别。 可以创建自定义 角色 并将其分配给 VM。

下面发布了适用于大多数 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.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read",
          "Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write",
          "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许可证。 若要查找适合你的要求的许可证,请参阅 比较免费版、基本版和高级版的正式发布功能。

可选权限

若要使 CycleCloud 能够将托管标识分配给它在群集中创建的 VM,请添加以下内容 "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>

现在,自定义角色已分配并限定为标识,并且可以与 VM 一起使用。

向具有托管标识的群集 VM 分配角色

群集节点通常需要访问 Azure 资源。 例如,许多群集需要访问 Azure 存储、密钥保管库或 Azure 容器注册表才能运行其工作负载。 强烈建议使用 用户分配的托管标识 传递所需的访问凭据,而不是通过群集配置将机密/凭据传递给节点。

User-Assigned 可以使用 节点属性在群集 VM Azure.Identities 上配置托管标识。 属性的值 Azure.Identities 是托管标识资源 ID 字符串的逗号分隔列表:

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