このページでは、顧客管理の暗号鍵と Cloud Storage での使用方法について説明します。他の暗号化オプションについては、データ暗号化オプションをご覧ください。
概要
鍵オペレーションを Google が管理する暗号鍵よりも細かく制御する必要がある場合は、顧客管理の暗号鍵を使用できます。これらの鍵は Cloud Key Management Service を使用して作成および管理され、HSM クラスタまたは外部にソフトウェア鍵として保存されます。個々のオブジェクトに顧客管理の暗号鍵を使用できます。また、バケットに追加されたすべての新しいオブジェクトで鍵がデフォルトで使用されるようにバケットを構成することもできます。
鍵はいつ使用されますか?
顧客管理の暗号鍵をオブジェクトに適用すると、Cloud Storage は次のものを暗号化するときに鍵を使用します。
- オブジェクトのデータ
- オブジェクトの CRC32C チェックサム
- オブジェクトの MD5 ハッシュ
Cloud Storage は、オブジェクトの名前など、オブジェクトの残りのメタデータを、標準のサーバー側の鍵を使用して暗号化します。そのため、十分な権限を持っていれば、関連する顧客管理の暗号鍵を無効化または破棄した後でも、ほとんどのメタデータの読み取り、オブジェクトの一覧表示、オブジェクトの削除などの操作を実行できます。
サービス エージェント
各プロジェクトには、サービス エージェントという特別な Cloud Storage サービス アカウントがあり、顧客管理の暗号鍵で暗号化と復号を行います。暗号鍵へのアクセス権をサービス エージェントに付与すると、そのサービス エージェントは次のものを暗号化できます。
- その鍵をデフォルト鍵として使用するバケットに追加されたオブジェクト。
- その鍵を使用して暗号化することをユーザーが指示した特定のオブジェクト。
Cloud Storage でオブジェクトを追加したり書き換えたりする際に、バケットにデフォルトの暗号鍵を設定しているだけでなくリクエストにも特定の鍵を含めている場合、Cloud Storage ではオブジェクトの暗号化にその特定の鍵が使用されます。
リクエスト元は、顧客管理の暗号鍵によって暗号化されたオブジェクトを読み取る場合、通常どおりの方法で単純にオブジェクトにアクセスします。このようなリクエストの処理中に、以下の条件が該当すると、リクエストされたオブジェクトがサービス エージェントによって自動的に復号されます。
- サービス エージェントに、その鍵を使用して複合化する権限が引き続き保持されている。
- その鍵を無効化も破棄もしていない。
この条件が 1 つでも満たされない場合、サービス エージェントでデータが復号されず、リクエストは失敗します。
制限事項
顧客管理の暗号鍵を使用する場合は次の制限が適用されます。
オブジェクトのメタデータを更新する方法では、顧客管理の暗号鍵によってオブジェクトを暗号化できません。代わりに、オブジェクトの書き換えの一部としてその暗号鍵を含めてください。
Cloud KMS 鍵は、暗号化するデータと同じロケーションに作成する必要があります。たとえば、バケットが
US-EAST1
にある場合、そのバケット内のオブジェクトを暗号化する Cloud KMS 鍵もUS-EAST1
で作成する必要があります。指定できる Cloud KMS のロケーションについては、Cloud KMS のロケーションをご覧ください。Cloud KMS の暗号化と復号の割合は、割り当ての対象になります。
顧客指定の暗号鍵との関係
Cloud Storage には、データ暗号化を制御する方法として、顧客管理の暗号鍵のほかに顧客指定の暗号鍵が用意されています。1 つのバケット内のオブジェクトをそれぞれ異なる暗号化方式を使用して暗号化できますが、次の点に注意してください。
1 つのオブジェクトの暗号化に使用できる暗号化方式は一度に 1 種類です。
バケットに対してデフォルトの顧客管理の暗号鍵を設定していて、リクエスト内で顧客指定の暗号鍵を指定した場合、Cloud Storage ではオブジェクトの暗号化に顧客指定の暗号鍵が使用されます。
鍵管理
このセクションでは、鍵のローテーション、鍵の置換、鍵バージョンの無効化または破棄に関する考慮事項について説明します。
鍵のローテーション
Cloud KMS は、新しいバージョンに対して自動と手動どちらの鍵のローテーションもサポートしています。鍵をローテーションした後で、Cloud Storage は、鍵を使用して暗号化するすべてのオペレーション新しいバージョンを使用します。オペレーションの例を次に示します。
転送先バケットが鍵をデフォルトの暗号鍵として使用するときの、オブジェクトのアップロード。
鍵を明示的に使用するオブジェクトのアップロード、コピー、リライト オペレーション。
以前のバージョンの鍵は無効化も破棄もされないため、Cloud Storage は、そのバージョンを使用して暗号化された既存のオブジェクトを引き続き復号できます。
鍵の置き換え
Cloud Storage オブジェクトの暗号化に使用する鍵を新しい鍵に置き換える場合は、次のガイドラインを参考にしてください。
鍵をデフォルトの暗号鍵として使用するには、バケットをチェックします。これらのバケットについて、古い鍵を新しい鍵に置き換えます。
これで、バケットに書き込まれたすべてのオブジェクトで、新しい鍵が使用されるようになります。
ソースコードを調べて、バケット構成やオブジェクトのアップロード、コピー、リライトなど、進行中のオペレーションでどのリクエストが鍵を使用しているか把握します。把握したリクエストで新しい鍵を使用するように更新します。
すべてのバケットについて、古い鍵で暗号化されたオブジェクトをチェックします。オブジェクト書き換えメソッドを使用して、新しい鍵を使用して各オブジェクトを再暗号化します。
古い鍵のすべてのバージョンを無効にします。古い鍵バージョンを無効にした後、特定のバージョンが使用できないために失敗したオペレーションのクライアント ログとサービスログをモニタリングします。
鍵バージョンの無効化または破棄
特定の鍵バージョンを無効または破棄する場合、現在その鍵バージョンで暗号化されているオブジェクトを復号することはできません。
たとえば、オブジェクトのダウンロード、コピー、リライトができず、そのようなオペレーションを行うとエラーになります。
無効にした鍵バージョンは再び有効にできます。再度有効にすると、その鍵バージョンで暗号化されていたオブジェクトにアクセスできるようになります。
鍵バージョンを破棄すると、そのバージョンで暗号化されていたオブジェクトのダウンロードはできなくなります。
鍵バージョンを無効化または破棄する前に、特定の鍵バージョンを使用して暗号化されたすべてのオブジェクトを、すべてのバケットの中から特定する必要があります。オブジェクトが特定できたら、オブジェクト書き換えメソッドで、新しい鍵バージョン、新しい鍵、サーバー側の鍵のいずれかを使用して各オブジェクトを再暗号化します。
鍵のメインのバージョンを無効または破棄すると、新しいメインのバージョンが作成されるまで、その鍵を暗号化に使用することはできません。たとえば、メインのバージョンがない場合には、次のようになります。
オブジェクトのアップロード、コピー、リライトの一部として鍵を指定することはできません。
別の有効な鍵をオペレーションの一部として指定しない限り、鍵をデフォルトの暗号鍵として設定しているバケットに対し、オブジェクトのアップロード、コピー、リライトができません。
鍵のメインのバージョンを取得したら、その鍵を使用してオブジェクトを暗号化するオペレーションが成功します。
鍵のメインのバージョンを無効化または破棄する前に、このバージョンをメインのバージョンとして使用することを停止する必要があります。これは、次のいずれかの方法で行うことができます。
- 新しいメインのバージョンに置き換える(通常は鍵のローテーションを行う)。
- 暗号化に鍵を使用するインスタンスを削除する。この場合、Cloud Storage は代わりにサーバー側の鍵を使用して暗号化を行います。
Storage Transfer Service の転送中に鍵を保持する
転送元オブジェクトが顧客管理の暗号鍵を Storage Transfer Service の転送の一部として使用している場合には、kmsKey
フィールドを転送の metadataOptions
に含めることで顧客管理の暗号鍵を保存できます。
デフォルトの動作では、宛先バケットの暗号化メソッドを使用してオブジェクトを書き込みます。転送を実行する前に、宛先バケットにデフォルトの顧客管理の暗号鍵を設定できます。
次のステップ
- Cloud Storage のバケットとオブジェクトに顧客管理の暗号鍵を設定する。
- Cloud KMS の料金を確認する。
- Cloud Storage での暗号化の詳細を確認する。
- Cloud KMS の詳細を確認する。