ディスク暗号化が有効になっているプールを作成する

仮想マシンの構成を使用して Azure Batch プールを作成する場合、ディスク暗号化構成を指定することによって、プラットフォーム マネージド キーでプール内のコンピューティング ノードを暗号化できます。

この記事では、ディスク暗号化が有効になっている Batch プールを作成する方法について説明します。

重要

Azure Disk Encryption (ADE) for Azure Batch pools は2028年9月15日に廃止されます。 その日までに、一時ディスクの暗号化のためにADEを利用するプール構成をホスト での暗号化 に移行してください。 この廃止はマネージドディスクのサーバー側のデフォルト暗号化には影響しません。

ディスク暗号化構成が指定されたプールを使用する理由

Batch プールを使用すると、コンピューティング ノードの OS と一時ディスクにアクセスしてデータを格納することができます。 プラットフォーム マネージド キーを使用してサーバー側のディスクを暗号化すると、オーバーヘッドを軽減しながら簡単にこのデータを保護できます。

Batch は、プールの構成とリージョンのサポートに基づいて、これらのディスク暗号化テクノロジのいずれかをコンピューティング ノードに適用します。

ディスク暗号化の対象は、暗号化技術を直接選択するわけではありません。 暗号化したいターゲットディスクを指定すると、バッチはプール構成に基づいて適切な技術を選択します。 仮想マシンのセキュリティプロファイルでホスト側で暗号化を明示的に要求できます。 以下の画像は、Batch がどのように選ぶかを示しています。

重要

Linux のカスタムイメージでプールを作成する場合、ホストで暗号化をサポートするVMサイズが使われている場合のみディスク暗号化を有効にできます。

ユーザーサブスクリプションプールの場合は、プールリソースを含むサブスクリプションで Microsoft.Compute/EncryptionAtHost 機能を登録し、securityProfile.encryptionAtHost を明示的に true に設定します。 詳細については、「ホストでの暗号化の前提条件」を参照してください。

Azure portal でのプールの作成のスクリーンショット。

一部のディスク暗号化構成では、プールの VM ファミリで、ホストでの暗号化がサポートされている必要があります。 ホストでの暗号化がサポートされている VM ファミリを特定するには、ホストでの暗号化を使用したエンドツーエンドの暗号化に関するページを参照してください。

Note

ホストで暗号化をサポートしないVMサイズでの一時的なディスク暗号化には、Azure Disk Encryption(ADE)が必要です。 ADEは、Basic、Aシリーズ、v6シリーズ、v7シリーズ(以降)のVMサイズ、またはメモリ容量が2GB未満のVMではサポートされていません。 これらのサポートされていないサイズのいずれかで一時的なディスク暗号化を有効にすると、バッチは AzureDiskEncryptionNotSupportedOnVMSize エラーでプール作成を拒否します。 ADEなしで一時的なディスク暗号化を使用するには、ホストで暗号化をサポートするVMサイズとサブスクリプションを選択してください。 バッチサービスプールの場合、ホストで暗号化を明示的に無効にしないでください。 ユーザーサブスクリプションプールの場合は、 securityProfile.encryptionAtHost を明示的に trueに設定してください。

Azure Disk Encryption の廃止

Azure Disk Encryption (ADE) for Batch poolsは2028年9月15日に廃止されます。 廃止日以降、バッチプールはADEをサポートしません。 引き続きADEに依存しているプール構成は、Batch がコンピュート ノードをプロビジョニングまたは置き換える際に中断が発生する可能性があります。

プール構成で一時ディスクの暗号化を要求し、ADE を選択できる場合は、廃止日までに移行を完了してください。 代わりにホスト側の暗号化を使いましょう。 ホストでの暗号化は、一時ディスク、エフェメラル OS ディスク、OS およびデータ ディスクのキャッシュを VM ホストで暗号化します。

ADEの廃止は、Azure管理ディスクでデフォルトで有効になっているプラットフォーム管理キーを用いた静止時のマネージドディスク暗号化には影響しません。

お客様のプールに対応が必要かどうかを見極めましょう

