Compute Engine での顧客指定の暗号鍵(CSEK)の非推奨

次の Compute Engine リソースの暗号化に顧客指定の暗号鍵(CSEK) を使用することは非推奨になりました。2026 年 7 月 20 日 以降、CSEK を使用して 次の Compute Engine リソースを暗号化することはできなくなります。

  • 永続ディスク
  • 画像検索
  • マシンイメージ
  • 標準スナップショットとアーカイブ スナップショット
  • 即時スナップショット

2027 年 7 月 20 日 に、CSEK は Compute Engine から完全に削除されます。

CSEK の代替

Cloud Key Management Service で管理される顧客管理の暗号鍵(CMEK)を使用します。 Cloud KMS は、鍵のセキュリティ管理、監査可能性、ローテーションのサポートを強化し、Hyperdisk ボリュームをサポートしています。

このドキュメントでは、 CSEK で暗号化された Compute Engine リソースを移行して、代わりに CMEK を使用する 方法について説明します。

Compute Engine ディスク、スナップショット、 イメージに CMEK を使用する方法については、 Cloud KMS 鍵を使用してリソースを保護するをご覧ください。

CSEK で暗号化されたリソースを移行して顧客管理の暗号鍵(CMEK)を使用する

リソースの暗号化に使用した CSEK を削除して CMEK に置き換えることはできません。 既存のリソースのコピーを作成し、そのコピーを CMEK で暗号化する必要があります。

このセクションでは、次の Compute Engine リソースを移行して、CSEK の代わりに CMEK を使用する方法について説明します。

  • Persistent Disk ボリューム
  • 画像検索
  • マシンイメージ
  • 標準スナップショットとアーカイブ スナップショット
  • 即時スナップショット

CSEK で暗号化されたリソースを移行する準備をする

CMEK でリソースを暗号化するには、少なくとも 1 つの Cloud KMS キーリングと鍵が必要です。キーリングと鍵を作成するには、 キーリングと鍵の作成の手順に沿って操作します。

CSEK で暗号化された Persistent Disk ボリュームを移行して CMEK を使用する

