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

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

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

暗号鍵を管理する場合は、Cloud KMS の顧客管理の暗号鍵(CMEK)を、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 の料金をご覧ください。

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

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

Memorystore はいつ CMEK を操作しますか?

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

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

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

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

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

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

  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 保護に使用できる組織のポリシーの制約をサポートしています。

ポリシーでは、CMEK 保護に使用できる Cloud KMS 鍵を制限できます。

  • Memorystore for Redis API が constraints/gcp.restrictNonCmekServices 制約のサービスの Deny ポリシーリストに含まれている場合、CMEK で保護されていないインスタンスを作成することはできません。

  • constraints/gcp.restrictCmekCryptoKeyProjects 制約を構成すると、Memorystore for Redis は、許可されたプロジェクト、フォルダ、または組織の鍵を使用して暗号化された CMEK 保護インスタンスを作成します。

CMEK の組織のポリシーの構成の詳細については、CMEK の組織のポリシーをご覧ください。