分享方式:


在 Batch 集區中設定受控識別

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

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

重要

使用受控身分識別建立集區只能透過使用 Entra 驗證的 Batch 管理平面 API 或 SDK 來執行。 無法使用 Batch 服務 API 或 SDK 建立具有受控身分識別的集區。 如需詳細資訊,請參閱 Batch API 和工具的概觀文件。

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

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

提示

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

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

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

警告

集區具有作用中節點時,不支援集區受控身分識別的就地更新。 現有的計算節點不會隨著變更而更新。 建議您先將集區縮減為零計算節點,再修改身分識別集合,以確保所有 VM 都已獲派相同的一組身分識別集。

在 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 credential = new DefaultAzureCredential();
ArmClient _armClient = new ArmClient(credential);
        
var batchAccountIdentifier = ResourceIdentifier.Parse("your-batch-account-resource-id");   
BatchAccountResource batchAccount = _armClient.GetBatchAccountResource(batchAccountIdentifier);

var poolName = "HelloWorldPool";
var imageReference = new BatchImageReference()
{
    Publisher = "canonical",
    Offer = "0001-com-ubuntu-server-jammy",
    Sku = "22_04-lts",
    Version = "latest"
};
string nodeAgentSku = "batch.node.ubuntu 22.04";

var batchAccountPoolData = new BatchAccountPoolData()
{
    VmSize = "Standard_DS1_v2",
    DeploymentConfiguration = new BatchDeploymentConfiguration()
    {
        VmConfiguration = new BatchVmConfiguration(imageReference, nodeAgentSku)
    },
    ScaleSettings = new BatchAccountPoolScaleSettings()
    {
        FixedScale = new BatchAccountFixedScaleSettings()
        {
            TargetDedicatedNodes = 1
        }
    }
};

ArmOperation<BatchAccountPoolResource> armOperation = batchAccount.GetBatchAccountPools().CreateOrUpdate(
    WaitUntil.Completed, poolName, batchAccountPoolData);
BatchAccountPoolResource pool = armOperation.Value;

在 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 資源受控識別來取得存取權杖

下一步