このページでは、顧客管理の暗号鍵(CMEK)が Memorystore for Redis でどのように機能するかについて説明します。この機能をすぐに使用する場合は、顧客管理の暗号鍵(CMEK)を使用するをご覧ください。
CMEK は私に適していますか?
顧客管理の暗号鍵は、機密データや規制対象データを保管し、独自の暗号鍵で管理する必要のある組織を対象にしています。
Google が管理する暗号鍵と顧客管理の暗号鍵の比較
CMEK 機能を使用すると、独自の暗号鍵を Memorystore for Redis の保存データに使用できます。顧客管理の暗号鍵を追加すると、API が呼び出されるたびに Memorystore はその鍵を使用してデータにアクセスします。
Memorystore は、Google が管理するデータ暗号鍵(DEK)と鍵暗号鍵(KEK)を使用して Memorystore for Redis を暗号化します。暗号化には次の 2 つのレベルがあります。
- DEK がデータを暗号化する。
- KEK が DEK を暗号化する。
Memorystore インスタンスは、暗号化された DEK と暗号化されたデータを PD に保存し、Google は Google KEK を管理します。顧客管理の暗号鍵を使用して、Google KEK をラップする鍵を作成します。顧客管理の暗号鍵を使用すると、KEK の作成、取り消し、削除ができます。
顧客管理の暗号鍵は、Cloud Key Management Service API を介して管理されます。
下の図は、デフォルトの Google 暗号鍵と顧客管理の暗号鍵を使用した Memorystore インスタンス内での保存データの暗号化の仕組みの違いを示しています。
CMEK を使用しない場合
CMEK を使用する場合
顧客管理の暗号鍵でラップされたデータを復号する場合、Memorystore は KEK を使用して DEK を復号し、復号した DEK を使用して保存されたデータを復号します。
Memorystore はいつ CMEK の鍵を操作しますか?
オペレーション | 説明 |
---|---|
インスタンスの作成 | インスタンスの作成時に、顧客管理の暗号鍵を使用するようにインスタンスを構成します。 |
インスタンスの更新 | Memorystore が、CMEK を有効化したインスタンスの更新中に CMEK 鍵をチェックします。 |
CMEK を使用してどのようなデータが暗号化されますか?
CMEK は、次のタイプのデータを暗号化します。
サービス アカウントについて
CMEK を使用してインスタンスを作成する場合は、cloudkms.cryptoKeyEncrypterDecrypter ロールを次の形式の Memorystore サービス アカウントに付与する必要があります。
service-[PROJECT_NUMBER]@cloud-redis.iam.gserviceaccount.com
この権限を付与することで、サービス アカウントは Cloud KMS から鍵のアクセスをリクエストできるようになります。
この権限をサービス アカウントに付与する手順については、サービス アカウントに鍵へのアクセスを許可するをご覧ください。
鍵について
Cloud KMS では、対称暗号化 / 復号アルゴリズムを使用する暗号鍵を使用してキーリングを作成する必要があります。新しい Memorystore インスタンスを作成する場合は、この鍵を選択してインスタンスを暗号化します。鍵と Memorystore インスタンスの両方に対し 1 つのプロジェクトを作成できます。また、それぞれに異なるプロジェクトを作成することもできます。
CMEK は、すべての Memorystore インスタンスのロケーションで使用できます。鍵とキーリングのリージョンは、Memorystore for Redis インスタンスと同じリージョンに設定する必要があります。マルチリージョンまたはグローバル リージョン鍵は使用できません。リージョンが一致しない場合、Memorystore インスタンスの作成リクエストは失敗します。
Memorystore 用の CMEK は Cloud External Key Manager(Cloud EKM)と互換性があります。
顧客管理の暗号鍵は次の形式を使用します。
projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]
Memorystore が現在使用している鍵バージョンにアクセスできない場合(鍵バージョンを無効にした場合など)、Memorystore はインスタンスを不当に遅れることなくシャットダウンします。Google Cloud コンソールで一時停止中のインスタンスには、[インスタンス] ページに赤い感嘆符のツールチップが表示されます。ツールチップにカーソルを合わせると、「状態なし」と表示されます。鍵が再びアクセス可能になると、Memorystore は自動的にインスタンスを再開します。
CMEK で暗号化されたデータを永続的にアクセスできなくするにはどうすればよいですか?
CMEK で暗号化されたデータを永続的に破棄する必要が生じることも考えられます。これを行うには、顧客管理の暗号鍵バージョンを破棄します。キーリングや鍵の破棄はできませんが、鍵の鍵バージョンは破棄できます。
CMEK 対応インスタンスとの間でデータをエクスポートおよびインポートするにはどうすればよいですか?
顧客管理の暗号鍵を使用して暗号化した状態でデータをインポートまたはエクスポートするには、Cloud Storage バケットに顧客管理の暗号鍵を設定してからデータをエクスポートする必要があります。
CMEK を有効化した Memorystore インスタンスにデータが以前保存されていた場合でも、新しい Memorystore インスタンスにデータをインポートするための特別な要件や制限はありません。
CMEK 鍵バージョンの破棄または無効化の動作
インスタンスにデータがアクセスできないようにするには、顧客管理の暗号鍵の主キーのバージョンを無効にします。これにより、不当な遅延を発生させずにインスタンスがシャットダウンされます。また、使用中の顧客管理の暗号鍵が無効化または破棄された場合、Memorystore では不当に遅れることなくインスタンスがシャットダウンされます。これには、Memorystore インスタンスで使用されている古い鍵バージョンも含まれます。gcloud または Google Cloud コンソールを使用して、インスタンスが停止しているかどうかを確認できます。
Google Cloud コンソールでは、インスタンスが停止していると、Memorystore for Redis の [インスタンス] ページのインスタンスの横に赤いツールチップ通知が表示されます。ツールチップ上にカーソルを置くと、「状態なし」と表示されます。
gcloud では gcloud beta redis instances describe
を実行したときに、インスタンスのメタデータに state: READY
、state: REPAIRING
、その他の状態が表示されない場合、インスタンスは一時停止されています。
使用中の CMEK 鍵バージョンの再有効化または復元
使用中の CMEK 鍵バージョンを再有効化または復元すると、インスタンスが再表示されます。
制限事項
Memorystore で顧客管理の暗号鍵を使用する場合は、次の制限が適用されます。
- 顧客管理の暗号鍵を既存の Memorystore インスタンスで有効にすることはできません。
- 鍵、キーリング、Memorystore インスタンスのリージョンはすべて同じである必要があります。
- 鍵には対称暗号化 / 復号アルゴリズムを使用する必要があります。
- Cloud KMS の暗号化と復号の割合は、割り当ての対象になります。
CMEK の組織のポリシー
Memorystore for Redis は、CMEK 保護に使用できる組織のポリシーの制約をサポートしています。
ポリシーでは、CMEK 保護に使用できる Cloud KMS 鍵を制限できます。
Memorystore for Redis API が制約
constraints/gcp.restrictNonCmekServices
のサービスのDeny
ポリシーリストにある場合、CMEK で保護されていないインスタンスの Memorystore for Redis の作成は失敗します。constraints/gcp.restrictCmekCryptoKeyProjects
が構成されている場合、Memorystore for Redis は、許可されたプロジェクト、フォルダ、または組織の鍵を使用して暗号化された CMEK で保護されたインスタンスを作成します。
CMEK の組織のポリシーの構成の詳細については、CMEK の組織のポリシーをご覧ください。