mcpField
M
managing-certificates-and-encryption

managing-certificates-and-encryption

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

managing-certificates-and-encryption について

CockroachDB の証明書と暗号化キーのライフサイクルを扱う運用スキルです。デプロイ階層と課題を確認し、監視、ローテーション、安全対策の手順へ案内します。

主な機能

  1. 01階層に応じた手順の振り分け
  2. 02証明書の有効期限監視
  3. 03証明書と CA のローテーション手順
  4. 04CMEK キーの更新と緊急時の手順
  5. 05Kubernetes 証明書の管理
  6. 06安全対策とトラブルシューティング

活用シーン

  1. 01セルフホストクラスターの証明書期限確認
  2. 02ノード証明書または CA 証明書の更新
  3. 03Advanced または BYOC の CMEK キー管理
  4. 04コンプライアンスに向けた暗号化状態の監査

インストール

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

$npx skills add https://github.com/cockroachlabs/cockroachdb-skills --skill managing-certificates-and-encryption

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
cmek-procedures.md
kubernetes-certs.md
rotation-procedures.md
safety-guide.md

詳細

証明書と暗号化の管理

すべてのデプロイ階層にわたって、TLS 証明書と暗号化キーのライフサイクルを管理します。手順を案内する前に、このスキルではコンテキストを収集し、オペレーターが証明書を直接管理しているのか(セルフホスト)、CMEK 暗号化キーを管理しているのか(Advanced/BYOC)、それとも暗号化が完全に管理されているのか(Standard/Basic)を判断します。

このスキルを使用する場面

  • 証明書の有効期限を監視する場合(セルフホスト)
  • 定期的な証明書ローテーションを実施する場合(セルフホスト)
  • CMEK 暗号化キーを管理する場合(Advanced/BYOC)
  • キー侵害に対応する場合(セルフホスト、CMEK)
  • コンプライアンスのために暗号化の状況を監査する場合(すべての階層)
  • ノード証明書に DNS 名または IP を追加する場合(セルフホスト)

日常的なヘルスチェックには、reviewing-cluster-health を使用してください。


ステップ 1:コンテキストの収集

必要なコンテキスト
質問選択肢重要な理由
デプロイ階層は何ですか?Self-Hosted、Advanced、BYOC、Standard、Basic暗号化管理の責任範囲を判断します
理由は何ですか?定期的な監視、定期ローテーション、キー侵害、コンプライアンス監査、SAN エントリの追加緊急度と手順を判断します
追加のコンテキスト(階層別)

Self-Hosted の場合:

質問選択肢重要な理由
証明書の種類は何ですか?CA、Node、Client、UI種類ごとにローテーション手順が異なります
デプロイプラットフォームは何ですか?ベアメタル/VM、Kubernetes(Operator/Helm/手動)ローテーションに使用するツールが変わります
証明書ツールは何ですか?cockroach cert、openssl、HashiCorp Vault、cert-manager証明書の生成コマンドを判断します
CA をローテーションしますか?はい、いいえCA のローテーションには、新旧 CA を組み合わせる方法が必要です

Advanced または BYOC の場合:

質問選択肢重要な理由
CMEK に関する内容ですか?はい、いいえCMEK はお客様が担う暗号化の責任範囲です。TLS は CRL が管理します
クラウドプロバイダーは何ですか?AWS、GCP、AzureKMS サービスと CLI コマンドを判断します
CMEK は現在有効ですか?はい、いいえCMEK はクラスター作成時に有効にする必要があります

Standard または Basic の場合: コンテキストは不要です。TLS と暗号化は完全に管理されています。これらの階層では CMEK を利用できません。

コンテキストに応じた分岐
階層+シナリオ移動先
Self-HostedSelf-Hosted の証明書管理
Advanced/BYOC+CMEKCMEK キー管理
Advanced/BYOC+TLS に関する質問クラウド TLS(管理対象)
Standard完全管理の暗号化
Basic完全管理の暗号化

Self-Hosted の証明書管理

対象: Tier = Self-Hosted

証明書の有効期限を監視する

本番環境で安全に使用できる SQL ビューから、証明書の有効期限を確認することはできません。次のいずれかを使用してください。

# Inspect certs locally on each node
cockroach cert list --certs-dir=<certs-dir>

# Or read a specific cert file
openssl x509 -in <certs-dir>/node.crt -noout -enddate

# Or scrape the per-node Prometheus endpoint (UNIX seconds for ca, node, client_ca, ui_ca)
curl -ks https://<node>:8080/_status/vars | grep '^security_certificate_expiration_'

アラートのしきい値:CA の有効期限が 1 年未満の場合は、ローテーションを計画します。Node の有効期限が 90 日未満の場合は、ローテーションを予定します。Node の有効期限が 30 日未満の場合は、直ちにローテーションします。

Node 証明書をローテーションする(同じ CA)
cockroach cert create-node <hostname> <ip> <lb-hostname> <lb-ip> localhost 127.0.0.1 \
  --certs-dir=<certs-dir> --ca-key=<ca-key-path> --overwrite

ノードにデプロイし、キーファイルに chmod 0600 を設定します。CockroachDB は新しい証明書を自動検出するため、再起動は不要です。

