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

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

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 永続性: 追加専用ファイル(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 には、次の形式が使用されます。

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 はインスタンスを作成しません。また、インスタンスの作成後に外部鍵が使用できなくなった場合、Memorystore for Valkey はバックアップと永続性を無効にしますが、通常のインメモリ キャッシュ オペレーションはトラフィックの処理を続行します。

外部鍵の使用に関するその他の考慮事項については、考慮事項をご覧ください。

鍵バージョン

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

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

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

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

プライマリ鍵バージョンを無効にするか破棄すると、バックアップと永続性に対して次の条件が適用されます。

バックアップ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

バックアップ

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

永続性

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

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

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

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

  • バックアップ: 後続のすべてのバックアップは、新しい鍵を使用して暗号化されます。既存のバックアップは元の鍵を保持します。
  • 永続性: 次回インスタンスが再起動するか、メンテナンス イベントが発生したときに、新しい鍵が使用されます。
  • プライマリ キャッシュ: このキーを置き換えても影響はありません。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 暗号化を使用するインスタンスは、許可されたプロジェクト、フォルダ、または組織の鍵を使用する必要があります。

Memorystore for Valkey 用に Google が管理する 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 の暗号化と復号の割合は、割り当ての対象になります。

次のステップ