バッチプールのプロパティには、あなたが要求したディスク暗号化のターゲットが表示されますが、バッチがノードに選択した暗号化技術は特定されていません。 プール構成がADEに依存しているかどうかを評価するために、以下の表を用いてください。

プールの構成 ADE依存 アクション
diskEncryptionConfiguration 設定されていないか、TemporaryDisk がそのターゲットに含まれていない この構成は一時ディスク暗号化にADEに依存しません。 この退職に関しては何の措置も必要ありません。
バッチ サービス プール割り当てモードで、TemporaryDisk が要求され、VM サイズがホストでの暗号化をサポートし、かつホストでの暗号化が明示的に無効化されていない場合 ホストで暗号化を選択 移行は必要ありません。 ホストで暗号化をサポートするVMサイズを使い続けてください。
バッチ サービス プールの割り当てモードとして TemporaryDisk が要求されており、VM サイズはホストでの暗号化をサポートしていません 構成はADEに依存する場合があります。 ホストで暗号化をサポートするVMサイズに移行してください。
ユーザーサブスクリプションプール割り当てモード、TemporaryDisk がリクエストされていますが、securityProfile.encryptionAtHost は true に設定されていません 構成はADEによって異なる場合があります。 Batch はユーザー サブスクリプション プールに対してホスト レベルの暗号化を自動的に有効にしません。 プールサブスクリプションにホストでの暗号化機能を登録し、ホストでの暗号化を明示的に有効にしてください。
securityProfile.encryptionAtHost は明示的に false に設定されており、 TemporaryDisk がリクエストされます 構成はADEによって異なる場合があります。 対応しているVMサイズを使い、 encryptionAtHost を trueに設定してください。

VM サイズがホストでの暗号化をサポートしているかどうかを確認するには、サポートされている VM サイズを参照してください。

新しいプールを設定

一時的なディスク暗号化が必要な新しいプールの場合は、ホストで暗号化をサポートするVMサイズを選択してください。 ホストで暗号化を明示的に無効にしないでください。

ユーザーサブスクリプションプールについては、プールリソースを含むサブスクリプションの Microsoft.Compute/EncryptionAtHost 機能も登録し、 securityProfile.encryptionAtHost を trueに設定してください。

既存のプールをホストでの暗号化に移行する

バッチプールを削除せずに既存のプールを更新できます。 このアップデートは、プールを再度スケールアウトした際に基盤となるコンピュート デプロイメントを置き換えます。

  1. プールで新しい作業をスケジューリングするのをやめて、実行中のタスクが完了するのを待つか、それらを別のプールに移動してください。
  2. 専用ノード数とスポットまたは低優先度のターゲット ノード数の両方を 0 にリサイズします。
  3. プール割り当て状態が Steady になり、現在のノード数がゼロになるまで待ちます。
  4. バッチ管理プレーンの Pool - Update API バージョン 2024-07-01 以降を使用して:
    • 現在のサイズでホストでの暗号化がサポートされていない場合は、ホストでの暗号化をサポートする VM サイズを選択してください。
    • deploymentConfiguration.virtualMachineConfiguration.securityProfile.encryptionAtHost を true に設定します。
    • 必要なディスク暗号化ターゲットおよびその他の仮想マシンの設定プロパティを保持します。
  5. プールを必要なターゲットノード数にリサイズします。 Batch は、更新された構成を使用して、新しい基になるコンピュート デプロイメントを作成します。

例えば、管理プレーン PATCH リクエストの関連部分は以下の通りです:

{
  "properties": {
    "vmSize": "<encryption-at-host-supported-vm-size>",
    "deploymentConfiguration": {
      "virtualMachineConfiguration": {
        "imageReference": {
          "publisher": "<publisher>",
          "offer": "<offer>",
          "sku": "<sku>",
          "version": "<version>"
        },
        "nodeAgentSkuId": "<node-agent-sku-id>",
        "diskEncryptionConfiguration": {
          "targets": [
            "OsDisk",
            "TemporaryDisk"
          ]
        },
        "securityProfile": {
          "encryptionAtHost": true
        }
      }
    }
  }
}

