このページでは、AlloyDB for PostgreSQL の顧客管理の暗号鍵(CMEK)を作成、構成、適用する方法について説明します。
CMEK の詳細については、CMEK についてをご覧ください。
AlloyDB の CMEK 鍵を作成して承認する
Cloud Key Management Service(Cloud KMS)で鍵を作成します。AlloyDB は、次の種類の鍵をサポートしています。
鍵は AlloyDB クラスタと同じロケーションにあることが必要です。たとえば、
us-west1
にある AlloyDB クラスタは、us-west1
内の鍵のみを使用できます。すでに適切な場所に Cloud KMS 鍵を配置している場合は、このステップをスキップできます。
AlloyDB に鍵へのアクセス権を付与します。
Google Cloud CLI を使用して、サービス エージェントを作成して表示します。アカウントがすでに存在する場合は、それを表示します。
gcloud beta services identity create --service=alloydb.googleapis.com \ --project=PROJECT
gcloud services ID コマンドは、ユーザーに代わって AlloyDB が Cloud KMS 鍵にアクセスする際に使用するサービス エージェントを作成または取得します。
サービス アカウント ID はメールアドレスに似ています。
Service identity created: service-xxx@gcp-sa-alloydb.iam.gserviceaccount.com
サービス アカウントに
cloudkms.cryptoKeyEncrypterDecrypter
ロールを付与します。gcloud kms keys add-iam-policy-binding KEY \ --location REGION \ --keyring KEYRING \ --project=PROJECT \ --member serviceAccount:service-xxx@gcp-sa-alloydb.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
次のように置き換えます。
- KEY: 鍵の Cloud KMS ID
- REGION: キーのリージョン(例:
us-central1
) - PROJECT: 鍵のプロジェクトの ID
- KEYRING: 鍵の Cloud KMS キーリングの ID
このロールにより、サービス アカウントには Cloud KMS 鍵による暗号化と復号の両方が許可されます。詳細については、Cloud KMS の権限とロールをご覧ください。
CMEK で暗号化されたクラスタを作成する
新しいクラスタを作成するときに、デフォルトの Google 管理の暗号化で暗号化するのか、代わりに CMEK 鍵を使用するのかを選択できます。詳細については、クラスタとそのプライマリ インスタンスを作成するをご覧ください。
クラスタの暗号化方法と CMEK 鍵を表示する
コンソール
[クラスタ] ページの [暗号化] 列には、プロジェクト内の各クラスタが Google 管理の暗号化と CMEK のどちらを使用しているかが表示されます。
CMEK を使用するクラスタの鍵の詳細を表示するには、[リソース名] 列でその名前をクリックします。次の詳細ページの [暗号鍵] フィールドには、鍵の説明(独自の Cloud KMS 詳細ページへのリンクを含む)が含まれています。
gcloud
gcloud alloydb clusters describe
コマンドを呼び出します。
gcloud alloydb clusters describe CLUSTER \
--project=PROJECT \
--region=REGION
次のように置き換えます。
- CLUSTER: 説明するクラスタの ID
- PROJECT: クラスタのプロジェクトの ID
- REGION: クラスタのリージョン(例:
us-central1
)
出力には、クラスタの暗号化の概要を含む encryptionInfo
フィールドが含まれます。
バックアップに CMEK を適用する
新しいバックアップを作成するときに、デフォルトの Google 管理の暗号化で暗号化するのか、代わりに CMEK 鍵を使用するのかを選択できます。詳細については、オンデマンド バックアップを作成するまたは自動バックアップのスケジュールを設定するをご覧ください。
また、バックアップからの復元時に作成されたクラスタに、バックアップの暗号化方法に関係なく CMEK 鍵を適用することもできます。詳細については、クラスタを復元するをご覧ください。
バックアップの暗号化方法と CMEK 鍵を表示する
コンソール
[バックアップ] ページの [暗号化] 列には、プロジェクト内の各クラスタが Google が管理する暗号化と CMEK のどちらを使用しているかが表示されます。
[バックアップ] ページに移動します。
CMEK を使用したバックアップの詳細を確認するには、[復元] をクリックします。次の詳細パネルの [暗号鍵] フィールドには、鍵の説明(独自の Cloud KMS の詳細ページへのリンクを含む)が表示されます。
gcloud
gcloud alloydb backups describe
コマンドを呼び出します。
gcloud alloydb backups describe CLUSTER \
--project=PROJECT \
--region=REGION
次のように置き換えます。
- CLUSTER: 説明するバックアップの ID
- PROJECT: バックアップのプロジェクトの ID
- REGION: バックアップのリージョン(例:
us-central1
)
出力には、バックアップの暗号化の概要を含む encryptionInfo
フィールドが含まれます。
鍵を無効にする
クラスタの CMEK 鍵を無効にすると、鍵を再度有効にするまで、そのクラスタのデータにアクセスできなくなります。
ただし、鍵を無効にすると、AlloyDB クラスタに伝播されるまでに最長で 3 時間かかることがあります。データへのアクセスをすぐにブロックしながら鍵を無効にするには、次の操作を行います。
クラスタのプライマリ インスタンスを削除します。これはクラスタのデータには影響しません。次のセクションで説明するように、鍵を再度有効にした後に新しいプライマリ インスタンスを作成できます。
鍵を有効にする
鍵を有効にするには、次の操作を行います。
鍵を無効にする前にクラスタのプライマリ インスタンスを削除した場合は、新しいプライマリ インスタンスを作成します。
鍵を有効にしてクラスタに伝播されるまでに、最長で 3 時間かかることがあります。この伝播が完了するとすぐに、クラスタのデータにアクセスできるようになります。
Cloud KMS 鍵の監査ログを表示する
特定の CMEK 鍵に関連付けられた監査ログを表示する手順は次のとおりです。
プロジェクト内の Cloud KMS API でロギングが有効になっていることを確認します。
Google Cloud コンソールの [ログ エクスプローラ] に移動します。
クエリビルダーに次の行を追加して、ログエントリを Cloud KMS 鍵に限定します。
resource.type="cloudkms_cryptokey" resource.labels.location="REGION" resource.labels.key_ring_id="KEYRING" resource.labels.crypto_key_id="KEY"
次のように置き換えます。
- REGION: キーのリージョン(例:
us-central1
) - KEYRING: 鍵の Cloud KMS キーリングの ID
- KEY: 鍵の Cloud KMS ID
- REGION: キーのリージョン(例:
通常のオペレーションでは、暗号化オペレーションと復号オペレーションは
INFO
重大度でログに記録されます。これらのエントリは、AlloyDB クラスタ内のインスタンスが {kms_name_short}} 鍵を検証するときにログに記録されます。これは約 5 分ごとに行われます。AlloyDB が鍵へのアクセスに失敗すると、オペレーションは
ERROR
としてログに記録されます。
Cloud EKM 鍵のアクセス理由を確認する
Cloud EKM 鍵を使用している場合は、Key Access Justifications を使用して、各 Cloud EKM リクエストの理由を確認できます。さらに、示された理由に基づいて、リクエストを自動的に承認または拒否できます。詳細については、理由を表示して対応するをご覧ください。