このコンテンツの最終更新日は 2024 年 5 月で、作成時点の状況を表しています。お客様の保護の継続的な改善のために、Google のセキュリティ ポリシーとシステムは変更される場合があります。
顧客指定の暗号鍵(CSEK)は、Cloud Storage と Compute Engine の機能です。お客様が独自の暗号鍵を提供した場合、Google はその鍵を使用して、データの暗号化と複合化に使用される Google 生成の鍵を保護します。
このドキュメントでは、CSEK の仕組みとGoogle Cloudでの保護方法について説明します。
CSEK と Cloud Storage の連携の仕組み
Cloud Storage で CSEK を使用する場合、次の鍵がラップ プロセスの一部になります。
- 未加工の CSEK: 未加工の CSEK を API 呼び出しの一部として指定します。未加工の CSEK 鍵は、Google Front End(GFE)からストレージ システムのメモリに送信されます。この鍵は、データの Cloud Storage の鍵暗号鍵(KEK)です。
 - ラップされたチャンク鍵: 未加工の CSEK は、ラップされたチャンク鍵をラップするために使用されます。
 - 未加工チャンク鍵: ラップされたチャンク鍵は、未加工チャンク鍵をメモリ内にラップします。未加工のチャンク鍵は、ストレージ システムに保存されているデータチャンクの暗号化に使用されます。この鍵は、Cloud Storage でユーザーデータのデータ暗号鍵(DEK)として使用されます。
 
