共用方式為


使用受控識別

Azure AD 受控識別可用來讓 Azure CycleCloud 管理訂用帳戶中的叢集, (作為使用 服務主體) 的替代方案。 它們也可以指派給 CycleCloud VM,以提供 Azure 資源的存取權, (例如儲存體、金鑰保存庫或 Azure Container Registries) 。

使用受控識別的 CycleCloud VM 許可權

CycleCloud 會針對管理 HPC 叢集的目的,將 Azure Resource Manager的許多呼叫自動化。 此自動化需要將特定許可權授與 CycleCloud。 此存取權可藉由設定服務主體或將 受控識別 指派給 CycleCloud VM 來授與 CycleCloud。

通常建議使用 系統指派使用者指派的受控識別 來授與這些許可權,而不是服務主體。

當 Azure CycleCloud 安裝在已指派受控識別的 Azure VM 上時,[ 建立雲端提供者帳戶 ] 對話方塊的行為會稍有不同。 受控 識別 會有新的核取方塊,且訂用帳戶 識別碼會預先 填入主機 VM 的訂用帳戶。

新增訂用帳戶受控識別

新增訂用帳戶受控識別

只要取消核取 [ 受控識別 ] 核取方塊,仍然可以輸入標準認證集。 這麼做之後,標準欄位將會新增至表單。 此外,使用個別的訂用帳戶 識別碼是完全可接受的;提供的 值只是為了方便起見。

建立 CycleCloud 的自訂角色和受控識別

具有足夠存取權限 (最簡單的選項) 是將訂用帳戶的參與者角色指派給 CycleCloud VM 作為 System-Assigned 受控識別。 不過,參與者角色具有高於 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授權。 若要尋找您需求的正確授權,請參閱 比較免費、基本和 Premium 版本的一般可用功能。

選擇性許可權

若要讓 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 Container Registry,才能執行其工作負載。 強烈建議使用 使用者指派的受控識別 來傳遞所需的存取認證,而不是透過叢集組態將秘密/認證傳遞至節點。

User-Assigned 受控識別可以使用 node 屬性在叢集 VM Azure.Identities 上設定。 屬性的值 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
...