mcpField
E
enabling-cmek-encryption

enabling-cmek-encryption

github.com/cockroachlabsセキュリティ23116 回インストール14 週間前に更新
リポジトリ

enabling-cmek-encryption について

CockroachDB Cloudのクラスター管理者向けに、顧客管理暗号鍵(CMEK)の有効化と管理を案内するスキルです。AWS KMS、GCP Cloud KMS、Azure Key Vaultの前提条件、設定、検証と、鍵へのアクセスに関するリスクを扱います。

主な機能

  1. 01プランとセキュリティアドオンの適格性確認
  2. 02クラウドプロバイダーのKMS鍵設定
  3. 03クラスターでのCMEK有効化
  4. 04暗号化設定と読み書きの検証
  5. 05鍵のローテーションとアクセスリスクの確認

活用シーン

  1. 01保存データ暗号化のコンプライアンス要件への対応
  2. 02CMEK設定状態の確認
  3. 03組織の方針に沿った鍵のローテーション
  4. 04鍵アクセス喪失への対応

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cockroachlabs/cockroachdb-skills --skill enabling-cmek-encryption

インストール後、Claude Code で/enabling-cmek-encryptionを入力して読み込まれたか確認します。

同梱ファイルreferences/ccloud-commands.md

詳細

CMEK 暗号化の有効化

CockroachDB Cloud クラスターでカスタマーマネージド暗号化キー(CMEK)を有効にし、保存データの暗号化を組織独自のクラウドプロバイダーの KMS(AWS KMS、GCP Cloud KMS、または Azure Key Vault)のキーで制御できるようにします。CMEK により、組織はキーのライフサイクル、ローテーション、取り消しを完全に管理できます。

このスキルを使用するタイミング

  • 規制またはコンプライアンス要件(SOC 2、HIPAA、PCI DSS)に対応するために CMEK を有効にする場合
  • 初期設定後に CMEK が適切に構成されていることを確認する場合
  • 組織のキーローテーションポリシーに従って CMEK キーをローテーションする場合
  • 保存データの暗号化に関するセキュリティ監査の指摘に対応する場合
  • CMEK の要件とプランの前提条件を確認する場合

前提条件

  • CockroachDB Cloud Advanced プラン — CMEK は Basic または Standard プランでは利用できません
  • Advanced Security アドオン — Advanced プランのクラスターで有効にする必要があります
  • クラウドプロバイダーの KMS:
    • AWS: クラスターと同じリージョンにある KMS キー、および適切な IAM ポリシー
    • GCP: クラスターと同じリージョンにある Cloud KMS キーリングとキー、および適切な IAM バインディング
    • Azure: クラスターと同じリージョンにある Key Vault とキー、および適切なアクセス ポリシー
  • Cluster Admin ロールで認証済みの ccloud CLI
  • クロスアカウントアクセス: CockroachDB Cloud サービスアカウントに KMS キーの使用権限が必要です

プランの適格性を確認します:

# Verify cluster plan type
ccloud cluster info <cluster-name> -o json
# Look for "plan": "ADVANCED" and Advanced Security Add-on status

構成の決定事項

先に進む前に、ユーザーが使用するクラウドプロバイダーの KMS を確認してください。環境に該当するオプションを尋ね、ステップ 2 では対応するサブセクションのみを実行してください。

決定 1 — クラウドプロバイダーの KMS:

  • AWS KMS: CockroachDB Cloud クラスターが AWS 上で実行されている場合に使用します。クラスターと同じリージョンにある対称暗号化キーが必要です。
  • GCP Cloud KMS: クラスターが GCP 上で実行されている場合に使用します。同じリージョンにあるキーリングとキーが必要です。
  • Azure Key Vault: クラスターが Azure 上で実行されている場合に使用します。同じリージョンにある Key Vault とキーが必要です。

手順

1. プランとアドオンの適格性を確認する
ccloud cluster info <cluster-name> -o json

Standard プランの場合: CMEK は利用できません。アップグレード手順は次のとおりです。

  1. Advanced プランにアップグレードします(CockroachDB の営業担当者に問い合わせるか、Cloud Console でアップグレードします)
  2. Advanced Security アドオンを有効にします

Advanced プランで Advanced Security アドオンが有効でない場合: 続行する前に Cloud Console でアドオンを有効にします。

2. クラウドプロバイダーで KMS キーを作成する

上記の「構成の決定事項」で選択した、ユーザーのクラウドプロバイダーに該当するサブセクションのみを実行してください。

