顧客管理の暗号鍵(CMEK)

デフォルトでは、Firestore に保存されるすべてのデータは Google のデフォルトの暗号化を使用して暗号化されます。Firestore はこの暗号化を自動的に処理および管理するので、お客様は何も行う必要はありません。

データを保護する鍵について特定のコンプライアンスや規制の要件がある場合は、Firestore に顧客管理の暗号鍵(CMEK)を使用できます。Google がデータを保護する暗号鍵を管理するのではなく、ユーザーが Cloud Key Management Service(Cloud KMS)で制御、管理する鍵を使用して、Firestore データベースを保護します。

このページでは、Firestore の CMEK について説明します。CMEK の一般的な用途や使用する理由などの詳細については、Cloud KMS のドキュメントをご覧ください。

Firestore で CMEK 関連のタスクを実行する手順については、CMEK を使用するをご覧ください。

機能

  • データ管理: CMEK を使用すると、KMS 鍵を管理できます。Firestore データベースの保存データの暗号化に使用する鍵をローテーション、無効化、破棄できます。
  • パフォーマンス: CMEK は Firestore SLA に影響しません。
  • 監査可能性: Cloud KMS の監査ロギングを有効にすると、鍵に対するすべてのオペレーションは Cloud Logging で記録され、表示されます。
  • 組織のポリシーの制約: CMEK の組織のポリシーの制約を使用して、組織内の Firestore データベースの暗号化コンプライアンス要件を指定できます。

料金

Cloud KMS では、鍵と、その鍵を使用して実行される暗号オペレーションの費用について課金されます。詳細については、Cloud KMS の料金をご覧ください。

Firestore で暗号化または復号オペレーションを実行するように Cloud KMS 鍵に要求した場合、そのオペレーションに対して課金されます。顧客管理の鍵による暗号化 / 復号オペレーションは 5 分ごとに行われ、データベース リクエストとは同期されません。Firestore によって生成される暗号化オペレーションの想定数を考慮すると、通常は費用は低くなります。Cloud Audit Logs の費用は追加の出費ですが、暗号オペレーションの想定数を考慮すると、通常は低くなると予想されます。

CMEK で保護されたデータベースの使用に対して、Firestore に追加費用はかからず、Firestore の料金は引き続き適用されます。

データベースへの鍵を取り消した場合、ストレージ料金は、鍵が使用可能だった最終日のサイズに基づいて請求されます。データベースが削除されるか、鍵が再び使用可能になるまで、そのデータベース サイズでストレージ費用が引き続き発生します。

CMEK による保護対象

Firestore CMEK で保護されたデータベースを作成すると、Cloud KMS 鍵が保存データを保護するために使用されます。これには、インデックスやバックアップなど、ディスクまたはフラッシュ ドライブに保存するデータが含まれます。以下の例外が適用されます。次のデータ型は、CMEK 鍵ではなく、Google のデフォルトの暗号化で暗号化されます。

  • 転送中のデータやメモリ内データ
  • データベースのメタデータ

使用できない鍵のステータスの処理方法

暗号化と復号のオペレーションは、すべてのデータ リクエストで発行されるわけではありません。代わりに、Firestore システムは 5 分ごとに Cloud KMS をポーリングして鍵がまだ使用可能かどうかを確認し、鍵が使用可能であれば暗号化と復号のオペレーションを行います。

鍵が使用できないことをシステムが検出すると、10 分以内に、読み取り、書き込み、クエリなど、Firestore データベースに対する後続の呼び出しは、The customer-managed encryption key required by the requested resource is not accessible メッセージを含む FAILED_PRECONDITION エラーを返します。

データベースに有効期間(TTL)ポリシーがあり、鍵が使用できない間に有効期限を超過した場合は、TTL によるデータ削除 は、鍵が復元されるまで遅延します。データベースで長時間実行オペレーションが進行中の場合、次のように影響を受けます。

  • データのimportまたはエクスポートのオペレーションが停止し、Failed とマークされます。鍵が復元されても、失敗したオペレーションは再試行されません
  • インデックス作成オペレーションと、新しい TTL ポリシーの有効化オペレーションは、進行を停止します。鍵が復元されると、停止したオペレーションが再試行されます。

Firestore が鍵にアクセスすることを意図的に禁止している状況では、鍵は使用できないとみなされます。これには次のものが含まれます。

鍵が復元されると、ポーリング オペレーションは鍵が再び使用可能であることを検出します。アクセスは通常は数分以内に再び有効になりますが、まれに数時間かかる場合があります。鍵の無効化や破棄など、Cloud KMS 鍵に対するオペレーションでは、伝搬に最大 3 時間かかる可能性がありることに留意してください。Firestore は、Cloud KMS で変更が有効になるまで変更を検出しません。

