このドキュメントでは、Memorystore for Redis インスタンスでCloud Key Management Service(Cloud KMS)の顧客管理の暗号鍵(CMEK) を使用する方法について説明します。また、永続ストレージに保存されるデータと、鍵のライフサイクル イベント中のインスタンスの動作についても説明します。
CMEK を使用すると、保存データを保護する暗号鍵を制御できます。Cloud KMS で独自の鍵を管理することで、鍵のアクセス、ローテーション、使用状況をより細かく制御できるため、厳格なコンプライアンス要件と規制要件を満たすことができます。
CMEK を実装すると、バックアップや永続ファイルなどの永続データに対するセキュリティと制御が強化されます。CMEK は新しいインスタンスでのみ有効にできます。既存のインスタンスに CMEK を適用することはできません。
CMEK を使用すべきユーザー
CMEK は、機密データや規制対象データを保管し、独自の暗号鍵を管理する必要がある組織を対象としています。このデータを暗号化するために CMEK を使用するかどうかについては、CMEK を使用するかどうかを決定するをご覧ください。
顧客管理の暗号化
CMEK を使用すると、暗号鍵を使用してインスタンスに保存されたデータを保護できます。 このデータを暗号化するために、Memorystore for Redis は Google が管理するデータ暗号鍵(DEK)と顧客管理の鍵暗号鍵(KEK)を使用します。
次のレベルの暗号化が可能です。
- DEK 暗号化: DEK は Memorystore for Redis のデータを暗号化します。
- KEK 暗号化: KEK は DEK を暗号化します。
Memorystore for Redis は KEK を使用して DEK を暗号化し、DEK を使用して保存データを暗号化します。CMEK を使用すると、インスタンス内の DEK を暗号化する KEK を管理できます。
次の図は、インスタンスが CMEK を使用してデータを暗号化する方法を示しています。Google のストレージ インフラストラクチャにアップロードされたデータはチャンク化され、各チャンクは独自の DEK で暗号化されます。Cloud KMS は DEK を暗号化する KEK を提供し、Google のストレージ インフラストラクチャは暗号化されたデータチャンクと暗号化された DEK の両方をシステム全体に分散します。

次の図は、Memorystore for Redis が CMEK で暗号化されたデータを復号する方法を示しています。この暗号化されたデータにアクセスするために、Memorystore for Redis は KEK を管理する Cloud KMS にリクエストを送信して DEK を復号します。Cloud KMS は復号された DEK を返し、インスタンスはこれを使用して保存データを復号します。

Memorystore はいつ CMEK と連携しますか?
| オペレーション | 説明 |
|---|---|
| インスタンスの作成 | インスタンスを作成するときに、CMEK を使用するように構成します。 |
| インスタンスの更新 | CMEK を有効にしたインスタンスの更新中に、Memorystore for Redis は CMEK をチェックします。 CMEK をチェックします。 |
CMEK を使用して暗号化されるデータ
CMEK は、次のタイプのデータを暗号化します。
サービス アカウントについて
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 が無効または破棄されると、Memorystore for Redis はインスタンスをシャットダウンします。 これには、インスタンスで使用されている古い鍵バージョンも含まれます。
Memorystore for Redis がインスタンスを一時停止するかどうかを確認するには、次のいずれかのインターフェースを使用します。
- Google Cloud **コンソール**: [インスタンス] ページで、インスタンスの横に赤い感嘆符
ツールチップが表示されます。ツールチップにカーソルを合わせると、
No stateステータスが表示されます。 - gcloud CLI:
gcloud redis instances describeコマンドを使用します。インスタンス メタデータにstate: READY、state: REPAIRING、その他の状態が表示されていないことを確認します。
CMEK で保護されたデータを手動で再暗号化する
Memorystore for Redis は、既存の保存データのオンデマンドでの再ラップをサポートしていません。新しい鍵バージョンを使用して、既存のバックアップまたはアクティブな永続ファイルを再暗号化するプロセスを手動でトリガーすることはできません。ただし、新しい鍵バージョンを使用して、新しく書き込まれたデータを暗号化できます。
保護された KMS 鍵を置き換える
保護された KMS 鍵を別の KMS 鍵または新しい主キーのバージョンに置き換えると、Memorystore for Redis はこの変更を今後のオペレーションにのみ適用します。
保護された KMS 鍵を置き換えると、リソースに次のような影響があります。
- バックアップ: Memorystore for Redis はバックアップを Cloud Storage バケットにエクスポートします。Cloud Storage 暗号鍵は、データの暗号化に使用される鍵を制御します。
- 永続化: 次回インスタンスが再起動するか、メンテナンス イベントが発生したときに、新しい KMS 鍵が使用されます。
- プライマリ キャッシュ: この鍵を置き換えても影響はありません。CMEK は、このデータが保存データと見なされないため、メモリ内データを暗号化しません。
プライマリ CMEK 鍵バージョンを有効にするか復元する
主キーのバージョンを有効にするか復元すると、Memorystore for Redis はインスタンスを非表示にしなくなります。
組織ポリシーの制約
Memorystore for Redis は、CMEK の組織ポリシーの制約をサポートしています。これらの制約を使用すると、インスタンスに CMEK 保護を適用し、この保護に使用できる Cloud KMS 鍵を制限できます。
次の組織ポリシーの制約を構成できます。
constraints/gcp.restrictNonCmekServices: この制約を使用して、インスタンスに CMEK 保護を適用します。Memorystore for Redis API がこの制約のサービスのDenyポリシーリストに含まれている場合、CMEK で保護されていないインスタンスを作成することはできません。constraints/gcp.restrictCmekCryptoKeyProjects: この制約を使用して、CMEK 保護に使用できる Cloud KMS 鍵を制限します。この制約を構成すると、CMEK 暗号化を使用するインスタンスは、許可されたプロジェクト、フォルダ、または組織の鍵を使用する必要があります。
Memorystore for Redis と Memorystore for Redis Cluster
は同じエンドポイント(redis.googleapis.com)を共有しているため、Memorystore for Redis Cluster のクラスタとは独立してインスタンスに CMEK を適用することはできません。
Google が Memorystore for Redis 向けに管理する CMEK 関連の組織ポリシーの制約の詳細については、組織ポリシーの制約をご覧ください。
料金
Memorystore for Redis では、CMEK を有効にしたインスタンスに対して他のインスタンスと同様に課金されます。追加料金は発生しません。詳細については、 Memorystore for Redis の料金をご覧ください。
Cloud KMS API を使用して CMEK を管理します。 CMEK を使用してインスタンスを作成すると、Memorystore は鍵を定期的に使用してデータを暗号化します。
Memorystore for Redis が鍵を使用すると、Cloud KMS から鍵の費用と暗号化 / 復号オペレーションの費用が請求されます。詳細については、 Cloud KMS の料金をご覧ください。
制限事項
Memorystore for Redis で CMEK を使用する場合、次の制限が適用されます。
- 既存のインスタンスで CMEK を有効にすることはできません。
- 鍵、キーリング、インスタンスは同じリージョンに配置する必要があります。
- 鍵には対称暗号化アルゴリズムを使用する必要があります。
- Cloud KMS の暗号化と復号の割合は、割り当ての対象になります。
次のステップ
- CMEK の詳細を見る。
- CMEK を使用してデータ セキュリティを強化する方法を確認する。
- バックアップについての詳細を学習する。
- 永続化の詳細を確認する。