顧客管理の暗号鍵(CMEK)について

このドキュメントでは、Google のデフォルトの暗号化に依存するのではなく、Cloud Key Management Service(Cloud KMS)で顧客管理の暗号鍵(CMEK)を使用して Memorystore for Valkey インスタンスを保護する方法について説明します。また、永続ストレージで暗号化されるデータと、鍵のライフサイクル イベント中のインスタンスの動作についても説明します。

CMEK を使用すると、保存データを保護する暗号鍵を制御できます。Cloud KMS で独自の鍵を管理することで、鍵のアクセス、ローテーション、使用をより細かく制御できるため、厳格なコンプライアンス要件と規制要件を満たすことができます。

CMEK を実装すると、バックアップや永続ファイルなどの永続データに対するセキュリティと制御が強化されます。CMEK は新しいインスタンスでのみ有効にできます。既存のインスタンスに CMEK を適用することはできません。

CMEK を使用すべきユーザー

CMEK は、機密データや規制対象データを保管し、独自の暗号鍵を管理する必要がある組織を対象としています。このデータの暗号化に CMEK を使用するかどうかについては、 CMEK を使用するかどうかを決定するをご覧ください。

顧客管理の暗号化

CMEK を使用すると、暗号鍵を使用して Memorystore for Valkey インスタンスに保存されたデータを保護できます。このデータを暗号化するために、Memorystore for Valkey は Google が管理するデータ暗号鍵(DEK)と顧客管理の鍵暗号鍵(KEK)を使用します。

次のレベルの暗号化が可能です。

  • DEK 暗号化: DEK は Memorystore for Valkey のデータを暗号化します。
  • KEK 暗号化: KEK は DEK を暗号化します。

Memorystore for Valkey は KEK を使用して DEK を暗号化し、DEK を使用して保存データを暗号化します。CMEK を使用すると、インスタンス内の DEK を暗号化する KEK を管理できます。

次の図は、インスタンスが CMEK を使用してデータを暗号化する方法を示しています。Google のストレージ インフラストラクチャにアップロードされたデータはチャンク化され、各チャンクは独自の DEK で暗号化されます。Cloud KMS は DEK を暗号化する KEK を提供し、Google のストレージ インフラストラクチャは、暗号化されたデータチャンクと暗号化された DEK の両方をシステム全体に分散します。

データは Google のストレージ インフラストラクチャにアップロードされ、チャンクに分割されます。各チャンクは独自の DEK で暗号化されます。DEK は、Cloud KMS から取得された KEK を使用して暗号化されます。暗号化されたチャンクと暗号化された DEK は、ストレージ インフラストラクチャ全体に分散されます。

次の図は、Memorystore for Valkey が CMEK で暗号化されたデータを復号する方法を示しています。この暗号化されたデータにアクセスするために、Memorystore for Valkey は、KEK を管理する Cloud KMS にリクエストを送信して DEK を復号します。Cloud KMS は復号された DEK を返し、インスタンスはこれを使用して保存データを復号します。

DEK で暗号化され、暗号化された DEK と一緒に保存されたデータチャンク。DEK の復号リクエストは、KEK を保存する Cloud KMS に送信されます。Cloud KMS は、復号された DEK を返します。

CMEK を使用して暗号化されるデータ

CMEK は、永続ストレージに保存されている次のタイプの顧客データを暗号化します。

  • バックアップ: バックアップを使用すると、 データを特定の時点に復元し、データをエクスポートして分析できます。バックアップは、障害復旧、データ移行、データ共有、コンプライアンスのシナリオにも役立ちます。
  • 永続性: Memorystore for Valkey は、次の 2 種類の永続性をサポートしています:
    • RDB 永続性: 耐久性のあるストレージにデータのスナップショットを保存します。
    • AOF 永続性: すべての書き込みコマンドを Append-Only File(AOF)と呼ばれるログファイルに記録することで、データを耐久的に保存します。システム障害または再起動が発生した場合、サーバーは AOF ファイル コマンドを順番に再生してデータを復元します。

CMEK コンポーネント

以降のセクションでは、CMEK アーキテクチャを構成するサービス アカウント、暗号鍵、鍵バージョン、組織のポリシーの要件と動作について説明します。

サービス アカウント

CMEK を有効にしたインスタンスを作成するには、次の形式を使用する Memorystore for Valkey サービス アカウントに roles/cloudkms.cryptoKeyEncrypterDecrypter ロールを付与する必要があります。

service-PROJECT_NUMBER@gcp-sa-memorystore.iam.gserviceaccount.com

この権限を付与することで、サービス アカウントは Cloud KMS から鍵のアクセスをリクエストできるようになります。

キー