AWS KMS
# Create a symmetric encryption key in the same region as the cluster
aws kms create-key \
  --description "CockroachDB CMEK - <cluster-name>" \
  --key-usage ENCRYPT_DECRYPT \
  --origin AWS_KMS \
  --region <aws-region>

CockroachDB Cloud サービスアカウントにキーへのアクセス権を付与します:

{
  "Effect": "Allow",
  "Principal": {
    "AWS": "<cockroachdb-cloud-service-account-arn>"
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:GenerateDataKey",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}
GCP Cloud KMS
# Create a key ring
gcloud kms keyrings create cockroachdb-cmek \
  --location <gcp-region>

# Create a symmetric encryption key
gcloud kms keys create cmek-key \
  --keyring cockroachdb-cmek \
  --location <gcp-region> \
  --purpose encryption

CockroachDB Cloud サービスアカウントにアクセス権を付与します:

gcloud kms keys add-iam-policy-binding cmek-key \
  --keyring cockroachdb-cmek \
  --location <gcp-region> \
  --member "serviceAccount:<cockroachdb-cloud-service-account>" \
  --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"
Azure Key Vault
# Create a key in the existing Key Vault
az keyvault key create \
  --vault-name <vault-name> \
  --name cockroachdb-cmek \
  --kty RSA \
  --size 2048

Key Vault のアクセス ポリシーを使用して、CockroachDB Cloud のマネージド ID にアクセス権を付与します。

3. クラスターで CMEK を構成する
# Enable CMEK with the KMS key URI
ccloud cluster update <cluster-id> \
  --cmek-key-spec '<key-spec-json>'

キー仕様の形式はクラウドプロバイダーによって異なります。ご利用のプロバイダーに対応する正確な JSON 構造については、CockroachDB Cloud のドキュメントを参照してください。

詳細なコマンド構文については、ccloud commands reference を参照してください。

4. CMEK の構成を確認する
# Check CMEK status
ccloud cluster info <cluster-name> -o json
# Verify cmek_config shows enabled status and correct key URI

CMEK のステータスは SQL クラスター設定として公開されていません。マネージドクラスターでは、Cloud Console の Cluster → Settings → Encryption ページが正式な情報源です。

5. キーへのアクセス性をテストする

CMEK を有効にした後、クラスターが正常に動作していることを確認します:

-- Create and query a test table to verify read/write works
CREATE TABLE cmek_test (id INT PRIMARY KEY, data STRING);
INSERT INTO cmek_test VALUES (1, 'encryption test');
SELECT * FROM cmek_test;
DROP TABLE cmek_test;

安全に関する考慮事項

CMEK の設定を誤ると、データにアクセスできなくなる可能性があります。 KMS キーが削除または無効化された場合、あるいはアクセス権が取り消された場合、クラスターはデータの読み取りや書き込みができなくなります。

CMEK を有効にする前に:

  • KMS キーで適切な削除保護が有効になっていることを確認します
  • IAM/アクセス ポリシーの許可設定が正しいことを確認します
  • KMS キーのリージョンがクラスターのリージョンと一致することを確認します
  • キー URI とアクセス ポリシーを記録します

キー管理に関するリスク:

  • キーの削除: KMS キーを削除すると、クラスター内のすべてのデータに永久にアクセスできなくなります
  • アクセス権の取り消し: CockroachDB のキーへのアクセス権を取り消すと、クラスターは読み取りと書き込みの提供を停止します
  • キーのローテーション: 組織のポリシーに従ってキーのローテーションを計画します。CockroachDB はローテーション後のキーによる自動再暗号化をサポートしています

ロールバック

クラスターで CMEK を有効にすると、無効にはできません。ただし、以下の対応が可能です。

  1. キーのローテーション: いつでも新しいキーにローテーションできます
  2. アクセス権の復旧: 誤ってアクセス権を取り消した場合は、IAM/アクセス ポリシーを復元して処理を再開します
  3. 新しいクラスター: CMEK の設定に根本的な問題がある場合は、新しいクラスターを作成してデータを移行します

緊急時 — キーにアクセスできない場合:

  1. 直ちに KMS キーへのアクセスを復旧します(IAM ポリシー、キーの再有効化)
  2. キーへのアクセスが復旧すると、クラスターは処理を再開します
  3. キーが完全に削除された場合、データを復旧することはできません

参考情報

関連スキル:

CockroachDB 公式ドキュメント:

クラウドプロバイダーの KMS ドキュメント:

コメント