次の図は、鍵ラッピング プロセスを示しています。
次の表に、キーを示します。
| キー | 保存先 | 目的 | アクセス期限 | 
|---|---|---|---|
未加工 CSEK  | 
ストレージ システムのメモリ  | 
ラップされたチャンク鍵を保護します。  | 
顧客が要求したオペレーション(  | 
ラップされたチャンク鍵  | 
ストレージ デバイス  | 
保存されている新しいチャンク鍵を保護します。  | 
ストレージ オブジェクトが削除されるまで  | 
未加工チャンク鍵  | 
ストレージ デバイスのメモリ  | 
ディスクへの読み取りまたは書き込みを行うデータを保護します。  | 
顧客が要求したオペレーションが完了するまで  | 
Compute Engine と CSEK の連携の仕組み
Compute Engine で CSEK を使用する場合、次の鍵がラップ プロセスの一部になります。
- 未加工の CSEK: 未加工の CSEK または RSA でラップされた鍵を API 呼び出しの一部として指定します。CSEK は、GFE から内部クラスタ マネージャーのフロントエンドに送信されます。クラスタ マネージャーは、Google の本番環境インフラストラクチャでクラスタ マネージャー ID で実行される一連のプロセスであり、ディスクや VM インスタンスなどの Compute Engine リソースを管理するロジックを実装します。
 - Google 所有の非対称ラッピング鍵: RSA でラップされた鍵が CSEK として指定されている場合、Google 所有の非対称ラッピング鍵を使用して鍵がラップ解除されます。
 CSEK 派生鍵: 未加工の CSEK は永続ディスクごとの暗号ノンスと結合され、CSEK 派生鍵が生成されます。この鍵は、Compute Engine でデータの KEK として使用されます。クラスタ マネージャーのフロントエンドでは、CSEK および CSEK 派生鍵はクラスタ マネージャーのメモリにのみ保持されます。CSEK 派生鍵はクラスタ マネージャーのメモリ内で、ラップされたディスク鍵のラップを解除するために使用されます。このディスク鍵は、自動再起動が有効になっている場合、クラスタ マネージャーのインスタンス メタデータおよびインスタンス マネージャーのメタデータに格納されます(インスタンス メタデータと同じではありません)。
未加工のディスク鍵: CSEK 派生鍵は、ディスクの作成時には未加工のディスク鍵をラップし、ディスクへのアクセス時には未加工のディスク鍵をラップ解除するために使用されます。次のイベントが発生します。
- 自動再起動が有効になっている場合は、クラッシュ時に VM を再起動できるよう、VM の存続期間中はラップされたディスク鍵がクラスタ マネージャーによって永続的に保存されます。ラップされたディスク鍵は、Google 所有の対称ラッピング鍵でラップされます。ラップ鍵の権限により、Compute Engine でのみ使用できます。自動再起動がオフになっている場合、ラップされたディスク鍵は、Google Cloudでのデータの削除で説明されている削除プロセスを使用して削除されます。
 - ライブ マイグレーションが有効になっている場合は、インスタンス マネージャーまたはクラスタ マネージャーが鍵のコピーに関与することなく、未加工のディスク鍵が古い VM インスタンス メモリから新しい VM インスタンス メモリに渡されます。
 
未加工のディスク鍵は、クラスタ マネージャー(CM)、インスタンス マネージャー、VM のメモリに渡されます。これらの鍵は、Compute Engine でユーザーデータの DEK として使用されます。
次の図は、鍵の暗号化の仕組みを示しています。
| キー | 保持される場所 | 目的 | アクセス期限 | 
|---|---|---|---|
未加工 CSEK  | 
クラスタ マネージャー フロントエンド  | 
暗号ノンスを追加して CSEK 派生鍵を導出します。  | 
顧客が要求したオペレーション(  | 
公開鍵でラップされた CSEK (RSA 鍵のラッピングを使用する場合)  | 
クラスタ マネージャー フロントエンド  | 
まず Google 所有の非対称鍵でラップ解除して、CSEK 派生鍵を導出します。  | 
顧客が要求したオペレーションが完了するまで。  | 
Google 所有の非対称鍵 (RSA 鍵のラッピングを使用する場合)  | 
キーストア  | 
RSA でラップされた鍵をラップ解除します。  | 
期限なし。  | 
CSEK 派生鍵  | 
クラスタ マネージャー フロントエンド  | 
ディスク鍵をラップします。  | 
鍵のラッピングまたはラッピング解除のオペレーションが完了するまで。  | 
Google でラップされたディスク鍵 (自動再起動が使用されている場合)  | 
クラスタ マネージャー フロントエンド  | 
実行中のインスタンスに接続されたディスク用に保存されているディスク鍵を保護します。 VM メモリが失われた場合(ホストのクラッシュなど)にインスタンスを再起動します。  | 
VM が停止または削除されるまで。  | 
未加工のディスク鍵  | 
仮想マシンモニター(VMM)のメモリ、クラスタ マネージャー(CM)のメモリ  | 
ディスクへのデータの書き込み / 読み取り、VM のライブ マイグレーション、およびインプレース アップグレードの実行。  | 
VM が停止または削除されるまで  | 
Google でラップされた CSEK 派生鍵  | 
クラスタ マネージャー データベース  | 
障害発生時にオペレーションを再開します。  | 
顧客が要求したオペレーションが完了するまで  | 
CSEK の保護方法
このセクションでは、CSEK がディスク上、 Google Cloud インフラストラクチャ内での移動中、およびメモリ内でどのように保護されるかについて説明します。
未加工の CSEK、CSEK 派生鍵、未加工のディスク鍵は、暗号化されずにディスクに保存されることはありません。未加工のディスク鍵は、CSEK 派生鍵でラップされるか、自動再起動を使用する場合は Google 鍵でラップされて保存されます。ユーザーの鍵が Google のサーバーに永久保存されることはありません。
各サービスは、インフラストラクチャが提供するアクセス管理機能を使用して、具体的に他のどのサービスが自身と通信できるかを指定します。サービスには許可されたサービス アカウント ID の許可リストが構成され、このアクセス制限が Google Cloudインフラストラクチャによって自動的に適用されます。詳細については、サービス ID、完全性、分離をご覧ください。
また、ネットワーク上の RPC データの暗号化によるプライバシーと完全性もインフラストラクチャから提供されます。各サービスはインフラストラクチャ RPC ごとに必要な暗号保護のレベルを構成でき、それらは CSEK で有効になります。詳細については、ワークロード間通信の暗号化をご覧ください。
鍵マテリアルは、クラスタ マネージャーのメモリや VMM メモリなど、さまざまなシステムのメモリ内に存在します。こうしたシステムのメモリへのアクセスは例外的に(たとえばインシデントの一部として)行われ、アクセス制御リストによって管理されます。これらのシステムではメモリダンプが無効になっているか、メモリダンプ内の鍵マテリアルが自動的にスキャンされています。これらのジョブの保護については、Google が本番環境のサービスを保護する方法をご覧ください。