CMEK の使用

このページでは、AlloyDB for PostgreSQL の顧客管理の暗号鍵(CMEK)を作成、構成、適用する方法について説明します。

CMEK の詳細については、CMEK についてをご覧ください。

AlloyDB の CMEK 鍵を作成して承認する

  1. Cloud Key Management Service(Cloud KMS)で鍵を作成します。AlloyDB は、次の種類の鍵をサポートしています。

    鍵は AlloyDB クラスタと同じロケーションにあることが必要です。たとえば、us-west1 にある AlloyDB クラスタは、us-west1 内の鍵のみを使用できます。

    すでに適切な場所に Cloud KMS 鍵を配置している場合は、このステップをスキップできます。

  2. AlloyDB に鍵へのアクセス権を付与します。

    1. 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
      
    2. サービス アカウントに 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 時間かかることがあります。データへのアクセスをすぐにブロックしながら鍵を無効にするには、次の操作を行います。

  1. クラスタのプライマリ インスタンスを削除します。これはクラスタのデータには影響しません。次のセクションで説明するように、鍵を再度有効にした後に新しいプライマリ インスタンスを作成できます。

  2. Cloud KMS を使用して鍵を無効にします。

鍵を有効にする

鍵を有効にするには、次の操作を行います。

  1. Cloud KMS を使用して鍵を有効にする

  2. 鍵を無効にする前にクラスタのプライマリ インスタンスを削除した場合は、新しいプライマリ インスタンスを作成します。

鍵を有効にしてクラスタに伝播されるまでに、最長で 3 時間かかることがあります。この伝播が完了するとすぐに、クラスタのデータにアクセスできるようになります。

Cloud KMS 鍵の監査ログを表示する

特定の CMEK 鍵に関連付けられた監査ログを表示する手順は次のとおりです。

  1. プロジェクト内の Cloud KMS API でロギングが有効になっていることを確認します。

  2. Google Cloud コンソールの [ログ エクスプローラ] に移動します。

    ログ エクスプローラに移動

  3. クエリビルダーに次の行を追加して、ログエントリを 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
  4. 通常のオペレーションでは、暗号化オペレーションと復号オペレーションは INFO 重大度でログに記録されます。これらのエントリは、AlloyDB クラスタ内のインスタンスが {kms_name_short}} 鍵を検証するときにログに記録されます。これは約 5 分ごとに行われます。

  5. AlloyDB が鍵へのアクセスに失敗すると、オペレーションは ERROR としてログに記録されます。

Cloud EKM 鍵のアクセス理由を確認する

Cloud EKM 鍵を使用している場合は、Key Access Justifications を使用して、各 Cloud EKM リクエストの理由を確認できます。さらに、示された理由に基づいて、リクエストを自動的に承認または拒否できます。詳細については、理由を表示して対応するをご覧ください。