鍵の復元では、状況に応じて次のことを伴います。

  • 無効になっている鍵バージョンの再有効化
  • 破棄した鍵バージョンの復元。永久に破棄される前に、鍵バージョンの破棄がスケジュールされています。鍵を復元できるのは、鍵バージョンの破棄がスケジュールされている期間のみです。すでに永久に破棄された鍵は復元できません。
  • Firestore サービス エージェントへの鍵にアクセスするための権限の再付与

鍵のローテーションに関する考慮事項

CMEK 鍵をローテーションすると、Firestore は最新のプライマリ バージョンの CMEK 鍵でデータベースを再暗号化します。再暗号化プロセス中は、古い鍵バージョンと新しい鍵バージョンの両方を使用できるようにします。再暗号化が完了すると、データベースは新しい主キー バージョンで暗号化されているため、古いバージョンの CMEK 鍵を無効にしたり削除したりしても、データベースへのアクセスが無効になることはありません。

データベースの保護に使用されている鍵バージョンも表示できます。詳細については、使用中の鍵を表示するをご覧ください。

外部の主な考慮事項

Cloud EKM 鍵を使用する場合、Google は外部の鍵管理パートナー システム内の外部管理鍵の可用性をコントロールできません。

外部で管理されている鍵が使用できない場合、Firestore は、鍵のキャッシュに保存されたバージョンを使用した完全なデータベース オペレーションを最大 1 時間サポートし続けます。

1 時間経過しても Firestore が Cloud KMS に接続できない場合、Firestore は保護対策としてデータベースをオフラインにする操作を開始します。データベースの呼び出しは、追加の詳細を含む FAILED_PRECONDITION エラーで失敗します。

外部鍵を使用する場合の考慮事項については、Cloud External Key Manager のドキュメントをご覧ください。

バックアップと復元

バックアップでは、作成元のデータベースと同じ暗号化メカニズムが使用されます。CMEK で保護された Firestore データベースがバックアップを作成すると、バックアップの作成時に使用された主キー バージョンでバックアップが暗号化されます。

Firestore は、バックアップ スケジュールを有効にした後 24 時間が経過すると、CMEK データベースの最初のバックアップを作成します。

Firestore バックアップの詳細については、データのバックアップと復元をご覧ください。

バックアップから復元されたデータベースは、デフォルトでバックアップと同じ暗号化メカニズムを使用します。データベースを復元するときに、次のいずれかの方法で別の暗号化タイプを指定できます。

  • 新しく指定した鍵を使用して CMEK データベースに復元します。
  • Google のデフォルトの暗号化を使用する CMEK 以外のデータベースに復元します。
  • バックアップと同じ暗号化を使用するデータベースに復元します。

バックアップから Firestore データベースを復元する方法の詳細については、データベースのバックアップからデータを復元するをご覧ください。バックアップから CMEK で保護された Firestore データベースを復元する方法の詳細については、CMEK で保護されたデータベースを復元するをご覧ください。

鍵のトラッキング

鍵のトラッキングを使用すると、鍵が保護するリソース(Firestore データベースなど)を表示できます。鍵のトラッキングの詳細については、鍵の使用状況を表示するをご覧ください。

CMEK と鍵の可用性

鍵が使用できない場合や無効になっている場合は、CMEK 対応データベースで発生する可能性のある次の動作に注意してください。

  • PITR 設定はデータベースのメタデータであり、CMEK によって暗号化されていないため、鍵が使用できない場合でも、CMEK 対応データベースで Firestore のポイントインタイム リカバリ(PITR)設定を変更できます。
  • 使用できない鍵がある CMEK データベースは削除できます。
  • CMEK 対応データベースを作成すると、無効な鍵は Google Cloud コンソールの使用可能な鍵のリストに表示されません。無効な鍵を手動で入力すると、データベースの作成プロセスは FAILED_PRECONDITION エラー 400 で失敗します。

制限事項

  • CMEK で保護されたデータベースの鍵を変更することはできません。キーのローテーション、有効化、無効化を行うことができます。
  • CMEK で保護されたデータベースは、エンティティ データとドキュメント データについてのみ Key Visualizer をサポートします。インデックス データについてはサポートしません。
  • 既存のデータベースで CMEK を有効にできません。CMEK は新しいデータベースでのみ有効にできます。また、データベースの作成時に有効にする必要があります。既存の CMEK 以外のデータベースのデータを CMEK で保護されたデータベースに移行するには、データをエクスポートしてから、新しい CMEK で保護されたデータベースにデータをインポートします。CMEK 以外のデータベースから CMEK データベースにデータを復元することもできます。
  • Firestore は、CMEK で保護されたデータベースを限定数だけサポートします。
  • Cloud Functions(第 1 世代)との統合による CMEK 保護はサポートされていません。CMEK による保護が必要な場合は、Cloud Run functions Firestore Triggers(第 2 世代)を使用します。

次のステップ