Cloud KMS では、キーリングを作成し、対称暗号化アルゴリズムを使用する暗号鍵を作成する必要があります。Memorystore for Valkey インスタンスを作成する場合は、この鍵を選択してインスタンスを暗号化します。 鍵とインスタンスの両方に 1 つのプロジェクトを作成することも、それぞれに異なるプロジェクトを作成することもできます。

CMEK は、すべての Memorystore for Valkey インスタンスのロケーションで使用できます。インスタンスを作成するリージョンと同じリージョンにキーリングと鍵を作成する必要があります。マルチリージョン インスタンスの場合は、キーリングと鍵をインスタンスと同じロケーションに設定する必要があります。リージョンまたはロケーションが一致しない場合、インスタンスの作成リクエストは失敗します。

鍵のリソース ID には、CMEK は次の形式を使用します。

projects/CMEK_ENABLED_PROJECT/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

既存の鍵のリソース ID を確認する方法については、 Cloud KMS リソース ID の取得をご覧ください。

外部鍵

CMEK 戦略の一環として、外部鍵を使用できます。これを行うには、Cloud External Key Manager(Cloud EKM)を使用して、管理対象の外部鍵を使用して 内のデータを暗号化します。 Google Cloud

Cloud EKM 鍵を使用する場合、Google は外部管理鍵の可用性をコントロールできません。インスタンスの作成時に鍵が使用できない場合、Memorystore for Valkey はインスタンスを作成しません。

鍵バージョン

Cloud KMS は、データの暗号化と復号に使用する暗号鍵マテリアルを鍵バージョンに保存します。1 つの鍵に複数の鍵バージョンを含めることができます。鍵をローテーションするたびに、鍵バージョンが作成されます。

以降のセクションでは、鍵バージョンの無効化、破棄、ローテーション、有効化、復元など、鍵のライフサイクル イベント中のインスタンスとその保護データの動作について説明します。また、Cloud KMS 鍵へのアクセス権の取り消しまたは置換の影響についても説明し、データを手動で再暗号化する方法についても説明します。

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

データ漏洩の修復など、CMEK で暗号化されたデータに永続的にアクセスできないようにする必要が生じることも考えられます。この高保証のデータ破棄(暗号シュレッディングとも呼ばれます)を実現するには、鍵バージョンを破棄します。 鍵バージョンの破棄の詳細については、 鍵バージョンの破棄と復元をご覧ください。

CMEK の主キーのバージョンを無効または破棄すると、バックアップと永続性には次の条件が適用されます。

バックアップ

CMEK の主キーのバージョンを破棄すると、インスタンスのバックアップに次の制限が適用されます。

  • オンデマンド バックアップまたは自動バックアップを作成できません。ただし、古い鍵バージョンを有効にすると、この鍵バージョンを使用して作成したバックアップにアクセスできます。
  • 主キーのバージョンを有効にするか復元するまで、自動バックアップを更新または再有効化することはできません。詳細については、プライマリ CMEK 鍵バージョンの有効化または復元をご覧ください。
永続性

CMEK の主キーのバージョンを破棄すると、インスタンスの永続性に次の制限が適用されます。

  • 永続性を使用するようにインスタンスを構成すると、鍵バージョンが使用できなくなったときに Memorystore for Valkey が永続性を無効にします。永続性の使用に対する課金は行われなくなります。
  • Memorystore for Valkey は、CMEK を使用して新しいデータを永続ストレージにフラッシュしません。
  • Memorystore for Valkey は、永続ストレージに存在する既存のデータを読み取ることができません。
  • 主キーのバージョンを有効にするか復元するまで、永続性を更新または再有効化することはできません。

CMEK の主キーのバージョンを有効にしても、古い鍵バージョンを無効または破棄すると、バックアップと永続性には次の条件が適用されます。

  • バックアップを作成できます。ただし、無効または破棄された古い鍵バージョンでバックアップが暗号化されている場合、バックアップにはアクセスできません。
  • 永続性を有効にすると、有効なままになります。永続性で使用されている古い鍵バージョンが無効または破棄されると、Memorystore for Valkey はメンテナンスで使用されるものと同様の更新を実行し、主キーのバージョンでデータを再暗号化します。

Cloud KMS 鍵へのアクセス権を取り消す

鍵を無効にするか、鍵の IAM 権限を削除して、アクティブな Cloud KMS 鍵へのアクセス権を取り消すと、Memorystore for Valkey はプライマリ キャッシュの可用性を優先します。 通常のメモリ内キャッシュ オペレーションは引き続きトラフィックを処理します。

ただし、バックアップと永続性は無効になります。Memorystore for Valkey は、ディスクへの新しいデータの書き込みを直ちに停止し、顧客が暗号化したディスクからメモリにデータを読み取りません。

プライマリ CMEK 鍵バージョンのローテーション

