このページでは、AlloyDB for PostgreSQL の顧客管理の暗号鍵(CMEK)について説明します。
CMEK の機能を使用するケースや理由などの一般的な詳細情報については、Cloud KMS のドキュメントをご覧ください。
デフォルトでは、AlloyDB for PostgreSQL はお客様のコンテンツを保存時に暗号化します。AlloyDB では、ユーザーが追加で操作を行わなくても、暗号化が行われます。このオプションは、Google のデフォルトの暗号化と呼ばれます。
暗号鍵を管理する場合は、Cloud KMS の顧客管理の暗号鍵(CMEK)を、AlloyDB などの CMEK 統合サービスで使用できます。Cloud KMS 鍵を使用すると、保護レベル、ロケーション、ローテーション スケジュール、使用とアクセスの権限、暗号境界を制御できます。Cloud KMS を使用すると、監査ログを表示し、鍵のライフサイクルを管理することもできます。データを保護する対称鍵暗号鍵(KEK)は Google が所有して管理するのではなく、ユーザーが Cloud KMS でこれらの鍵の制御と管理を行います。
CMEK を使用してリソースを設定した後は、AlloyDB リソースへのアクセスは Google のデフォルトの暗号化を使用する場合と同様です。暗号化オプションの詳細については、顧客管理の暗号鍵(CMEK)をご覧ください。
手動で作成した CMEK を使用して AlloyDB リソースを保護する方法については、CMEK を使用するをご覧ください。
Cloud KMS Autokey による CMEK
CMEK を手動で作成して AlloyDB リソースを保護することも、Cloud KMS Autokey を使用することもできます。Autokey を使用すると、AlloyDB のリソース作成の一環として、キーリングと鍵がオンデマンドで生成されます。暗号化と復号のオペレーションに鍵を使用するサービス エージェントがまだ存在しない場合、そのエージェントが作成され、必要な Identity and Access Management(IAM)ロールが付与されます。詳細については、Autokey の概要をご覧ください。
Terraform または REST API を使用してリソースを作成する場合、AlloyDB と互換性があるのは Cloud KMS Autokey のみです。
Google 管理の暗号化のセルフマネージド代替
デフォルトでは、AlloyDB のデータを含め、 Google Cloudのすべての保存データが、Google が管理するデフォルトの暗号化を使用して保護されます。 Google Cloudは、このデフォルトの暗号化を自動で処理して管理するので、ユーザーが操作する必要はありません。
データを保護する鍵について特定のコンプライアンス要件や規制要件がある場合は、代わりに CMEK を使用できます。CMEK を使用すると、Cloud Key Management Service(KMS)で制御、管理する鍵を使用して AlloyDB クラスタが保護されます。CMEK 鍵は、対称鍵または Cloud HSM 鍵にできます。
機能
データアクセス制御: 管理者は、AlloyDB の保存データの保護に使用した鍵のローテーション、アクセス管理、無効化 / 破棄を行うことができます。
鍵管理は Cloud KMS によって処理されます。ローテーション後、クラスタが新しい鍵バージョンで自動的に再暗号化されることはありません。クラスタは、クラスタの作成時に CMEK のプライマリ バージョンで暗号化されます。クラスタの暗号化をローテーションするには、バックアップを作成し、新しい鍵バージョンでクラスタを復元します。詳細については、データのバックアップと復元の概要をご覧ください。
監査可能性: プロジェクトで Cloud KMS API の監査ロギングを有効にすると、AlloyDB により実行されたものを含む鍵に対するすべてのアクションは、Cloud Logging で記録され、表示されます。
パフォーマンス: CMEK を使用しても、AlloyDB のパフォーマンスに変更はありません。
料金
AlloyDB では、CMEK を有効にしたクラスタに対して他のクラスタと同様に課金されます。AlloyDB に対しては追加料金は発生しません。詳細については、AlloyDB for PostgreSQL の料金をご覧ください。
AlloyDB が鍵を使用すると、Cloud KMS から鍵の費用と暗号化 / 復号オペレーションの費用が請求されます。詳細については、Cloud Key Management Service の料金をご覧ください。
CMEK による保護対象
AlloyDB は、Cloud KMS 鍵を使用して、次の方法で保存データを保護します。
- クラスタで CMEK を有効にすると、AlloyDB は鍵を使用して、ストレージ内のクラスタのすべてのデータを暗号化します。
- オンデマンド バックアップの作成時に CMEK 構成を指定すると、AlloyDB はその鍵を使用してバックアップを暗号化します。
クラスタの継続的なバックアップまたは自動バックアップの構成で CMEK を有効にすると、AlloyDB は鍵を使用して進行中のバックアップを暗号化します。
Google-owned and Google-managed encryption keys または CMEK のどちらを使用する場合でも、AlloyDB には 3 つの暗号化レイヤがあります。
AlloyDB は、保存容量のために保存データをチャンクに分割し、個別の暗号鍵で各チャンクを暗号化します。チャンクのデータを暗号化するために使用する鍵は、データ暗号鍵(DEK)と呼ばれます。
Google で使用する鍵は膨大な数にのぼり、また低レイテンシと高可用性を実現する必要があるため、AlloyDB は各 DEK を暗号化対象のデータの近くに保存します。
AlloyDB は、クラスタが保持する鍵暗号鍵(KEK)を使用して各 DEK を暗号化します。
最後に、AlloyDB は、クラスタの Cloud Key Management Service ベースの暗号鍵( Google-owned and Google-managed encryption keyまたは CMEK 鍵)を使用して KEK を暗号化します。
クラスタの保護に使用されている鍵バージョンも確認できます。
CMEK を有効にする
AlloyDB クラスタで CMEK を使用できるようにするには、クラスタの作成時に Cloud KMS 鍵を指定する必要があります。
Cloud KMS CryptoKey Encrypter/Decrypter(roles/cloudkms.cryptoKeyEncrypterDecrypter
)ロールを AlloyDB サービス エージェントに付与すると、AlloyDB はユーザーに代わって鍵にアクセスできるようになります。
詳細な手順については、CMEK を使用するをご覧ください。
鍵を管理する
すべての鍵管理オペレーションに Cloud KMS を使用します。AlloyDB は、Cloud KMS によって鍵の変更が伝播されるまで、その検出や、変更に対する対応ができません。鍵の無効化や破棄などのオペレーションでは、その伝播に最長 3 時間かかることがあります。通常、権限の変更ははるかに速く反映されます。
クラスタの作成後、AlloyDB は約 5 分ごとに Cloud KMS を呼び出して、鍵が引き続き有効であることを確認します。
Cloud KMS 鍵が無効化または破棄されたことを AlloyDB が検出すると、クラスタのデータをアクセス不能にするオペレーションがすぐに開始されます。AlloyDB の Cloud KMS に対する呼び出しで、以前に無効にした鍵の再有効化が検出されると、アクセスが自動的に復元されます。
外部鍵を使用および管理する
Cloud KMS に存在する鍵を使用する代わりに、サポートされている外部の鍵管理パートナーに存在する鍵を使用できます。これを行うには、Cloud External Key Manager(Cloud EKM)を使用して、 Google Cloudの外部にある鍵へのポインタである外部鍵を作成して管理します。詳細については、Cloud External Key Manager をご覧ください。
Cloud EKM で外部鍵を作成したら、クラスタの作成時にその鍵の ID を指定して、新しい AlloyDB クラスタに適用できます。この手順は、新しいクラスタに Cloud KMS 鍵を適用する場合と同じです。
Cloud EKM の一部として、Key Access Justifications を使用できます。Key Access Justifications を使用すると、各 Cloud EKM リクエストの理由を確認できます。さらに、示された理由に基づいて、リクエストを自動的に承認または拒否できます。詳細については、概要をご覧ください。
Google では、外部の鍵管理パートナー システムで鍵の可用性を制御することはできません。
鍵の使用不能
AlloyDB クラスタの暗号化に使用される Cloud KMS 鍵を無効にすると、そのクラスタに属する AlloyDB インスタンスで 30 分以内にダウンタイムが発生します。キーを再度有効にすると、インスタンスが再起動されます。
Cloud KMS が使用できない場合のようなまれなケースで、AlloyDB が Cloud KMS から鍵のステータスを取得できないことがあります。このような場合、AlloyDB は一時的な停止がワークロードに与える影響を最小限に抑えるため、最大 30 分間、ベスト エフォート ベースでクラスタ全体のオペレーションをサポートし続けます。
30 分経過しても AlloyDB が Cloud KMS に接続できない場合、AlloyDB は安全策としてクラスタをオフラインにする操作を開始します。AlloyDB クラスタのデータは、クラスタが Cloud KMS に再接続して、鍵がアクティブであるという応答が Cloud KMS から返されるまで、アクセス不能のままです。
バックアップと復元
AlloyDB は、CMEK またはデフォルトの Google 管理の暗号化を使用してバックアップも保護します。バックアップが CMEK 対応の場合は、バックアップの作成時に KMS 鍵のプライマリ バージョンを使用して暗号化されます。バックアップを作成すると、KMS 鍵がローテーションされても、その鍵と鍵バージョンの変更はできません。詳細については、クラスタのバックアップをご覧ください。
バックアップからクラスタを復元すると、復元されたクラスタはデフォルトで Google 管理の暗号化を使用しますが、代わりに使用する CMEK 鍵を指定できます。CMEK を有効化したバックアップを復元するには、バックアップの暗号化に使用した鍵と鍵バージョンの両方が使用できる必要があります。
ロギング
プロジェクトで Cloud KMS API の監査ロギングを有効にしている場合は、Cloud Logging で AlloyDB が Cloud KMS に送信するリクエストを監査できます。これらの Cloud KMS ログエントリは Cloud Logging で確認できます。詳細については、Cloud KMS 鍵の監査ログを表示するをご覧ください。