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

デフォルトでは、Memorystore for Redis はお客様のコンテンツを 保存時に暗号化します。Memorystore for Redis は、お客様が追加の操作を行うことなく 暗号化を処理します。このオプションは、Google のデフォルトの暗号化と呼ばれます。

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

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

CMEK を使用すべきユーザー

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

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

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

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

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

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

CMEK は、Cloud Key Management Service API を使用して管理します。

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

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 のラップ解除リクエストは KMS ストレージに送信され、KMS ストレージにはエクスポートできない KEK が保存されます。KMS ストレージは、ラップ解除された DEK を返します。

料金

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

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

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

Memorystore が CMEK と連携するのはいつですか?

オペレーション 説明
インスタンスの作成 インスタンスを作成するときに、CMEK を使用するように構成します。
インスタンスの更新 CMEK を有効にしたインスタンスの更新中に、Memorystore for Redis は CMEK をチェックします。 CMEK をチェックします。

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

CMEK は、次のタイプのデータを暗号化します。

  • 永続ストレージに保存された顧客データ。
  • AUTH転送中の暗号化などのセキュリティ機能に関連するメタデータ。

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

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

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

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

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

鍵について

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

Memorystore for Redis が使用中の鍵バージョンにアクセスできない場合(すべての鍵バージョンを無効にした場合など)、Memorystore for Redis はインスタンスをシャットダウンします。コンソールでは、[インスタンス] ページに一時停止されたインスタンスを表す赤い感嘆符のツールチップが表示されます。 Google Cloud ツールチップにカーソルを合わせると、No state ステータスが表示されます。鍵にアクセスできるようになると、Memorystore for Redis はインスタンスを自動的に再開します。

外部鍵

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

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

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

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

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

CMEK を有効にしたインスタンスのデータをインポートまたはエクスポートするにはどうすればよいですか?

データをエクスポートするときに、CMEK で暗号化されたままにする場合は、データをエクスポートする前に Cloud Storage バケットに CMEK を設定する必要があります。

データが CMEK を有効にしたインスタンスに保存されている場合、新しいインスタンスにデータをインポートするための特別な 要件や制限はありません。

CMEK 鍵バージョンの動作

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

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

インスタンスにデータアクセスできないようにするには、CMEK の主キーのバージョンを無効にします。これにより、インスタンスがシャットダウンします。また、使用中の CMEK が無効または破棄されると、Memorystore for Redis はインスタンスをシャットダウンします。これには、インスタンスが使用する古い鍵バージョンも含まれます。

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

  • Google Cloud **コンソール**: [インスタンス] ページで、インスタンスの横に赤い感嘆符 ツールチップが表示されます。ツールチップにカーソルを合わせると、No state ステータスが表示されます。
  • gcloud CLI: gcloud redis instances describe コマンドを使用します。インスタンスのメタデータに state: READYstate: REPAIRING、その他の状態が表示されていないことを確認します。

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

CMEK の主キー バージョンを有効にするか復元すると、Memorystore for Redis はインスタンスを非表示にしなくなります。

制限事項

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

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

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

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

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

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