CMEK の主キーのバージョンをローテーションして新しい主キーのバージョンを作成すると、バックアップと永続性には次の条件が適用されます。

  • CMEK の最新の主キーのバージョンで新しいバックアップが暗号化されます。
  • 既存のバックアップは再暗号化されません。
  • 永続性の場合、ノードは何も行いません。ノードは、次のメンテナンス イベントまで古い鍵バージョンを使用し続けます。

CMEK で保護されたデータを手動で再暗号化する

Memorystore for Valkey は、保存データのオンデマンド再暗号化をサポートしていません。 新しい鍵バージョンを使用して、既存のバックアップまたはアクティブな永続ファイルを再暗号化するプロセスを手動でトリガーすることはできません。ただし、新しい鍵バージョンを使用して、新しく書き込まれたデータを暗号化できます。

鍵をローテーションし、インスタンスで新しい鍵バージョンを強制的に使用する必要がある場合、バックアップと永続性には次の条件が適用されます。

バックアップ

既存のバックアップを再暗号化することはできません。コンプライアンスにより、すべてのデータを最新の鍵で暗号化する必要がある場合は、この鍵を使用するバックアップを作成し、既存のバックアップを手動で削除します。このバックアップを Cloud Storage バケットにエクスポートして、Cloud Storage 暗号鍵を使用することもできます。

永続性

インスタンスで新しい Cloud KMS 鍵を強制的に使用するには、インスタンスでシミュレートされたメンテナンスを実行します。このオペレーションが完了すると、Memorystore for Valkey は更新された主キーのバージョンを使用して永続データを書き込むことができます。

保護された Cloud KMS 鍵を置き換える

保護された Cloud KMS 鍵を別の鍵または新しい主キーのバージョンに置き換えると、Memorystore for Valkey はこの変更を今後のオペレーションにのみ適用します。

保護された鍵を置き換えると、リソースに次のような影響があります。

  • バックアップ: 後続のすべてのバックアップは、新しい鍵を使用して暗号化されます。 既存のバックアップは元の鍵を維持します。
  • 永続性: 次回インスタンスが再起動するか、メンテナンス イベントが発生したときに、新しい鍵が使用されます。
  • プライマリ キャッシュ: この鍵を置き換えても影響はありません。CMEK はメモリ内データを暗号化しません。このデータは保存データと見なされないためです。

プライマリ CMEK 鍵バージョンの有効化または復元

CMEK の主キーのバージョンを有効にするか復元すると、バックアップと永続性には次の条件が適用されます。

  • オンデマンド バックアップと自動バックアップを再度作成できます。
  • Memorystore for Valkey は、メンテナンスで使用されるものと同様の更新を実行し、永続性を再度有効にします。

組織ポリシーの制約

Memorystore for Valkey は、CMEK の組織ポリシーの制約をサポートしています。これらの制約を使用すると、インスタンスに CMEK 保護を適用し、この保護に使用できる Cloud KMS 鍵を制限できます。

次の組織ポリシーの制約を構成できます。

  • constraints/gcp.restrictNonCmekServices: この制約を使用して、インスタンスに CMEK 保護を適用します。Memorystore for Valkey API がこの制約のサービスの Deny ポリシーリストに含まれている場合、CMEK で保護されていないインスタンスを作成することはできません。
  • constraints/gcp.restrictCmekCryptoKeyProjects: この制約を使用して、CMEK 保護に使用できる Cloud KMS 鍵を制限します。この制約を構成すると、CMEK 暗号化を使用するインスタンスは、許可されたプロジェクト、フォルダ、または組織の鍵を使用する必要があります。

Google が Memorystore for Valkey 用に管理する CMEK 関連の組織ポリシーの制約の詳細については、組織ポリシーの制約をご覧ください。

料金

Memorystore for Valkey では、CMEK を有効にしたインスタンスに対して他のインスタンスと同様に課金されます。追加費用は発生しません。詳細については、 Memorystore for Valkey の料金をご覧ください。

Cloud KMS API を使用して CMEK を管理します。 CMEK を使用して Memorystore for Valkey インスタンスを作成すると、Memorystore は鍵を定期的に使用してデータを暗号化します。

Memorystore for Valkey が鍵を使用すると、Cloud KMS から鍵の費用と暗号化 /復号オペレーションの費用が請求されます。詳細については、Cloud KMS の料金をご覧ください。

制限事項

Memorystore for Valkey で CMEK を使用する場合、次の制限が適用されます。

  • 既存の Memorystore for Valkey インスタンスで CMEK を有効にすることはできません。
  • 鍵、キーリング、インスタンスは同じリージョンに配置する必要があります。
  • 鍵には対称暗号化アルゴリズムを使用する必要があります。
  • Cloud KMS の暗号化と復号の割合は、割り当ての対象になります。

次のステップ