このドキュメントでは、手動で作成した Cloud Key Management Service の Cloud KMS 鍵を使用して、ディスクやその他のストレージ関連のリソースを暗号化する方法について説明します。Cloud KMS で管理される鍵は、顧客管理の暗号鍵(CMEK)と呼ばれます。
CMEK は、ディスク、マシンイメージ、インスタント スナップショット、標準スナップショットなどの Compute Engine リソースを暗号化するときに使用できます。
顧客管理の暗号鍵(CSEK)を使用してディスクやその他のストレージ リソースを暗号化する方法については、顧客指定の暗号鍵でディスクを暗号化するをご覧ください。
ディスクの暗号化についての詳細をご確認ください。
始める前に
- ディスク、イメージ、永続ディスクのスナップショット、仮想マシン(VM)インスタンスについて理解します。
- Compute Engine と Cloud KMS を同じ Google Cloud プロジェクトで実行するか、別のプロジェクトで実行するかを決定します。Google Cloud プロジェクト ID とプロジェクト番号については、プロジェクトの識別をご覧ください。
- Cloud KMS を実行する Google Cloud プロジェクトで、次の操作を行います。
-
Enable the Cloud KMS API.
-
- + 情報保護モードで新しい Hyperdisk Balanced ボリュームを作成する場合は、関連する制限事項とサポートされているリージョンを確認して、ユースケースがサポートされていることを確認してください。
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud のサービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
KMS_PROJECT_ID
: Cloud KMS を実行している Google Cloud プロジェクトの ID(Compute Engine を実行するプロジェクトと同じプロジェクトの場合も)PROJECT_NUMBER
: Compute Engine リソースを実行する Google Cloud プロジェクトのプロジェクト番号(Google Cloud プロジェクト ID ではありません)CMEK で既存のリソースを暗号化することはできません。ディスク、イメージ、スナップショットは、作成時にのみ CMEK で暗号化できます。
CMEK で暗号化されたインスタント スナップショットからディスクを作成する場合は、ソースディスクの暗号化に使用した鍵を指定する必要があります。ディスククローンや標準スナップショットなど、他の CMEK で暗号化されたリソースを操作する場合は、鍵を指定する必要はありません。
ローカル SSD ディスクでは、鍵は Google Cloud インフラストラクチャにより管理され、VM が停止すると削除されるため、独自の鍵を使用することはできません。
リージョン リソース(ディスク)は、次のいずれかの Cloud KMS ロケーションの鍵でのみ暗号化できます。
- ディスクと同じリージョン内の鍵
- ディスクと同じ地理的ロケーションにあるマルチリージョン鍵
- グローバル ロケーション内の鍵
たとえば、ゾーン
us-west1-a
内のディスクは、グローバル ロケーション、us-west1
リージョン、またはus
マルチリージョンの鍵によって暗号化できます。グローバル リソース(イメージやスナップショットなど)は、任意のロケーションの鍵で暗号化できます。詳細については、Cloud KMS のロケーションの種類をご覧ください。
ディスク、スナップショット、イメージによる鍵の暗号化は永続的です。リソースから暗号化を削除すること、暗号化のタイプを変更すること、使用する鍵を変更することはできません。暗号化を削除または暗号鍵を変更する唯一の方法は、新しい暗号化オプションを指定してリソースのコピーを作成することです。たとえば、ディスクの Google 生成キーから CMEK に変更する手順は次のとおりです。
- ディスクのスナップショットを作成します。
- スナップショットから新しいディスクを作成します。新しいディスクを作成するときに、必要な暗号化タイプを選択します。
詳細については、ディスクタイプを変更するをご覧ください。
- Google Cloud コンソールで、[ディスク] ページに移動します。
- [ディスクを作成] をクリックし、新しいディスクのプロパティを入力します。
- [暗号化] で、[顧客管理の暗号鍵] を選択します。
- プルダウン メニューで、このディスクの暗号化に使用する Cloud KMS 鍵を選択します。
- ディスクを作成するには、[作成] をクリックします。
DISK_NAME
: 新しいディスクの名前KMS_PROJECT_ID
: Cloud KMS 鍵を所有するプロジェクトREGION
: 鍵が配置されているリージョンKEY_RING
: 鍵を含むキーリングの名前KEY
: ディスクの暗号化に使用された鍵の名前PROJECT_ID
: Compute Engine を実行する Google Cloud プロジェクトの IDZONE
: VM を作成するゾーンMACHINE_TYPE
: マシンタイプ(例:c3-standard-4
)。KMS_PROJECT_ID
: Cloud KMS 鍵を所有するプロジェクトREGION
: ディスクが配置されるリージョンKEY_RING
: 鍵を含むキーリングの名前KEY
: ディスクの暗号化に使用された鍵の名前SOURCE_IMAGE
: VM の作成時に使用するイメージ(例:projects/debian-cloud/global/images/debian-11-bullseye-v20231115
)PROJECT_ID
: Compute Engine を実行する Google Cloud プロジェクトの IDZONE
: ディスクを作成するゾーンSOURCE_IMAGE
: ディスクの作成時に使用するイメージ(例:projects/debian-cloud/global/images/debian-11-bullseye-v20231115
)DISK_NAME
: 新しいディスクの名前KMS_PROJECT_ID
: Cloud KMS 鍵を所有するプロジェクトREGION
: ディスクが配置されるリージョンKEY_RING
: 鍵を含むキーリングの名前KEY
: ディスクの暗号化に使用された鍵の名前DISK_TYPE
: 作成するディスクのタイプ。- Google Cloud コンソールで、[ディスク] ページに移動します。
- [ディスクを作成] をクリックし、新しいディスクのプロパティを入力します。
- [ディスクの設定] セクションで、ディスクタイプに [Hyperdisk Balanced] を選択します。
- 省略可。ディスクのデフォルトのディスクの [サイズ]、[プロビジョニングされた IOPS]、[プロビジョニングされたスループット] の設定を変更します。
- [暗号化] セクションで、[Cloud KMS 鍵] を選択します。
- 鍵のリストで、このディスクの暗号化に使用する Cloud HSM 鍵を選択します。
- [Confidential Computing] セクションで、[Confidential Computing サービスを有効にする] を選択します。
- ディスクを作成するには、[作成] をクリックします。
DISK_NAME
: 新しいディスクの名前KMS_PROJECT_ID
: Cloud HSM 鍵を所有するプロジェクトREGION
: 鍵が配置されているリージョンKEY_RING
: 鍵を含むキーリングの名前KEY
: ディスクの暗号化に使用された鍵の名前DISK_TYPE
: 作成するディスクのタイプ。例:hyperdisk-balanced
PROJECT_ID
: Compute Engine を実行する Google Cloud プロジェクトの IDZONE
: VM を作成するゾーンMACHINE_TYPE
: マシンタイプ。例:n2d-standard-4
KMS_PROJECT_ID
: Cloud HSM 鍵を所有するプロジェクトREGION
: ディスクが配置されるリージョンKEY_RING
: 鍵を含むキーリングの名前KEY
: ディスクの暗号化に使用された鍵の名前SOURCE_IMAGE
: VM の作成時に使用する Confidential VM をサポートするイメージ(例:projects/debian-cloud/global/images/debian-11-bullseye-v20231115
)PROJECT_ID
: Compute Engine を実行する Google Cloud プロジェクトの IDZONE
: ディスクを作成するゾーンSOURCE_IMAGE
: ディスクの作成時に Confidential VM をサポートするイメージ。例:projects/debian-cloud/global/images/debian-11-bullseye-v20231115
DISK_NAME
: 新しいディスクの名前KMS_PROJECT_ID
: Cloud HSM 鍵を所有するプロジェクトREGION
: ディスクが配置されるリージョンKEY_RING
: 鍵を含むキーリングの名前KEY
: ディスクの暗号化に使用された鍵の名前DISK_TYPE
: 作成するディスクのタイプ。例:hyperdisk-balanced
- Google Cloud コンソールで、[スナップショット] ページに移動します。
- [スナップショットを作成] をクリックします。
- [ソースディスク] で、スナップショットのソースディスクを選択します。スナップショットは、ソースディスクと同じ鍵で自動的に暗号化されます。
スナップショット設定で構成した事前定義またはカスタマイズされたデフォルトの場所にスナップショットを作成するには、
gcloud compute snapshots create
コマンドを使用します。gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE
-
また、スナップショット設定をオーバーライドしてスナップショットをカスタマイズされた保存場所に作成するには、
--storage-location
フラグを含めて、スナップショットの保存先を指定します。gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --storage-location=STORAGE_LOCATION
次のように置き換えます。
- SNAPSHOT_NAME: スナップショットの名前。
- SOURCE_ZONE: ソースディスクのゾーン。
- SOURCE_DISK_NAME: スナップショットを作成するディスク ボリュームの名前。
- SNAPSHOT_TYPE: スナップショットの種類(標準またはアーカイブ)。スナップショットの種類が指定されていない場合は、
STANDARD
(標準)スナップショットが作成されます。 -
STORAGE_LOCATION: スナップショットを保存する Cloud Storage マルチリージョンまたは Cloud Storage リージョン(オプション)。保存場所は 1 つだけ指定できます。
--storage-location
パラメータは、スナップショット設定で構成した事前定義またはカスタマイズされたデフォルトの保存場所をオーバーライドする場合にのみ使用します。
-
スナップショット設定で構成した事前定義またはカスタマイズされたデフォルトの場所にスナップショットを作成するには、
snapshots.insert
メソッドにPOST
リクエストを発行します。POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY" }, "snapshotType": "SNAPSHOT_TYPE" }
-
または、スナップショット設定をオーバーライドしてカスタマイズされた保存場所にスナップショットを作成するには、
snapshots.insert
メソッドにPOST
リクエストをstorageLocations
プロパティを含めて送信します。POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY" }, "snapshotType": "SNAPSHOT_TYPE", "storageLocations": [ "STORAGE_LOCATION" ], }
- DESTINATION_PROJECT_ID: スナップショットを作成するプロジェクトの ID。
- SNAPSHOT_NAME: スナップショットの名前。
- SOURCE_PROJECT_ID: ソースディスク プロジェクトの ID。
- SOURCE_ZONE: ソースディスクのゾーン。
- SOURCE_DISK_NAME: スナップショットを作成するディスクの名前。
- KMS_PROJECT_ID: Cloud Key Management Service に保存されている暗号鍵を含むプロジェクト。
- KEY_REGION: Cloud KMS 鍵が配置されているリージョン。
- KEY_RING: Cloud KMS 鍵を含むキーリングの名前。
- SNAPSHOT_KEY: ソースディスクの暗号化に使用した Cloud KMS 鍵の名前。
- SNAPSHOT_TYPE: スナップショットの種類(標準またはアーカイブ)。
スナップショットの種類が指定されていない場合は、
STANDARD
(標準)スナップショットが作成されます。 -
STORAGE_LOCATION: スナップショットを保存する Cloud Storage マルチリージョンまたは Cloud Storage リージョン(オプション)。保存場所は 1 つだけ指定できます。
storageLocations
パラメータは、スナップショット設定で構成した事前定義またはカスタマイズされたデフォルトの保存場所をオーバーライドする場合にのみ使用します。 - Google Cloud コンソールで、[イメージ] ページに移動します。
- [イメージを作成] をクリックします。
- [ソースディスク] で、イメージを作成するディスクを選択します。
- [暗号化] で、[顧客管理の暗号鍵] を選択します。
- プルダウン メニューで、このイメージの暗号化に使用する Cloud KMS 鍵を選択します。
- イメージ作成プロセスを続けます。
IMAGE_NAME
: 作成するイメージの名前SOURCE_DISK
: スナップショットを作成するディスクの名前KMS_PROJECT_ID
: Cloud KMS 鍵を含むプロジェクトREGION
: Cloud KMS 鍵が配置されているリージョンKEY_RING
: Cloud KMS 鍵を含むキーリングKEY
: 新しいディスクの暗号化に使用する鍵の名前PROJECT_ID
: 暗号化されたイメージを作成するプロジェクトIMAGE_NAME
: 作成するイメージの名前KMS_PROJECT_ID
: Cloud KMS 鍵を含むプロジェクトREGION
: Cloud KMS 鍵が配置されているリージョンKEY_RING
: Cloud KMS 鍵を含むキーリングKEY
: ソースディスクの暗号化に使用した鍵の名前- Google Cloud コンソールで、[ディスク] ページに移動します。
- [ディスクを作成] をクリックし、新しいディスクのプロパティを入力します。
- [ソースの種類] で使用するスナップショットまたはイメージを選択します。
省略可: 新しい暗号鍵を指定する場合は、[暗号化] で使用する暗号鍵のタイプを指定し、暗号鍵の情報を入力します。
顧客管理の暗号鍵または顧客指定の暗号鍵を削除するには、[暗号化] でデフォルト値の [Google が管理する暗号鍵] を使用します。
Persistent Disk の作成プロセスを続けます。
DISK_NAME
: 新しいディスクの名前SNAPSHOT_NAME
: 暗号化されたスナップショットの名前スナップショットの代わりにイメージを使用するには、
--source-snapshot SNAPSHOT_NAME
を--image IMAGE_NAME
に置き換えます。KMS_PROJECT_ID
: 省略可。Cloud KMS 鍵を含むプロジェクトREGION
: 省略可。Cloud KMS 鍵が配置されているリージョンKEY_RING
: 省略可。Cloud KMS 鍵を含むキーリングKEY
: 省略可。新しいディスクの暗号化に使用する Cloud KMS 鍵の名前新しいディスクを暗号化するには、次のいずれかを行います。
- 新しい顧客管理の暗号鍵を指定するには、
--kms-key
フラグを使用します。 - Google が所有し管理するデフォルトの鍵を使用するには、
--kms-key
フラグを指定しないでください。
- 新しい顧客管理の暗号鍵を指定するには、
PROJECT_ID
: 新しいディスクを作成するプロジェクトZONE
: 新しいディスクを作成するゾーン。DISK_NAME
: 新しいディスクの名前SNAPSHOT_PROJECT_ID
: スナップショットを含むプロジェクトSNAPSHOT_NAME
: 暗号化されたスナップショットの名前スナップショットの代わりにイメージを使用するには、
sourceSnapshot
をsourceImage
に置き換えます。KMS_PROJECT_ID
: 省略可。Cloud KMS 鍵を含むプロジェクトREGION
: 省略可。Cloud KMS 鍵が配置されているリージョンKEY_RING
: 省略可。Cloud KMS 鍵を含むキーリングKEY
: 省略可。新しいディスクの暗号化に使用する Cloud KMS 鍵の名前diskEncryptionKey
を指定すると、指定された Cloud KMS 鍵を使用してディスクが暗号化されます。diskEncryptionKey
を指定しない場合、Google が所有し、Google が管理する鍵を使用してディスクが暗号化されます。Google Cloud コンソールで、[インスタンスの作成] ページに移動します。
VM の詳細を指定し、[ブートディスク] セクションで [変更] をクリックします。次に、以下の操作を行います。
- [既存のディスク] をクリックします。
- [ディスク] リストで、VM にアタッチする既存のディスクを選択します。
- [選択] をクリックします。
VM 作成プロセスを続行します。
VM_NAME
: 作成する VM の名前DISK_NAME
: 暗号化されたディスクの名前PROJECT_ID
: 新しい VM を作成するプロジェクトZONE
: 新しい VM を作成するゾーンDISK_ALIAS
: Linux オペレーティング システムを実行する VM の/dev/disk/by-id/google-*
ディレクトリでディスク エイリアスとして使用する一意のデバイス名。この名前を使用して、インスタンス内からマウントやサイズ変更などのオペレーションでディスクを参照できます。デバイス名を指定しない場合、VM はこのディスクに適用するデフォルトのデバイス名を選択します。このデバイス名の形式はpersistent-disk-x
であり、x
は Compute Engine により割り当てられた番号です。このフィールドは、Persistent Disk ボリュームにのみ適用されます。DISK_NAME
: 暗号化されたディスクの名前- 暗号化されたディスクのスナップショットを作成します。
- 暗号化された新しいスナップショットを使用して、新しい永続ディスクを作成します。
- Cloud KMS 鍵をローテーションします。
- 暗号化されたディスクのスナップショットを作成します。
- 新しいスナップショットを使用して、前の手順でローテーションした鍵で新しいディスクを作成します。
- 古い暗号鍵を使用している VM にアタッチされているディスクを交換します。
- アタッチされたディスクのいずれかに取り消し済みの鍵がある場合、VM を起動できません。
- 鍵を使用するディスクが実行中の VM にアタッチされていて、VM で鍵取り消し時の VM シャットダウンを有効にしている場合、Compute Engine は 7 時間以内に VM をシャットダウンします。
- 取り消された鍵を含むディスクを VM にアタッチしたり、ディスクからスナップショットを作成したりすることはできません。
- 取り消された鍵で暗号化されたイメージまたはスナップショットを使用してディスクを作成することはできません。
- Cloud KMS 鍵で保護されているディスクを含む VM の作成を開始します。
- [ネットワーキング、ディスク、セキュリティ、管理、単一テナンシー] メニューを開きます。
- [管理] セクションを開きます。
- [顧客管理の暗号鍵(CMEK)の取り消しポリシー] で [シャットダウン] を選択します。
- Cloud KMS 鍵で保護されているディスクを含む新しいインスタンス テンプレートの作成を開始します。
- [ネットワーキング、ディスク、セキュリティ、管理、単一テナンシー] メニューを開きます。
- [管理] セクションを開きます。
- [顧客管理の暗号鍵(CMEK)の取り消しポリシー] で [シャットダウン] を選択します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
必要なロール
Compute Engine サービス エージェントに、Cloud KMS 鍵を使用してリソースを保護するために必要な権限を付与するには、プロジェクトに対するクラウド KMS 暗号鍵の暗号化 / 復号(
roles/cloudkms.cryptoKeyEncrypterDecrypter
)IAM ロールを Compute Engine サービス エージェントに付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。管理者は、カスタムロールや他の事前定義ロールを使用して、Compute Engine サービス エージェントに必要な権限を付与することもできます。
Compute Engine サービス エージェントの形式は次のとおりです。
service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
ロールの割り当てには、Google Cloud CLI を使用できます。
gcloud projects add-iam-policy-binding KMS_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
以下を置き換えます。
暗号化の仕様
Compute Engine でデータを保護するために使用される Cloud KMS 鍵は、AES-256 鍵です。これらの鍵は鍵暗号鍵であり、データ自体を暗号化するのではなく、データを暗号化するデータ暗号鍵を暗号化します。
ディスク上のデータは、Google が所有し、Google が管理する鍵を使用して暗号化されます。Google Cloud のデフォルトの暗号化に関する仕様については、セキュリティ ドキュメントのデフォルトの保存データの暗号化をご覧ください。
Hyperdisk Balanced と Cloud HSM の情報保護モードでは、データ暗号鍵(DEK)にハードウェアベース エンクレーブによる追加のセキュリティ プロパティが付与されます。
制限事項
手動または自動での鍵の作成
Cloud KMS 鍵は手動で作成することも、Cloud KMS Autokey で作成することもできます。Autokey は、プロビジョニングと割り当てを自動化することで、Cloud KMS 鍵の作成と管理を簡素化します。Autokey を使用する場合、キーリング、鍵、サービス アカウントを事前にプロビジョニングする必要はありません。これらは、Compute Engine リソースの作成中にオンデマンドで生成されます。詳細については、Autokey の概要をご覧ください。
キーリングと鍵を手動で作成する
Cloud KMS を実行する Google Cloud プロジェクトでは、キーリングと鍵の作成の説明に沿ってキーリングと鍵を作成します。
CMEK で新しい Persistent Disk を暗号化する
VM またはディスクの作成時に鍵を指定することにより、新しい Persistent Disk を暗号化できます。
コンソール
gcloud
gcloud compute disks create
コマンドを使用して暗号化されたディスクを作成し、--kms-key
フラグを使用して鍵を指定します。gcloud compute disks create DISK_NAME \ --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
次のように置き換えます。
REST
instances.insert
メソッドに対してPOST
リクエストを作成します。ディスクを暗号化するには、diskEncryptionKey
プロパティでkmsKeyName
プロパティを使用します。たとえば、VM の作成時に Cloud KMS 鍵を使用して新しいディスクを暗号化するには、次のコマンドを使用します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [ { "type": "PERSISTENT", "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY" }, "initializeParams": { "sourceImage": "SOURCE_IMAGE" }, "boot": true } ], ... }
以下を置き換えます。
同様に、
disks.insert
メソッドを使用して新しいスタンドアロン Persistent Disk を作成し、Cloud KMS 鍵で暗号化できます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks?sourceImage=SOURCE_IMAGE { "name": "DISK_NAME", "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY" }, "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE" }
次のように置き換えます。
情報保護モードで Hyperdisk Balanced ディスクを作成する
新しい Hyperdisk Balanced ディスクを情報保護モードで作成するには、Google Cloud コンソール、Google Cloud CLI、または REST を使用します。
Console
gcloud
gcloud compute disks create
コマンドを使用して、Hyperdisk Balanced の情報保護モードで新しいディスクを暗号化します。--confidential-compute
フラグを使用して情報保護モードを有効にし、--kms-key
フラグを使用して鍵を指定します。gcloud compute disks create DISK_NAME \ --type=hyperdisk-balanced \ --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY \ --confidential-compute
次のように置き換えます。
REST
instances.insert
メソッドに対してPOST
リクエストを作成します。Hyperdisk Balanced の情報保護モードでディスクを暗号化するには、diskEncryptionKey
プロパティでkmsKeyName
プロパティを使用し、enableConfidentialCompute
フラグを設定します。たとえば、VM の作成時に Cloud HSM 鍵を使用して新しいディスクを暗号化するには、次のコマンドを使用します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [ { "type": "DISK_TYPE", "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY" }, "initializeParams": { "sourceImage": "SOURCE_IMAGE", "enableConfidentialCompute": true }, "boot": true } ], "networkInterfaces": [ { "network": "global/networks/default" } ] }
次のように置き換えます。
同様に、
disks.insert
メソッドを使用して、Hyperdisk Balanced の新しい Confidential モードを作成できます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks?sourceImage=SOURCE_IMAGE { "name": "DISK_NAME", "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY" }, "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE", "enableConfidentialCompute": true }
次のように置き換えます。
CMEK で暗号化されたディスクからスナップショットを作成する
CMEK で暗号化されたディスクから作成されたスナップショットを保護するには、ディスクの暗号化に使用した同じ暗号鍵を使用する必要があります。
ソースディスクが CMEK を使用していない場合は、CMEK を使用するスナップショットは作成できません。また、CMEK で暗号化されたディスクまたはスナップショットを変換して Google Cloud のデフォルトの暗号化を使用することはできません。このためには、まったく新しいディスク イメージと新しい永続ディスクを作成する必要があります。
CMEK で暗号化されたディスクのスナップショットは増分です。
コンソール
gcloud
顧客管理の暗号化では、ディスクの暗号化に使用された Cloud KMS 鍵が、スナップショットの暗号化にも使用されます。
スナップショットは、スナップショット設定で定義された保存場所ポリシー内に作成するか、別の保存場所を使用して作成できます。詳細については、スナップショットの保存場所を選択するをご覧ください。
REST
スナップショットは、スナップショット設定で定義された保存場所ポリシー内に作成することも、別のお好きな保存場所を使用して作成することもできます。詳細については、スナップショットの保存場所を選択するをご覧ください。
次のように置き換えます。
インポートしたイメージを CMEK で暗号化する
Compute Engine へのカスタム イメージのインポート時に新しいイメージを暗号化できます。イメージをインポートする前に、ディスク イメージ ファイルを作成して圧縮し、圧縮したファイルを Cloud Storage にアップロードする必要があります。
コンソール
gcloud
イメージをインポートして暗号化するには、
gcloud compute images create
コマンドを使用します。顧客管理の暗号化の場合は、イメージの Cloud KMS 鍵を指定します。gcloud compute images create IMAGE_NAME \ --source-disk=SOURCE_DISK \ --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
次のように置き換えます。
REST
インポートしたイメージを暗号化するには、
images.insert
メソッドに対するPOST
リクエストを作成します。圧縮されたファイルの URI を指定し、イメージ作成リクエストにimageEncryptionKey
プロパティを追加して、イメージを暗号化するための鍵をkmsKeyName
プロパティに指定します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images { "rawDisk": { "source": "http://storage.googleapis.com/example-image/example-image.tar.gz" }, "name": "IMAGE_NAME", "sourceType": "RAW", "imageEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY" } }
次のように置き換えます。
CMEK で暗号化されたスナップショットから Persistent Disk を作成する
暗号化されたスナップショットを使用して新しいスタンドアロンの Persistent Disk を作成する手順は次のとおりです。
コンソール
gcloud
暗号化されたスナップショットから新しいスタンドアロン Persistent Disk を作成するには、
gcloud compute disks create
コマンドを使用します。gcloud compute disks create DISK_NAME \ --source-snapshot SNAPSHOT_NAME \ --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
次のように置き換えます。
REST
暗号化されたスナップショットから新しいスタンドアロン Persistent Disk を作成するため、
compute.disks.insert
メソッドに対するPOST
リクエストを作成します。sourceSnapshot
プロパティを使用してスナップショットを指定します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks { "name": "DISK_NAME", "sourceSnapshot": "projects/SNAPSHOT_PROJECT_ID/global/snapshots/SNAPSHOT_NAME", "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY" } }
次のように置き換えます。
CMEK で暗号化されたブートディスクを新しい VM にアタッチする
Console
gcloud
新しい VM を作成するときに暗号化されたディスクをアタッチするには、
gcloud compute instances create
コマンドを使用します。暗号化されたブートディスクを指定するには、次の例のように--disk
フラグを使用します。gcloud compute instances create VM_NAME \ ... --disk name=DISK_NAME,boot=yes
次のように置き換えます。
REST
compute.instances.insert
メソッドに対してPOST
リクエストを作成します。次の例に示すように、disks
プロパティを使用して、暗号化されたブートディスクを指定します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "disks": [ { "deviceName": "DISK_ALIAS", "source": "projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME" } ] }
次のように置き換えます。
Persistent Disk から Cloud KMS 暗号鍵を削除する
暗号化されたディスクの内容を復号し、代わりに Google Cloud のデフォルトの暗号化を使用する新しいディスクを作成できます。Google Cloud はデフォルトですべての保存データを暗号化します。
新しい Persistent Disk を作成すると、Google Cloud のデフォルトの暗号化を使用してディスクの内容が保護されます。そのディスクから作成されるスナップショットはいずれも、デフォルトの暗号化を使用する必要があります。
ディスクの Cloud KMS 暗号鍵をローテーションする
新しい Cloud KMS 鍵バージョンを使用する新しいディスクを作成し、ディスクの暗号化に使用する鍵をローテーションします。鍵のローテーションは、標準化されたセキュリティ プラクティスを遵守するためのベスト プラクティスです。鍵をローテーションする手順は次のとおりです。
新しいディスクを作成すると、新しい鍵バージョンが暗号化に使用されます。そのディスクから作成するスナップショットでは、最新の主キーのバージョンが使用されます。
鍵をローテーションする場合、以前の鍵バージョンで暗号化されたデータは自動的に再暗号化されません。詳細については、データの再暗号化をご覧ください。鍵をローテーションしても、既存の鍵バージョンが自動的に無効化または破棄されることはありません。
CMEK を無効化または削除する
CMEK が不要になった場合や、使用を防ぐ場合は、鍵を削除するか無効にします。鍵に対する IAM 権限の削除、無効化、または削除は、鍵の取り消しとも呼ばれます。
暗号化されたリソースに対する鍵の取り消しの影響
暗号鍵を取り消すと、鍵で保護されているリソースに次のような影響があります。
鍵を無効にしている場合は、鍵を有効にすることで上記の影響を元に戻すことができます。キーを削除した場合、上記の影響を元に戻すことはできません。
Cloud KMS 鍵取り消し時の VM シャットダウンを構成する
VM にアタッチされているディスクを保護する Cloud KMS 鍵を取り消すと、VM を自動的にシャットダウンするように構成できます。鍵を取り消すには、鍵を無効化または削除します。この設定を有効にすると、VM は鍵の取り消しから 7 時間以内にシャットダウンされます。
鍵を再度有効にすると、鍵で保護されたディスクがアタッチされた VM を再起動できます。鍵を有効にした後、VM は自動的に再起動されません。
Console
Cloud KMS 鍵が取り消されたときにシャットダウンするように VM を構成するには、次の操作を行います。
gcloud
VM を作成するには
gcloud compute instances create
コマンドを使用し、--key-revocation-action-type=stop
を指定します。gcloud compute instances create
VM_NAME
\ --imageIMAGE
\ --key-revocation-action-type=stopREST
instances.insert
メソッドを使用して VM を作成し、プロパティ"keyRevocationActionType"
を"STOP"
に設定します。次の例では、公開イメージから VM を作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name": "
VM_NAME
", "disks": [ { "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot": true } ], "keyRevocationActionType": "STOP" }また、Google Cloud CLI または REST を使用して、鍵取り消し時にシャットダウンされる VM を作成するインスタンス テンプレートを構成することもできます。
コンソール
インスタンス テンプレートを使用して、Cloud KMS 鍵の取り消し時にシャットダウンされる VM を作成できます。
gcloud
gcloud compute instance-templates create
コマンドを使用してインスタンス テンプレートを作成し、--key-revocation-action-type=stop
を指定します。gcloud compute instance-templates create
INSTANCE_TEMPLATE_NAME
\ --key-revocation-action-type=stopREST
instanceTemplates.insert
メソッドに対する POST リクエストを作成します。リクエスト本文で、必要なすべての構成フィールドを明示的に定義する必要があります。このテンプレートから作成された VM を鍵取り消し時にシャットダウンする場合は、"keyRevocationActionType":"STOP"
を指定します。 たとえば、鍵取り消し時にシャットダウンされる VM を作成するために最小限必要なフィールドを持つインスタンス テンプレートは、次のようになります。POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID
/zones/ZONE
/instanceTemplates { "name": "example-template", "properties": { "machineType": "e2-standard-4", "networkInterfaces": [ { "network": "global/networks/default", "accessConfigs": [ { "name": "external-IP", "type": "ONE_TO_ONE_NAT" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/family/debian-11" } } ], "keyRevocationActionType": "STOP" } }Cloud KMS の取り消し時にシャットダウンされるように構成された VM を作成してから、Cloud KMS 鍵で暗号化された Persistent Disk を作成してアタッチします。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-05 UTC。
-