Caution

プールが保持しなければならない既存の仮想マシン構成プロパティ、例えばイメージ参照、ノードエージェントSKU、OSディスク設定、コンテナ設定、拡張機能、データディスクなどを含めます。 本番プールを更新する前に、現在の構成を取得し、必要なすべての値でリクエストを構築してください。

ゼロノードの更新や更新動作の詳細については、「Batch プールのプロパティの更新」を参照してください。

Azure portal

Azure portal で Batch プールを作成する場合は、[ディスクの暗号化の構成] で [OsDisk]、[TemporaryDisk]、または [OsAndTemporaryDisk] を選択します。

Azure portal のディスク暗号化構成オプションのスクリーンショット。

プールが作成されると、プールの [プロパティ] セクションに、ディスク暗号化構成ターゲットが表示されます。

Azure portal のディスク暗号化構成ターゲットを示すスクリーンショット。

例

次の例では、Azure.ResourceManager.Batch SDK、Batch REST API、および Azure CLI を使用して、Batch プール上の OS ディスクと一時ディスクを暗号化する方法を示します。

Azure.ResourceManager.Batch SDK

using Azure;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Batch;
using Azure.ResourceManager.Batch.Models;

//...

public async Task SetDiskEncryption()
{
    ArmClient client = new ArmClient(new DefaultAzureCredential());

    ResourceIdentifier batchAccountResourceId =
        BatchAccountResource.CreateResourceIdentifier("subscriptionId", "resourceGroupName", "accountName");
    BatchAccountResource batchAccount = client.GetBatchAccountResource(batchAccountResourceId);

    BatchAccountPoolCollection poolCollection = batchAccount.GetBatchAccountPools();

    BatchAccountPoolData poolData = new BatchAccountPoolData()
    {
        VmSize = "standard_ds1_v2",
        DeploymentConfiguration = new BatchDeploymentConfiguration()
        {
            VmConfiguration = new BatchVmConfiguration(
                imageReference: new BatchImageReference()
                {
                    Publisher = "Canonical",
                    Offer = "UbuntuServer",
                    Sku = "22.04-LTS"
                },
                nodeAgentSkuId: "batch.node.ubuntu 22.04")
            {
                 DiskEncryptionConfiguration = new BatchDiskEncryptionConfiguration()
                 {
                     Targets = { BatchDiskEncryptionTarget.OSDisk, BatchDiskEncryptionTarget.TemporaryDisk }
                 }
            }
        }
    };

    ArmOperation<BatchAccountPoolResource> pool = await poolCollection.CreateOrUpdateAsync(
        WaitUntil.Completed, "diskencryptionPool", poolData);
}

バッチ処理用のREST API

REST API URL:

POST {batchURL}/pools?api-version=2020-03-01.11.0
client-request-id: 00000000-0000-0000-0000-000000000000

要求の内容:

"pool": {
    "id": "pool2",
    "vmSize": "standard_a1",
    "virtualMachineConfiguration": {
        "imageReference": {
            "publisher": "Canonical",
            "offer": "UbuntuServer",
            "sku": "22.04-LTS"
        },
        "diskEncryptionConfiguration": {
            "targets": [
                "OsDisk",
                "TemporaryDisk"
            ]
        },
        "nodeAgentSKUId": "batch.node.ubuntu 22.04"
    },
    "resizeTimeout": "PT15M",
    "targetDedicatedNodes": 5,
    "targetLowPriorityNodes": 0,
    "taskSlotsPerNode": 3,
    "enableAutoScale": false,
    "enableInterNodeCommunication": false
}

Azure CLI

az batch pool create \
    --id diskencryptionPool \
    --vm-size Standard_DS1_V2 \
    --target-dedicated-nodes 2 \
    --image canonical:ubuntuserver:22.04-LTS \
    --node-agent-sku-id "batch.node.ubuntu 22.04" \
    --disk-encryption-targets OsDisk TemporaryDisk

次のステップ