ディスクから CSEK を削除することはできません。代わりに、CSEK で暗号化されたディスクのスナップショットから、CMEK で暗号化された新しいディスクを作成する必要があります。

  1. 省略可: 既存の CSEK で暗号化されたディスクが実行中のコンピューティング インスタンスのブートディスクである場合は、インスタンスを停止します。

  2. CSEK で暗号化されたディスクの標準スナップショットを作成します。

  3. 標準スナップショットから新しいディスクを作成し、Cloud KMS 鍵で暗号化します。Google Cloud CLI または REST を使用できます。

    gcloud CLI

    gcloud compute disks create コマンドを使用します。

    スナップショットの CSEK が RSA でラップされている場合は、代わりに gcloud beta compute disks create command. を使用します。

    新しいディスクの CMEK を --kms-key フラグで指定します。

    リージョン ディスクを作成するには、ディスクのレプリカ ゾーンを replica-zones フラグを使用して指定します。`--replica-zones=^:^ZONE:REPLICA_ZONE`

        gcloud compute disks create NEW_CMEK_DISK_NAME \
        --source-snapshot=CSEK_SNAPSHOT_NAME \
        --csek-key-file=PATH_TO_CSEK_KEY_FILE \
        --kms-key=projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeysKMS_KEY_NAME \
        --no-require-csek-key-create \
        --LOCATION_FLAG=ZONE_OR_REGION \
        --type=DISK_TYPE
    

    次のように置き換えます。

    • NEW_CMEK_DISK_NAME: 新しいディスクの名前(例: migrated-cmek-disk)。
    • CSEK_SNAPSHOT_NAME: CSEK で暗号化されたディスクから作成されたスナップショットの名前(例: my-csek-snapshot)。
    • PATH_TO_CSEK_KEY_FILE: スナップショットの暗号化に使用される CSEK を含むファイルのパス(例: /tmp/csek_key.json)。 ファイルの形式については、鍵ファイルの形式をご覧ください。
    • KMS_PROJECT_ID: Cloud KMS 鍵が配置されているプロジェクト ID。
    • KEY_REGION: 鍵が配置されているリージョン。
    • KEY_RING:鍵を含むキーリングの名前。
    • KMS_KEY_NAME: ディスクの暗号化に使用された鍵の名前
    • LOCATION_FLAG: ロケーションを指定するフラグ( zone または region)。
    • ZONE_OR_REGION: 新しいディスクのゾーンまたはリージョン( 例: us-central1-a または us-central1)。
    • DISK_TYPE: 新しいディスクのタイプ。たとえば、新しい Balanced Persistent Disk ボリュームを作成するには、pd-balanced を指定します。有効な値については、 Hyperdisk ボリュームでサポートされているタイプ と Persistent Disk タイプの変数をご覧ください。

    REST

    disks.insert メソッドに POST リクエストを送信します。

    POST https://compute.googleapis.com/compute/API_VERSION_TO_USE/projects/PROJECT_ID/LOCATION_TYPE/ZONE_OR_REGION/disks
    
    {
     "name": "NEW_CMEK_DISK_NAME",
     "type": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/LOCATION_TYPE/ZONE_OR_REGION/diskTypes/DISK_TYPE",
     "sourceSnapshot": "projects/SNAPSHOT_PROJECT_ID/global/snapshots/CSEK_SNAPSHOT_NAME",
     "diskEncryptionKey": {
        "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/KMS_KEY_NAME"
     },
     "sourceSnapshotEncryptionKey": {
        "CSEK_KEY_TYPE": "RAW_OR_RSA_KEY"
     }
    }
    

    次のように置き換えます。

    • API_VERSION_TO_USE: 使用する API バージョン。CSEK 鍵が RSA でラップされた鍵の場合は、beta を指定します。それ以外の場合は、v1 を指定します。
    • PROJECT_ID: プロジェクトの ID(例: myproject-171)。
    • LOCATION_TYPE:ロケーションのタイプ。ゾーンディスクを作成する場合は zones、リージョン ディスクを作成する場合は regions。
    • ZONE_OR_REGION: 新しいディスクのゾーンまたはリージョン( 例: us-central1-a または us-central1)。
    • DISK_TYPE: 新しいディスクのタイプ。たとえば、新しい Balanced Persistent Disk ボリュームを作成するには、pd-balanced を指定します。有効な値については、 Hyperdisk ボリュームでサポートされているタイプ と Persistent Disk タイプの変数をご覧ください。
    • NEW_CMEK_DISK_NAME: 新しいディスクの名前(例: migrated-cmek-disk)。
    • SNAPSHOT_PROJECT_ID: スナップショットのプロジェクト ID。
    • CSEK_SNAPSHOT_NAME: CSEK で暗号化されたディスクから作成されたスナップショットの名前(例: my-csek-snapshot)。
    • KMS_PROJECT_ID: Cloud KMS 鍵が配置されているプロジェクト ID。
    • KEY_REGION: 鍵が配置されているリージョン。
    • KEY_RING: 鍵を含むキーリングの名前。
    • KMS_KEY_NAME: ディスクの暗号化に使用された鍵の名前
    • CSEK_KEY_TYPE: 顧客指定の暗号鍵のタイプ。 rawKey RAW 鍵の場合は、鍵が RSA でラップされている場合は rsaEncryptedKey。
    • RAW_OR_RSA_KEY:RAW 鍵または RSA で暗号化された鍵の値。
  4. コンピューティング インスタンスで新しいディスクを使用します。

    1. 既存の CSEK で暗号化されたディスクが実行中のコンピューティング インスタンスのブートディスクである場合は、インスタンスを停止します。

    2. 新しいディスクの使用を開始するには、CSEK で暗号化されたソースディスクをインスタンスから切り離し、作成したばかりの新しいディスクをアタッチします。

    3. インスタンスを起動します。

    4. 新しいディスクが想定どおりに動作することを確認します。

    5. 新しいディスクをテストしたら、 スナップショット と元の CSEK で暗号化されたディスクを削除します。

      ディスクとスナップショットは、削除するまで課金されます。

