Batch プールでマネージド ID を構成する

Azure リソースのマネージド ID は、Microsoft Entra ID (Azure AD ID) 内で Azure リソースの ID を指定することで、複雑な ID および資格情報の管理を排除します。 この ID は、Azure のターゲット リソースで認証するために Microsoft Entra トークンを取得するために使用されます。

このトピックでは、Batch プールでユーザー割り当てマネージド ID を有効にする方法と、ノード内でマネージド ID を使用する方法について説明します。

重要

マネージド ID を使用するには、仮想マシンの構成を使用してプールを構成する必要があります。

マネージド ID を使用したプールの作成は、Batch .NET 管理ライブラリを使って実行できますが、現在、Batch .NET クライアント ライブラリではサポートされていません。

ユーザー割り当てマネージド ID を作成する

まず、ユーザー割り当てマネージド ID を Batch アカウントと同じテナントに作成します。 ID は、Azure portal、Azure コマンド ライン インターフェイス (Azure CLI)、PowerShell、Azure Resource Manager、または Azure REST API を使用して作成できます。 このマネージド ID は、同じリソース グループ内または同じサブスクリプション内に存在する必要はありません。

ヒント

お客様のデータの暗号化のために Batch アカウント用に作成されたシステム割り当てマネージド ID は、このドキュメントで説明されているように、Batch プール上のユーザー割り当てマネージド ID として使用することはできません。 Batch アカウントと Batch プールの両方で同じマネージド ID を使用する場合は、代わりに共通のユーザー割り当てマネージド ID を使用します。

ユーザー割り当てマネージド ID を使用して Batch プールを作成する

1 つ以上のユーザー割り当てマネージド ID を作成したら、その ID を設定した Batch プールを作成できます。 次のようにすることができます。

警告

プールにアクティブなノードがある間は、プール マネージド ID のインプレース更新はサポートされません。 既存の計算ノードは変更によって更新されません。 ID コレクションを変更する前にプールを 0 個の計算ノードにスケールダウンして、すべての VM に同じ ID セットが確実に割り当てられるようにすることをお勧めします。

Azure portal で Batch プールを作成する

ユーザー割り当てマネージド ID を設定した Batch プールを Azure portal を使用して作成するには、次のようにします。

  1. Azure portal にサインインします。
  2. 検索バーに Batch アカウントを入力して、選択します。
  3. [Batch アカウント] ページで、Batch プールを作成する Batch アカウントを選択します。
  4. [Batch アカウント] のメニューの [機能] の下で [プール] を選択します。
  5. [プール] メニューの [追加] を選択して、新しい Batch プールを追加します。
  6. [プール ID] に、プールの識別子を入力します。
  7. [ID] の設定を [ユーザー割り当て済み] に変更します。
  8. [ユーザー割り当てマネージド ID] で、[追加] を選択します。
  9. 使用するユーザー割り当てマネージド ID を 1 つ以上選択します。 その後、 [追加] を選択します。
  10. [オペレーティング システム] で、使用する発行元、プラン、および SKU を選択します。
  11. 必要に応じて、コンテナー レジストリでマネージド ID を有効にします。
    1. [コンテナー構成] の設定を [カスタム] に変更します。 次に、カスタム構成を選択します。
    2. [開始タスク][有効] を選択します。 次に、[リソース ファイル] を選択し、ストレージ コンテナー情報を追加します。
    3. [コンテナーの設定] を有効にします。
    4. [コンテナー レジストリ][カスタム] に変更します
    5. [Identity reference] (ID 参照) で、ストレージ コンテナーを選択します。

.NET を使用して Batch プールを作成する

Batch .NET 管理ライブラリを使用して、ユーザー割り当てマネージド ID を設定した 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);

Batch ノードでユーザー割り当てマネージド ID を使用する

Azure Storage や Azure Container Registry などの、計算ノード上の他の Azure リソースに直接アクセスする多くの Azure Batch 関数では、マネージド ID がサポートされています。 Azure Batch でのマネージド ID の使用の詳細については、次のリンクを参照してください。

また、マネージド ID が、マネージド ID をサポートしている Azure リソースに直接アクセスできるように、タスクを手動で構成することもできます。

Batch ノード内では、マネージド ID トークンを取得し、それらを使用して、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 リソースのマネージド ID を使用してアクセス トークンを取得する方法」を参照してください。

次のステップ