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

デフォルトでは、Memorystore for Redis Cluster はお客様のコンテンツを 保存時に暗号化します。暗号化は、Memorystore for Redis Cluster が行うため、お客様側での操作は 必要ありません。このオプションは、Google のデフォルトの暗号化と呼ばれます。

暗号鍵を管理する場合は、Cloud KMS の顧客管理の暗号鍵 (CMEK)を、Cloud KMS の Memorystore for Redis Cluster などの CMEK 統合サービスで使用できます。Cloud KMS 鍵を使用すると、保護 レベル、ロケーション、ローテーション スケジュール、使用とアクセスの権限、暗号境界を制御できます。 Cloud KMS を使用すると、監査ログを表示し、鍵のライフサイクルを管理することもできます。データを保護する対称鍵暗号鍵(KEK)は Google が所有して管理するのではなく、ユーザーが Cloud KMS でこれらの鍵の制御と管理を行います。

CMEK を使用してリソースを設定した後は、 Memorystore for Redis Cluster リソースへのアクセスは、Google のデフォルトの暗号化を使用する場合と同様です。 暗号化 オプションの詳細については、顧客管理の暗号鍵(CMEK)をご覧ください。

CMEK を使用すべきユーザー

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

Google が管理する暗号鍵と顧客管理の暗号鍵の比較

CMEK 機能を使用すると、独自の暗号鍵を Memorystore for Redis Cluster の保存データに使用できます。Memorystore for Redis Cluster の CMEK 対応クラスタの場合、Google はユーザーの鍵を使用してすべての保存データにアクセスします。

Memorystore は、Google が管理するデータ暗号鍵(DEK)と鍵暗号鍵(KEK)を使用して Memorystore for Redis Cluster のデータを暗号化します。 暗号化には次の 2 つのレベルがあります。

  • DEK 暗号化: Memorystore は DEK を使用して、Memorystore for Redis Cluster のデータを暗号化します。
  • KEK 暗号化: Memorystore は KEK を使用して DEK を暗号化します。

Memorystore for Redis Cluster のクラスタは、暗号化された DEK と暗号化されたデータをディスクに保存し、Google は Google KEK を管理します。CMEK は、DEK をラップする KEK です。CMEK を使用すると、KEK の作成無効化または破棄ローテーション、および有効化または復元を行うことができます。

次の図は、デフォルトの Google 管理の暗号化と CMEK を使用した場合のクラスタ内での保存データの暗号化の仕組みの違いを示しています。

CMEK を使用しない場合

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

CMEK を使用する場合

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

CMEK でラップされたデータを復号する場合、Memorystore は Cloud Key Management Service の KEK を使用して DEK を復号し、復号した DEK を使用して保存されたデータを復号します。

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

料金

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

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

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

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

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

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

サービス アカウントについて

CMEK を使用してクラスタを作成する場合は、 cloudkms.cryptoKeyEncrypterDecrypter ロールを Memorystore for Redis Cluster サービス アカウントに付与する必要があります。

  service-PROJECT_NUMBER@cloud-redis.
  

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

この権限をサービス アカウントに付与する手順については、 Memorystore for Redis Cluster サービス アカウントに鍵へのアクセスを許可するをご覧ください。

鍵について

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

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

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

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

外部鍵

Cloud External Key Manager(Cloud EKM)を使用すると、管理対象の外部鍵を使用してGoogle Cloud 内のデータを暗号化できます。

Cloud EKM 鍵を使用する場合、Google は外部で管理される鍵の可用性を制御できません。クラスタの作成時に鍵が使用できない場合、クラスタは作成されません。

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

CMEK で暗号化されたデータに永続的にアクセスできなくするにはどうすればよいですか?

CMEK で暗号化されたデータに永続的にアクセスできなくする必要が生じることも考えられます。これを行うには、鍵バージョンを破棄します。鍵バージョンの破棄の詳細については、鍵バージョンの破棄と復元をご覧ください。

CMEK 鍵バージョンの動作

このセクションでは、鍵バージョンの無効化、破棄、ローテーション、有効化、復元を行った場合の動作について説明します。

CMEK 鍵バージョンを無効化または破棄する

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

バックアップ

永続性

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

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

プライマリ CMEK 鍵バージョンをローテーションする

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

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

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

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

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

バックアップ

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

永続性

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

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

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

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

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

プライマリ CMEK 鍵バージョンを有効にするか復元する

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

制限事項

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

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

CMEK の組織のポリシーの制約について

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

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

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