在 Batch 集區中設定受控識別

Azure 資源的受控識別可藉由為 Microsoft Entra ID (Azure AD ID) 中的 Azure 資源提供身分識別,藉以消除複雜的身分識別和認證管理。 此身分識別可用來取得 Microsoft Entra 權杖,以向 Azure 中的目標資源進行驗證。

本主題說明如何在 Batch 集區上啟用使用者指派的受控識別,以及如何在節點中使用受控識別。

重要

您必須使用虛擬機器設定來設定集區,才能使用受控識別。

使用受控識別的集區可透過 Batch .NET 管理程式庫來建立,但目前不支援 Batch .NET 用戶端程式庫

建立使用者指派的受控識別

首先,在與 Batch 帳戶相同的租用戶中建立使用者指派的受控識別。 您可使用 Azure 入口網站、Azure 命令列介面 (Azure CLI)、PowerShell、Azure Resource Manager 或 Azure REST API 來建立身分識別。 此受控識別無須位於相同資源群組,甚或位於相同訂用帳戶。

重要

為 Batch 帳戶建立系統指派的受控識別以用於客戶資料加密,無法作為 Batch 集區上使用者指派的受控識別,如本文所述。 如果您想要在 Batch 帳戶和 Batch 集區上使用相同的受控識別,請改用一般使用者指派的受控識別。

以使用者指派的受控識別建立 Batch 集區

建立一或多個使用者指派的受控識別後,便可使用這些身分識別來建立 Batch 集區。 您可以:

在 Azure 入口網站中建立 Batch 集區

若要透過 Azure 入口網站建立具有使用者指派受控識別的 Batch 集區:

  1. 登入 Azure 入口網站
  2. 在搜尋列中,輸入並選取 [Batch 帳戶]
  3. [Batch 帳戶] 頁面上,選取要建立 Batch 集區的 Batch 帳戶。
  4. 在 Batch 帳戶的功能表中,選取 [功能] 下的 [集區]
  5. [集區] 功能表中,選取 [新增] 以新增 Batch 集區。
  6. 針對 [集區識別碼],輸入集區的識別碼。
  7. 針對 [身分識別],將設定變更為 [使用者指派]
  8. 在 [使用者指派的受控識別] 下,選取 [新增]。
  9. 選取要使用的使用者指派受控識別或身分識別。 然後選取 [新增]
  10. [作業系統] 下,選取發行者、供應項目和要使用的 SKU。
  11. 或者,也可在容器登錄中啟用受控識別:
    1. 針對 [容器設定],將設定變更為 [自訂]。 接著選取您的自訂設定。
    2. 針對 [啟動工作],選取 [已啟用]。 接著,選取 [資源檔案] 並新增儲存體容器資訊。
    3. 啟用容器設定
    4. 容器登錄變更為自訂
    5. 針對 [身分識別參考],選取儲存體容器。

使用 .NET 建立 Batch 集區

若要以使用者指派的受控識別與 Batch .NET 管理程式庫建立 Batch 集區,請使用下列範例程式碼:

var poolParameters = new Pool(name: "yourPoolName")
    {
        VmSize = "standard_d2_v3",
        ScaleSettings = new ScaleSettings
        {
            FixedScale = new FixedScaleSettings
            {
                TargetDedicatedNodes = 1
            }
        },
        DeploymentConfiguration = new DeploymentConfiguration
        {
            VirtualMachineConfiguration = new VirtualMachineConfiguration(
                new ImageReference(
                    "Canonical",
                    "0001-com-ubuntu-server-jammy",
                    "22_04-lts",
                    "latest"),
                "batch.node.ubuntu 22.04")
        },
        Identity = new BatchPoolIdentity
        {
            Type = PoolIdentityType.UserAssigned,
            UserAssignedIdentities = new Dictionary<string, UserAssignedIdentities>
            {
                ["Your Identity Resource Id"] =
                    new UserAssignedIdentities()
            }
        }
    };

var pool = await managementClient.Pool.CreateWithHttpMessagesAsync(
    poolName:"yourPoolName",
    resourceGroupName: "yourResourceGroupName",
    accountName: "yourAccountName",
    parameters: poolParameters,
    cancellationToken: default(CancellationToken)).ConfigureAwait(false);

重要

一旦集區啟動,受控識別就不會在現有的 VM 上更新。 建議您先將集區縮減為零,再修改身分識別集合,以確保所有 VM 都已獲派相同的一組身分識別集。

在 Batch 節點中使用使用者指派的受控識別

許多直接在計算節點上存取其他 Azure 資源的 Azure Batch 函式 (例如 Azure 儲存體或 Azure Container Registry) 都支援受控識別。 如需使用 Azure Batch 受控識別的詳細資訊,請參閱下列連結:

您也可手動設定工作,以便受控識別直接存取支援受控識別的 Azure 資源

在 Batch 節點內,您可取得受控識別權杖並用於驗證:透過 Azure Instance Metadata Service 進行 Microsoft Entra 驗證。

若為 Windows,取得待驗證存取權杖的 PowerShell 指令碼為:

$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource={Resource App Id Url}' -Method GET -Headers @{Metadata="true"}

若為 Linux,Bash 指令碼為:

curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource={Resource App Id Url}' -H Metadata:true

如需詳細資訊,請參閱了解如何在 Azure VM 上使用 Azure 資源受控識別來取得存取權杖

下一步