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

このページでは、顧客管理の暗号鍵(CMEK)が Memorystore for Redis Cluster でどのように機能するかについて説明します。この機能の使用を開始するには、顧客管理の暗号鍵(CMEK)を使用するをご覧ください。

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

暗号鍵を管理する場合は、Cloud KMS の顧客管理の暗号鍵(CMEK)を、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 の保存データに使用できます。CMEK 対応の Memorystore for Redis Cluster インスタンスの場合、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 を使用した場合の Memorystore for Redis Cluster インスタンス内での保存データの暗号化の仕組みを示しています。

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 のラップ解除リクエストは、KEK を保存する Cloud KMS に送信されます。Cloud KMS は、ラップ解除された DEK を返します。

料金

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

Cloud KMS API を使用して CMEK を管理します。CMEK を使用して Memorystore for Redis Cluster インスタンスを作成すると、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.iam.gserviceaccount.com
  

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

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

鍵について

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

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

鍵のリソース 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 のプライマリ鍵バージョンを無効にするか破棄すると、バックアップと永続性について次の条件が適用されます。

バックアップ

永続性

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

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

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

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

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

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

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

CMEK のプライマリ鍵バージョンを有効にするか復元すると、バックアップと永続性について次の条件が適用されます。

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

制限事項

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

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