CSEK で暗号化された即時スナップショットを移行する

インスタント スナップショットから CSEK を直接削除することはできません。代わりに、次のタスクを完了して、スナップショットを CMEK で暗号化されたインスタント スナップショットに変換する必要があります。

  1. 即時スナップショットから、CSEK で暗号化された一時的な標準スナップショットを作成します。

  2. CSEK で暗号化されたスナップショットから、CMEK で暗号化された一時的なディスクを作成します。

  3. 新しいディスクの CMEK で暗号化されたインスタント スナップショットを作成します。

  4. CMEK で暗号化されたインスタント スナップショットを作成したら、CSEK で暗号化された標準スナップショットと一時ディスクを削除します。

CSEK で暗号化されたイメージとスナップショットを移行する

イメージ、アーカイブ スナップショット、インスタント スナップショット、標準スナップショットから CSEK を削除することはできません。代わりに、イメージまたはスナップショットから CMEK で暗号化された新しいディスクを作成し、その新しいディスクのイメージまたはスナップショットを作成する必要があります。

  1. イメージまたはスナップショットから新しい Google Cloud Hyperdisk または Persistent Disk ボリュームを作成します。

  2. 新しいディスクのイメージまたは標準スナップショットを作成します。新しいイメージまたはスナップショットを CMEK で暗号化します。

  3. 以前に作成したディスクを削除します。

CSEK で暗号化されたマシンイメージを移行する

