Batch プールでマネージド ID を構成する
Azure リソースのマネージド ID は、Microsoft Entra ID (Azure AD ID) 内で Azure リソースの ID を指定することで、複雑な ID および資格情報の管理を排除します。 この ID は、Azure のターゲット リソースで認証するために Microsoft Entra トークンを取得するために使用されます。
ユーザー割り当てマネージド ID を Batch プールに追加する場合は、構成で Identity プロパティを設定することが必須です。 このプロパティは、マネージド ID をプールにリンクし、Azure リソースに安全にアクセスできるようにします。 Identity プロパティの設定が正しくないと、アクセスの問題やアップロード エラーなど、一般的なエラーの原因になり得ます。
Azure Batch でのマネージド ID の構成の詳細については、Azure Batch マネージド ID のドキュメントを参照してください。
このトピックでは、Batch プールでユーザー割り当てマネージド ID を有効にする方法と、ノード内でマネージド ID を使用する方法について説明します。
重要
マネージド ID を使用するプールの作成は、Entra 認証を使用するBatch 管理プレーン API または SDK でのみ実行できます。 Batch サービス API または SDK を使用して、マネージド ID を使用するプールを作成することはできません。 詳細については、Batch API とツールの概要のドキュメントを参照してください。
ユーザー割り当てマネージド 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 (またはそれらの ID) を使用する Batch プールを作成できます。 次のことを実行できます。
警告
プールにアクティブなノードがある間は、プール マネージド ID のインプレース更新はサポートされません。 既存の計算ノードは変更によって更新されません。 ID コレクションを変更する前にプールを 0 個の計算ノードにスケールダウンして、すべての VM に同じ ID セットが確実に割り当てられるようにすることをお勧めします。
Azure portal で Batch プールを作成する
ユーザー割り当てマネージド ID を設定した Batch プールを Azure portal を使用して作成するには、次のようにします。
- Azure portal にサインインします。
- 検索バーに Batch アカウントを入力して、選択します。
- [Batch アカウント] ページで、Batch プールを作成する Batch アカウントを選択します。
- [Batch アカウント] のメニューの [機能] の下で [プール] を選択します。
- [プール] メニューの [追加] を選択して、新しい Batch プールを追加します。
- [プール ID] に、プールの識別子を入力します。
- [ID] の設定を [ユーザー割り当て済み] に変更します。
- [ユーザー割り当てマネージド ID] で、[追加] を選択します。
- 使用するユーザー割り当てマネージド ID を 1 つ以上選択します。 その後、 [追加] を選択します。
- [オペレーティング システム] で、使用する発行元、プラン、および SKU を選択します。
- 必要に応じて、コンテナー レジストリでマネージド ID を有効にします。
- [コンテナー構成] の設定を [カスタム] に変更します。 次に、カスタム構成を選択します。
- [開始タスク] で [有効] を選択します。 次に、[リソース ファイル] を選択し、ストレージ コンテナー情報を追加します。
- [コンテナーの設定] を有効にします。
- [コンテナー レジストリ] を [カスタム] に変更します
- [Identity reference] (ID 参照) で、ストレージ コンテナーを選択します。
.NET を使用して Batch プールを作成する
Batch .NET 管理ライブラリを使用して、ユーザー割り当てマネージド ID を設定した 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;
Note
Identity プロパティをインクルードするには、次のコード例を使用します。
var pool = batchClient.PoolOperations.CreatePool(
poolId: "myPool",
virtualMachineSize: "STANDARD_D2_V2",
cloudServiceConfiguration: new CloudServiceConfiguration(osFamily: "4"),
targetDedicatedNodes: 1,
identity: new PoolIdentity(
type: PoolIdentityType.UserAssigned,
userAssignedIdentities: new Dictionary<string, UserAssignedIdentity>
{
{ "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identity-name}", new UserAssignedIdentity() }
}
));
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 を使用してアクセス トークンを取得する方法」を参照してください。
次のステップ
- Azure リソース用マネージド ID 詳細について説明します。
- ユーザー マネージド ID でカスタマー マネージド キーを使用する方法について説明します。
- Batch プールで証明書の自動ローテーションを有効にする方法について説明します。