顧客指定の暗号鍵

このページでは、顧客指定の暗号鍵について説明します。他の暗号化オプションについては、データ暗号化オプションをご覧ください。この機能の使用例については、顧客指定の暗号鍵の使用をご覧ください。

概要

セキュリティを強化するために、Google が管理する暗号鍵に加え、標準の Base64 でエンコードされた独自の AES-256 鍵を指定することもできます。この鍵は顧客指定の暗号鍵と呼ばれます。顧客指定の暗号鍵を指定した場合、Cloud Storage はその鍵を Google のサーバーに永続的に保存することはなく、またユーザーの鍵を管理することもありません。代わりに、Cloud Storage の各オペレーションについてユーザーが独自の鍵を指定し、そのオペレーションが完了した後で鍵は Google のサーバーから削除されます。Cloud Storage は、鍵の暗号学的ハッシュ関数のみを保存し、今後発生するリクエストをそのハッシュ関数に対して検証できるようにします。このハッシュ関数から鍵を復元することはできません。また、このハッシュ関数を使用してデータを復号することもできません。

鍵はいつ使用されますか?

顧客指定の暗号鍵をオブジェクトに適用すると、Cloud Storage は以下を暗号化するときに鍵を使用します。

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

Cloud Storage は、オブジェクトの名前など、オブジェクトの残りのメタデータを、標準のサーバーサイド鍵を使用して暗号化します。これにより、顧客指定の暗号鍵を必要とせずに、一般的なメタデータの読み取りと更新、およびオブジェクトのリストと削除を行うことができます。ただし、こういった操作を実行する場合は、十分な実行権限が必要です。

たとえば、オブジェクトが顧客指定の暗号鍵で暗号化されている場合は、オブジェクトのダウンロードや移動などの操作を実行するときにはその鍵を使う必要があります。鍵を指定せずにオブジェクトのメタデータを読み取ろうとすると、オブジェクト名と Content-Type などのメタデータは受け取りますが、オブジェクトの CRC32C チェックサムや MD5 ハッシュは受け取りません。オブジェクトのメタデータのリクエストに鍵を指定すると、オブジェクトの CRC32C チェックサムと MD5 ハッシュもメタデータに含まれます。

HTTPS チェック

読み取りと書き込みのオペレーション中にインターネット上で転送されるデータを保護するには、一般的に TLS または HTTPS と呼ばれる Transport Layer Security を使用します。暗号鍵を提供する際には、TLS が必要です。暗号化されていない(HTTP)接続上で、誤って暗号鍵を使用すると、攻撃者に鍵を傍受される可能性があります。このため、Cloud Storage API は、鍵のセキュリティが侵害された可能性があることを警告するエラー メッセージを返します。このエラー メッセージが出た場合は、直ちに鍵をローテーションする必要があります。

制限事項

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

  • Cloud Storage Transfer ServiceCloud DataflowCloud Dataproc では現在、顧客指定の暗号鍵を使用して暗号化されたオブジェクトはサポートされていません。

  • Google Cloud Platform Console を使用して、顧客指定の暗号鍵を使用して暗号化されたオブジェクトをダウンロードすることはできません。同様に、Google Cloud Platform Console を使用してオブジェクトをアップロードする際に、顧客指定の暗号鍵を使用してオブジェクトを暗号化することもできません。こうした操作を行うには、顧客管理の暗号鍵を使用する必要があります。

  • 顧客指定の暗号鍵は、次の国で使用できます。

    アルゼンチン、オーストリア、オーストラリア、ベルギー、ブルガリア、カナダ、チリ、コロンビア、キプロス、チェコ共和国、デンマーク、エストニア、フィンランド、フランス、ドイツ、ギリシャ、香港、ハンガリー、インドネシア、アイルランド、イスラエル、イタリア、日本、リトアニア、ルクセンブルグ、ラトビア、マレーシア、マルタ、メキシコ、オランダ、ニュージーランド、ノルウェー、ペルー、ポーランド、ポルトガル、ルーマニア、シンガポール、スロバキア、南アフリカ、韓国、スペイン、スウェーデン、スイス、台湾、タイ、トルコ、イギリス(英国)、アメリカ(米国)、ベトナム

    これら以外の国のユーザーは、国の追加をリクエストできます。

  • gsutil で顧客指定の暗号鍵を使用するには、gsutil 4.18 以降が必要です。

  • 個々のオブジェクトに設定できるのは顧客指定の暗号鍵だけです。バケットにデフォルトの顧客指定の暗号鍵を設定することはできません。

  • 顧客指定の暗号鍵で暗号化されたオブジェクトに compose オペレーションを実行する場合、コンポーネントのオブジェクトを同じ鍵で暗号化し、作成リクエストでその鍵を提供する必要があります。結果として得られる複合オブジェクトは同じ鍵で暗号化されます。

暗号鍵を使用するためのツール

Cloud Storage では複数の方法で顧客指定の暗号鍵を使用できます。たとえば、次の方法があります。

  • パートナー企業。
  • JSON API と XML REST API。
  • gsutil コマンドライン ツール。

暗号鍵とパートナー企業

パートナー各社から顧客指定の暗号鍵を使用する方法がいくつか提供されています。この方法によって、暗号鍵を作成し、その鍵を Cloud Storage のオブジェクトに関連付ける操作が容易になります。Cloud Storage 用の鍵を提供できるパートナーは、Ionic Security や KeyNexus なとです。

詳細については、Cloud Storage のパートナーのページをご覧ください。

REST API での暗号鍵の使用

