顧客管理の暗号鍵

サンプルに移動

このページでは、顧客管理の暗号鍵と Cloud Storage での使用方法について説明します。他の暗号化オプションについては、データ暗号化オプションをご覧ください。

概要

Google で管理する暗号鍵に加えて、Cloud Key Management Service によって生成された鍵を使用することもできます。この鍵は、顧客管理の暗号鍵と呼ばれます。顧客管理の暗号鍵を使用する場合、その鍵は Cloud KMS に保存されます。暗号鍵を保持するプロジェクトをバケットを含むプロジェクトから切り離すことで、職掌分散を適切に実施できます。

鍵がいつ使用されるのか

顧客管理の暗号鍵をオブジェクトに適用すると、Cloud Storage は次のものを暗号化するときに鍵を使用します。

  • オブジェクトのデータ
  • オブジェクトの CRC32C チェックサム
  • オブジェクトの MD5 ハッシュ

Cloud Storage は、オブジェクトの名前など、オブジェクトの残りのメタデータを、標準のサーバー側の鍵を使用して暗号化します。そのため、十分な権限を持っていれば、関連する顧客管理の暗号鍵を無効化または破棄した後でも、ほとんどのメタデータの読み取り、オブジェクトの一覧表示、オブジェクトの削除などの操作を実行できます。

サービス アカウント

顧客管理の暗号鍵による暗号化と復号は、サービス アカウントを使用して実施できます。暗号鍵へのアクセス権をお使いの Cloud Storage サービス アカウントに付与すると、そのサービス アカウントによって以下を暗号化できます。

Cloud Storage でオブジェクトを追加したり書き換えたりする際に、バケットにデフォルトの暗号鍵を設定しているだけでなくリクエストにも特定の鍵を含めている場合、Cloud Storage ではオブジェクトの暗号化にその特定の鍵が使用されます。

リクエスト元は、顧客管理の暗号鍵によって暗号化されたオブジェクトを読み取る場合、通常どおりの方法で単純にオブジェクトにアクセスします。このようなリクエストの処理中に、以下の条件が該当すると、リクエストされたオブジェクトがサービス アカウントによって自動的に復号されます。

  • サービス アカウントに、その鍵を使用して複合化する権限が引き続き保持されている。
  • その鍵を無効化も破棄もしていない。

この条件が 1 つでも満たされない場合、サービス アカウントでデータが復号されず、リクエストは失敗します。

鍵リソース

Cloud KMS 鍵リソースの形式は次のとおりです。

projects/[PROJECT_STORING_KEYS]/locations/[LOCATION]/keyRings/[KEY_RING_NAME]/cryptoKeys/[KEY_NAME]

ここで

  • [PROJECT_STORING_KEYS] は、鍵に関連付けられているプロジェクトの ID です。 例: my-pet-project
  • [LOCATION] は、鍵のロケーションです。例: US-EAST1
  • [KEY_RING_NAME] はキーリングの名前です。例: my-key-ring
  • [KEY_NAME] は鍵の名前です。例: my-key

制限事項

顧客管理の暗号鍵を使用する場合は次の制限が適用されます。

  • 1 つ以上のソース オブジェクトが顧客管理の暗号鍵で暗号化されている場合、JSON API の オブジェクト作成メソッドは使用できません。

  • オブジェクトのメタデータを更新する方法では、顧客管理の暗号鍵によってオブジェクトを暗号化できません。代わりに、オブジェクトの書き換えの一部としてその暗号鍵を含めてください。

  • Cloud KMS 鍵は、暗号化するデータと同じロケーションに作成する必要があります。たとえば、バケットが US-EAST1 にある場合、そのバケット内のオブジェクトを暗号化する Cloud KMS 鍵も US-EAST1 で作成する必要があります。指定できる Cloud KMS のロケーションについては、Cloud KMS のロケーションをご覧ください。

  • Storage Transfer Service による転送時には顧客管理の暗号鍵は指定できません。転送元オブジェクトで顧客管理の暗号鍵が使用されていても、転送されるオブジェクトにその鍵は適用されません。転送を行う前に、バケットにデフォルトの顧客管理の暗号鍵を設定してください。

顧客指定の暗号鍵との関係

Cloud Storage には、データ暗号化を制御する方法として、顧客管理の暗号鍵のほかに顧客指定の暗号鍵が用意されています。1 つのバケット内のオブジェクトをそれぞれ異なる暗号化方式を使用して暗号化できますが、次の点に注意してください。

  • 1 つのオブジェクトの暗号化に使用できる暗号化方式は一度に 1 種類です。

  • バケットに対してデフォルトの顧客管理の暗号鍵を設定していて、リクエスト内で顧客指定の暗号鍵を指定した場合、Cloud Storage ではオブジェクトの暗号化に顧客指定の暗号鍵が使用されます。

  • バケットに対してデフォルトの顧客管理の暗号鍵の設定はできますが、デフォルトの顧客指定の暗号鍵の設定はできません。

