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

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

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

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

CMEK の対象ユーザー

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

顧客管理の暗号化

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

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

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

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

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

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

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

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

CMEK を使用してどのようなデータが暗号化されますか?

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

  • バックアップ: バックアップを使用すると、データを特定の時点まで復元できるほか、データをエクスポートして分析することもできます。バックアップは、障害復旧、データ移行、データ共有、コンプライアンスのシナリオにも役立ちます。
  • 永続性: Memorystore for Redis は Redis データベース(RDB)の永続性をサポートしています。これにより、データのスナップショットを耐久性の高いストレージに保存できます。
  • AUTH や転送中の暗号化などのセキュリティ機能に関連するメタデータ。詳細については、Redis AUTH について転送中の暗号化についてをご覧ください。

CMEK コンポーネント

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

サービス アカウント

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

service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com

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

キー

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

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

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

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

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

Google Cloud コンソールでは、[インスタンス] ページに一時停止されたインスタンスを表す赤い 感嘆符のツールチップが表示されます。ツールチップにカーソルを合わせると、No state ステータスが表示されます。鍵がアクセス可能になると、Memorystore for Redis はインスタンスを自動的に再開します。

外部鍵

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

Cloud EKM 鍵を使用する場合、Google は外部管理鍵の可用性をコントロールできません。インスタンスの作成時に鍵が使用できない場合、Memorystore for Redis はインスタンスを作成しません。また、インスタンスの作成後に外部鍵が使用できなくなった場合、Memorystore for Redis はアクセスが復元されるまでインスタンスを一時停止します。

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

鍵バージョン

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

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

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

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

インスタンスへのデータアクセスを確実に禁止するには、主キーのバージョンを無効にします。これにより、インスタンスが一時停止します。また、使用中の CMEK が無効化または破棄されると、Memorystore for Redis はインスタンスを一時停止します。これには、インスタンスで使用されている古い鍵バージョンも含まれます。

Memorystore for Redis がインスタンスを一時停止したかどうかを確認するには、次のいずれかのインターフェースを使用します。

  • Google Cloud コンソール: [インスタンス] ページで、インスタンスの横に赤い感嘆符のツールチップが表示されます。ツールチップにカーソルを合わせると、状態なしというステータスが表示されます。
  • gcloud CLI: gcloud redis instances describe コマンドを使用します。state フィールドを確認します。一時停止されたインスタンスには、READY 状態または REPAIRING 状態は表示されません。

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

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

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

  • バックアップ: Memorystore for Redis は、バックアップを Cloud Storage にエクスポートします。したがって、エクスポートされたデータの暗号化方法は、宛先バケットの暗号化設定(インスタンスの CMEK ではない)によって制御されます。
  • 永続性: インスタンスが次回再起動するか、メンテナンス イベントが発生したときに、新しい鍵が使用されます。
  • プライマリ キャッシュ: このキーを置き換えても影響はありません。CMEK は、メモリ内のデータを保存データと見なさないため、メモリ内のデータを暗号化しません。

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

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

CMEK 対応インスタンスのデータのインポートまたはエクスポート

エクスポートしたデータを CMEK で保護された状態のままにする場合は、データをエクスポートする前に、エクスポート先の Cloud Storage バケットで CMEK を構成する必要があります。データが CMEK を有効にしたインスタンスにすでに保存されている場合、そのデータを新しいインスタンスにインポートするための特別な要件や制限はありません。詳細については、データのインポートとエクスポートについてをご覧ください。

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

主キーのバージョンを有効にするか復元すると、Memorystore for Redis はインスタンスを自動的に再開します。

組織ポリシーの制約

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

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

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

Memorystore for Redis と Memorystore for Redis Cluster は同じエンドポイント(redis.googleapis.com)を共有しているため、Memorystore for Redis Cluster のクラスタとは別にインスタンスに CMEK を適用することはできません。

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

料金

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

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

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

制限事項

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

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

次のステップ