CSEK で暗号化されたマシンイメージから CMEK で暗号化されたマシンイメージを作成するには、マシンイメージから一時インスタンスを作成し、その一時インスタンスから CMEK で暗号化されたマシンイメージを作成する必要があります。手順は次のとおりです。

  1. CSEK で暗号化されたマシンイメージから新しいインスタンスを作成し、マシンイメージ内の各ディスクに Cloud KMS 鍵を指定します。 REST または Google Cloud CLI を使用する必要があります。 マシンイメージの作成時にプロパティをオーバーライドする方法については、 以下をご覧ください。 マシンイメージからインスタンスを作成する(プロパティのオーバーライドあり)

    Google Cloud CLI

    gcloud compute instances create コマンド を使用します。

    gcloud compute instances create NEW_INSTANCE_NAME \
     --project=PROJECT_ID \
     --zone=ZONE \
     --machine-type=INSTANCE_MACHINE_TYPE \
     --source-machine-image=CSEK_MACHINE_IMAGE_NAME \
     --source-machine-image-csek-key-file=PATH_TO_CSEK_KEY_FILE \
     --create-disk=device-name=BOOT_DISK_DEVICE_NAME,boot=yes,auto-delete=yes,kms-key=projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/BOOT_DISK_KMS_KEY \
     --create-disk=device-name=DEVICE_NAME_FOR_DATA_DISK_1,boot=no,kms-key=projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KMS_KEY_FOR_DATA_DISK_1 \
     --create-disk=device-name=DEVICE_NAME_FOR_DATA_DISK_2,boot=no,kms-key=projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KMS_KEY_FOR_DATA_DISK_2
    
    

    次のように置き換えます。

    • NEW_INSTANCE_NAME: 新しいインスタンスの名前(例: migrated-instance)。
    • PROJECT_ID: インスタンスを作成するプロジェクトの ID(例: myproject-123)。
    • ZONE:新しいインスタンスのゾーン(例: us-central1-a)。
    • INSTANCE_MACHINE_TYPE: 新しいインスタンスのマシンタイプ(例: c3-standard-4)。
    • CSEK_MACHINE_IMAGE_NAME:ソースの CSEK で暗号化された マシンイメージの名前。
    • PATH_TO_CSEK_KEY_FILE:ソース マシンイメージの暗号化に使用される CSEK を含むファイルのパス(例: /tmp/csek_key.json)。 必要なファイル形式については、 鍵ファイルの形式をご覧ください。
    • BOOT_DISK_DEVICE_NAME: マシンイメージ内で 定義されているブートディスクの新しいデバイス名。
    • KMS_PROJECT_ID: Cloud KMS 鍵 が配置されているプロジェクト ID。
    • REGION:Cloud KMS 鍵が配置されているリージョン(例: us-central1)。
    • KEY_RING:鍵を含むキーリングの名前。
    • BOOT_DISK_KMS_KEY: 新しいインスタンスのブートディスクの暗号化に使用される Cloud KMS 鍵の名前。
    • DEVICE_NAME_FOR_DATA_DISK_1: ソース マシンイメージ内で定義されている最初のデータ ディスクの新しいデバイス名。
    • KMS_KEY_FOR_DATA_DISK_1:最初のデータディスクの暗号化に使用される Cloud KMS 鍵の名前。
    • KMS_KEY_FOR_DATA_DISK_2: 2 番目のデータディスクの暗号化に使用される Cloud KMS 鍵の名前 。

    REST

    instances.insert メソッドに POST リクエストを送信します

     POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    
     {
        "name": "NEW_INSTANCE_NAME",
        "sourceMachineImage": "projects/PROJECT_ID/global/machineImages/CSEK_MACHINE_IMAGE_NAME",
           "disks": [
           {
              "deviceName": "BOOT_DISK_DEVICE_NAME",
              "boot": true,
              "diskEncryptionKey": {
                 "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/BOOT_DISK_KMS_KEY"
              }
           },
           {
              "deviceName": "DEVICE_NAME_FOR_DATA_DISK_1",
              "boot": false,
              "diskEncryptionKey": {
                 "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KMS_KEY_FOR_DATA_DISK_1"
              }
           },
           {
              "deviceName": "DEVICE_NAME_FOR_DATA_DISK_2",
              "boot": false,
              "diskEncryptionKey": {
                 "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys//KMS_KEY_FOR_DATA_DISK_2"
              }
           }
        ]
     }
    

    次のように置き換えます。

    • PROJECT_ID: 一時インスタンスを作成するプロジェクトのプロジェクト ID(例: myproject-123)。
    • ZONE: 新しいインスタンスのゾーン(例: us-central1-a)。
    • NEW_INSTANCE_NAME: 作成する一時インスタンスの名前(例: migrated-instance)。
    • CSEK_MACHINE_IMAGE_NAME: ソースの CSEK で暗号化されたマシンイメージの名前(例: csek-encrypted-image)。
    • BOOT_DISK_DEVICE_NAME: ソース マシンイメージ内で定義されているブートディスクのデバイス名(例: boot-disk-0)。
    • KMS_PROJECT_ID: Cloud KMS 鍵が配置されているプロジェクト ID。
    • REGION: Cloud KMS 鍵が配置されているリージョン(例: us-central1)。
    • KEY_RING: 暗号鍵を含むキーリングの名前。
    • BOOT_DISK_KMS_KEY: 新しいブートディスクの暗号化に使用される Cloud KMS 鍵の名前。
    • DEVICE_NAME_FOR_DATA_DISK_1: ソース マシンイメージで定義されている最初のデータディスクのデバイス名。
    • KMS_KEY_FOR_DATA_DISK_1: 最初のデータディスクの暗号化に使用される Cloud KMS 鍵の名前。
    • DEVICE_NAME_FOR_DATA_DISK_2: ソース マシンイメージで定義されている 2 番目のデータディスクのデバイス名。
    • KMS_KEY_FOR_DATA_DISK_2: 2 番目のデータディスクの暗号化に使用される Cloud KMS 鍵の名前。
  2. インスタンスが想定どおりに動作することを確認します。

  3. インスタンスをテストしたら、 新しいインスタンスから CMEK で暗号化されたマシンイメージ を作成します。

  4. 一時インスタンスを削除します。

未使用のリソースを削除する

未使用のリソースの費用が発生しないように、不要になったディスク、マシンイメージ、スナップショット、インスタンス、イメージを削除します。

次のステップ