顧客指定の暗号鍵を使用していて、JSON API や XML API を直接操作する場合、AES-256 鍵と鍵の SHA256 ハッシュの両方を指定する必要があります。AES-256 鍵と、鍵の SHA256 ハッシュはどちらも安全に保存する必要があります。Google は、オブジェクトのメタデータのユーザー指定鍵の SHA256 ハッシュを保存し、ユーザーは後でそれを取得することができます。Google(または他のユーザー)は、この SHA256 ハッシュを使用してデータを復号することはできません。これは、特定のオブジェクトの暗号化に使用された AES-256 鍵を一意に識別できるような方法で保存されています。

リクエスト ヘッダー

次の HTTP ヘッダーを JSON または XML リクエストに含めます。

ヘッダー名 説明
x-goog-encryption-algorithm 文字列 使用する暗号化アルゴリズム。値 AES256 を使用する必要があります。
x-goog-encryption-key 文字列 RFC 4648 の Base64 でエンコードされた、ユーザーの AES-256 暗号鍵の文字列
x-goog-encryption-key-sha256 文字列 RFC 4648 の Base64 でエンコードされた、ユーザーの暗号鍵の SHA256 ハッシュの文字列

JSON API で rewrite オペレーションを実行中の場合、上記のヘッダーが宛先オブジェクトの暗号化に使用され、以下のヘッダーが元のオブジェクトの復号に使用されます。

ヘッダー名 説明
x-goog-copy-source-encryption-algorithm 文字列 使用する暗号化アルゴリズム。値 AES256 を使用する必要があります。
x-goog-copy-source-encryption-key 文字列 RFC 4648 の Base64 でエンコードされた、オブジェクトの AES-256 暗号鍵
x-goog-copy-source-encryption-key-sha256 文字列 RFC 4648 の Base64 でエンコードされた、オブジェクトの暗号鍵の SHA256 ハッシュの文字列

レスポンス

JSON

JSON API の使用時、顧客指定の暗号鍵のメタデータはレスポンスの本文で返されます。これには、以下の追加プロパティが含まれます。

プロパティ名 説明
customerEncryption オブジェクト リクエストに使用された暗号化の情報
customerEncryption.encryptionAlgorithm 文字列 使用された暗号化アルゴリズム。常に値 AES256 が含まれます。
customerEncryption.keySha256 文字列 RFC 4648 の Base64 でエンコードされた、ユーザーの暗号鍵の SHA256 ハッシュの文字列。この SHA256 ハッシュを使用して、オブジェクトの復号に必要な AES-256 暗号鍵を一意に識別することができます。この鍵は安全に保存する必要があります。

XML

XML API の使用時、レスポンスには以下のヘッダーが含まれます。

ヘッダー名 説明
x-goog-encryption-algorithm 文字列 使用された暗号化アルゴリズム。常に値 AES256 が含まれます。
x-goog-encryption-key-sha256 文字列 RFC 4648 の Base64 でエンコードされた、ユーザーの暗号鍵の SHA256 ハッシュの文字列。この SHA256 ハッシュを使用して、オブジェクトの復号に必要な AES-256 暗号鍵を一意に識別することができます。この鍵は安全に保存する必要があります。

以下の場合、HTTP 400 エラーを受け取ります。

  • 顧客指定の暗号鍵を使用してオブジェクトをアップロードし、鍵を提供せずにそのオブジェクトに対して別のオペレーション(メタデータのリクエストと更新、オブジェクトの削除を除く)を実行しようとした。
  • 顧客指定の暗号鍵を使用してオブジェクトをアップロードし、誤った鍵を使用してそのオブジェクトに対して別のオペレーションを実行しようとした。
  • 顧客指定の暗号鍵を提供せずにオブジェクトをアップロードし、顧客指定の暗号鍵を使用してそのオブジェクトに対して別のオペレーションを実行しようとした。
  • 無効な暗号化アルゴリズム、鍵、SHA256 ハッシュを指定した。

gsutil での暗号鍵の使用

gsutil で顧客指定の暗号鍵を使用する場合は、boto 構成ファイル[GSUtil] セクションに次のオプションを追加します。

オプション名 説明
encryption_key 文字列 RFC 4648 の Base64 でエンコードされた、ユーザーの AES-256 暗号鍵の文字列

オプションで 1 つ以上の復号鍵を指定できます。encryption_key オプションは gsutil で暗号化と復号の鍵として使用されていますが、指定する decryption_key オプションはオブジェクトの復号にのみ使用されます。詳しくは、gsutil のドキュメントをご覧ください。

boto 設定ファイルで暗号鍵または復号鍵が指定されていれば、それらがすべての gsutil コマンドに使用されます。復号の際、gsutil は指定された暗号化と復号の鍵の SHA256 ハッシュを計算し、オブジェクトのメタデータの SHA256 に一致させることにより、特定のオブジェクトに使用する正しい復号鍵を選択します。

顧客指定の暗号鍵を使用してオブジェクトをアップロードし、鍵を提供せずにそのオブジェクトに対して別のオペレーション(メタデータのリクエストと更新、オブジェクトの削除を除く)を実行しようとすると、エラーが発生します。

暗号鍵のローテーション

顧客指定の暗号鍵を使用してオブジェクトを暗号化している場合、オブジェクトを書き換えることによってオブジェクトの鍵をローテーションさせることができます。書き換え処理は JSON API ではサポートされますが、XML API ではサポートされません。鍵のローテーションの例は、暗号鍵のローテーションをご覧ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。