詳しい手順と検証方法については、ローテーション手順のリファレンスを参照してください。

CA 証明書をローテーションする

信頼をシームレスに移行するには、新旧の CA を組み合わせた証明書が必要です。

  1. 新しい CA キーと証明書を生成します
  2. CA の結合ファイルを作成します:cat new-ca.crt old-ca.crt > ca.crt
  3. 結合した CA をすべてのノードにデプロイします
  4. 新しい CA で署名した Node 証明書と Client 証明書を再発行します
  5. すべてのエンティティで新しい CA の署名済み証明書を使用した後、結合ファイルから古い CA を削除します

CA ローテーションの全手順については、ローテーション手順のリファレンスを参照してください。

Kubernetes 証明書管理
  • CockroachDB Operator: 自己署名証明書は自動的にローテーションされます。tls.certs.selfSigner.rotateCerts で設定します。
  • cert-manager: 自動更新されます。新しい証明書を適用するには、Pod の再起動が必要な場合があります。

Kubernetes の詳しい手順については、kubernetes-certs リファレンスをご覧ください。


CMEK キー管理

対象: Tier = Advanced または BYOC、CMEK が有効

CMEK とは

カスタマー管理暗号化キーは、クラウドプロバイダーの KMS に保存されたキーで、CockroachDB の保存データ暗号化を保護します。CockroachDB Cloud が CMEK 自体にアクセスすることはありません。

CMEK を利用するには、クラスター作成時に高度なセキュリティ機能を有効にした Advanced クラスターが必要です。作成後に有効化することはできません。CMEK は Standard または Basic では利用できません。

CMEK のステータスを確認する
curl -s -H "Authorization: Bearer $COCKROACH_API_KEY" \
  "https://cockroachlabs.cloud/api/v1/clusters/<cluster-id>/cmek" | jq '.'

または:Cloud Console → Cluster → Security → Encryption。

CMEK キーをローテーションする

クラウドプロバイダーの KMS でキーをローテーションします。CockroachDB Cloud は新しいキーバージョンを自動的に使用します。クラスターのダウンタイムは発生しません。

プロバイダー別の KMS ローテーションコマンド(AWS KMS、GCP Cloud KMS、Azure Key Vault)と IAM 監査手順については、cmek-procedures リファレンスをご覧ください。

緊急時:CMEK キーを無効化する

CMEK キーを無効化すると、KMS プロバイダーの猶予期間内にキーを復元しない限り、クラスターのデータに永久にアクセスできなくなります。

緊急停止スイッチとしてのみ使用してください。 元に戻せない可能性があります。


Cloud TLS(マネージド)

対象: Tier = Advanced または BYOC、TLS に関する質問(CMEK 以外)

Advanced と BYOC では、TLS 証明書は Cockroach Labs によって完全に管理されます。

  • プロビジョニング、ローテーション、更新は自動で行われます
  • お客様による操作は不要です
  • 証明書の状態は CRL によって監視されます

クライアント証明書: アプリケーション接続用のクライアント側証明書は、お客様自身で管理します。これらは標準的な PostgreSQL クライアント証明書です。


完全マネージド暗号化

対象: Tier = Standard または Basic

TLS 証明書と保存データの暗号化は、Cockroach Labs によって完全に管理されます。

  • 証明書の確認やローテーションを行う必要はありません
  • 転送中の暗号化は常に有効です
  • 保存データの暗号化は常に有効です
  • これらの Tier では CMEK を利用できません

CMEK が必要な場合: Advanced にアップグレードしてください。


安全上の考慮事項

読み取り専用の監視クエリは、すべての Tier で安全です。

セルフホスト環境での証明書操作:

  • ローテーション前に、必ず既存の証明書をバックアップしてください
  • 新旧の CA を組み合わせる方法を使用し、CA を突然置き換えないでください
  • SAN エントリーにすべてのホスト名、IP、ロードバランサーアドレスが含まれていることを確認してください
  • CA キーはノード証明書とは別に保管してください
  • ファイルの権限:キー ファイルのモードは 0600 とし、所有者は cockroach プロセスのユーザーにしてください

CMEK の操作(Advanced/BYOC):

  • CMEK キーを無効化すると、データに永久にアクセスできなくなります
  • KMS キーのローテーション前後に IAM 権限を確認してください
  • まずステージングクラスターで CMEK のローテーションをテストしてください

詳しいリスクマトリックスについては、safety-guide リファレンスをご覧ください。

トラブルシューティング

問題Tier対処方法
Cert メトリクスが NULLSHクラスターがセキュアモードであることを確認する
新しい証明書が検出されないSHファイルの権限(0600、正しい所有者)を確認する
「unknown authority」エラーSH新旧の CA を組み合わせてデプロイする
ローテーション後に接続が失敗するSHSAN エントリーですべてのホスト名/IP がカバーされていることを確認する
CMEK のアクセスが拒否されるADV/BYOCKMS キーのポリシーと IAM 権限を確認する
CMEK を有効にできないADV/BYOCCMEK はクラスター作成時に有効にする必要があります

参考資料

スキルの参考資料:

関連スキル:

CockroachDB 公式ドキュメント:

コメント