鍵の管理: 鍵バージョンのローテーション、無効化、破棄

Cloud Key Management Service を使用したローテーション

Cloud KMS は、自動と手動のどちらの鍵ローテーションもサポートしています。鍵をローテーションした後で、新しいバージョンがプライマリ バージョンになり、その鍵を使用して暗号化する Cloud Storage のすべてのオペレーションで使用されます。次に例を示します。

  • 鍵をデフォルトの暗号鍵として使用してバケットにアップロードされたオブジェクトが、新しい鍵バージョンを使用して暗号化されるようになりました。

  • 鍵を明示的に参照するオブジェクトのアップロード、コピー、リライト オペレーションで、新しい鍵バージョンが使用されるようになりました。

以前のバージョンの鍵は無効化も破棄もされないため、これらのバージョンを使用して暗号化された既存のオブジェクトは引き続き Cloud Storage で復号できます。

鍵バージョンの無効化または破棄

特定の鍵バージョンを無効化および破棄すると、Cloud Storage のバケットとオブジェクトに次のような影響があります。

バージョンがプライマリであり、新しいプライマリ バージョンが設定されていない場合、またはすべての鍵バージョンが無効か破棄されている場合:

  • 鍵をデフォルトとして使用してバケットにアップロードすると、失敗します
  • 鍵を参照したオブジェクトのアップロード、コピー、またはリライト オペレーションが、失敗します
  • 影響を受ける鍵バージョンを使用して暗号化されたオブジェクトのダウンロードが失敗します

バージョンがプライマリでない場合、または新しいプライマリ バージョンが設定されている場合:

  • 影響を受ける鍵バージョンを使用して暗号化されたオブジェクトのダウンロードが失敗します
  • 鍵をデフォルトとして使用するバケットへのアップロードは、引き続き主キーバージョンを使用して機能します。
  • 鍵を参照したオブジェクトのアップロード、コピー、またはリライト オペレーションは、引き続き主キーバージョンを使用して機能します。

鍵バージョンを再度有効にすると、そのバージョンで暗号化されたオブジェクトのダウンロードが再び可能になります。

鍵バージョンが完全に破棄された場合、そのバージョンで暗号化されたオブジェクトのダウンロードを再び可能にすることができなくなります。

古い鍵を新しい鍵に置き換える

既存の鍵(そのバージョンのすべて)を Cloud Storage で使用するのをやめて、新しい鍵に置き換える場合は、次の手順をおすすめします。

  • 古い鍵をデフォルトとして使用するすべてのバケットを見つけ出して、新しい鍵を使用するように更新します。これにより、これらのバケットへのすべての新しいオブジェクト アップロードで、新しい鍵が使用されるようになります。

  • 古い鍵を使用して暗号化されたすべてのオブジェクトを、すべてのバケットの中から見つけ出します。[オブジェクト書き換えメソッド][12] を使用して、新しい鍵を使用して各オブジェクトを再暗号化します。これにより、古い鍵を無効化または破棄した後でも、既存のオブジェクトにアクセスできるようになります。

  • 古い鍵は、完全に破棄する前に、まず無効にすることを検討してください。クライアントとサービスのログをモニタリングして、古い鍵が使用できなくなったために失敗したオペレーションがないか調べてください。

Cloud Storage に保管されたデータで鍵を使用する場合について

鍵バージョンを無効化や破棄するなどの鍵管理オペレーションを実行する前に、影響を受ける鍵がバケットやオブジェクトでどのように使用されているかをよく確認することを強くおすすめします。次の点にご注意ください。

  • バケットが鍵をデフォルトとして使用できます。すべてのバケットを、コンソールまたはプログラムを使用して、鍵名との関連について確認します。

    [LOCATION]/[KEY_RING_NAME]/[KEY_NAME]

  • オブジェクトが特定の鍵バージョンを使用して暗号化されます。すべてのオブジェクトを、コンソールまたはプログラムを使用して、特定の鍵バージョンとの関連について確認します。

    [LOCATION]/[KEY_RING_NAME]/[KEY_NAME]/[KEY_VERSION]
  • ソースコードと構成を調べて、バケット構成やオブジェクトのアップロード、コピー、リライトなど、Cloud Storage で進行中のオペレーションでどの鍵を参照しているか把握します。

次のステップ