KMIP のベストプラクティス
DuoKey KMIP エンドポイントを安全に運用するための推奨事項。プラットフォームが実際に強制する内容に基づいています。
認証とトランスポート
クライアントトラフィックは KMIP ポート(デフォルト 5696)上の TLS であり、クライアント認証はオプションの相互 TLS です。
検証済み mTLS を強制する
信頼できるクライアント CA バンドルを構成し、提示されたクライアント証明書が検証され、その ID を認可のために信頼できるようにします。
クライアント証明書を必須にする
エンドポイントで require_client_cert をオンにし、許可する認証方式を mtls(およびクライアントが必要とする場合のみ token)に保ちます。
匿名アクセスを避ける
本番エンドポイントで匿名アクセスを有効にしないでください。簡単な接続性確認にのみ使用します。
# PEM bundle of client-CA certificates the KMIP listener will trust.
KMIP_CLIENT_CA_BUNDLE=/etc/duokey/kmip/client-ca-bundle.pemKMIP_CLIENT_CA_BUNDLE がない場合、提示されたクライアント証明書は CA 検証なしで受け入れられ、信頼してはなりません。本番環境ではリスナーはバンドルが構成されるまで起動を拒否します — 必ず設定してください。
最小権限のエンドポイントポリシー
各エンドポイントは独自のポリシーを持ちます。接続するシステムが必要とするものだけにスコープを絞ってください。
| Control | Recommendation |
|---|---|
| 許可する操作 | クライアントが使用する操作のみを付与します(例: Create、Get、Activate、Encrypt/Decrypt)。許可されていない操作は OperationNotSupported を返します。 |
| 許可するオブジェクトタイプ | 使用中のオブジェクトタイプ — 通常は SymmetricKey — に制限します。 |
| 目的ごとに 1 エンドポイント | 広くスコープされた 1 つのエンドポイントを共有するのではなく、システムや環境ごとに個別のエンドポイントをプロビジョニングします。 |
Cockpit のオペレーターは Operations.Kmip 権限(表示、作成、更新、削除、テスト)によって管理されます。管理権限は、それを必要とするロールにのみ付与してください。
監査
エンドポイントで監査ログを有効にして、すべての KMIP 操作が記録されるようにし、KMIP メニューのエンドポイントの Operations タブから確認します。認証失敗の繰り返しや予期しない操作に注意してください。
鍵の衛生管理
| Practice | Detail |
|---|---|
| AES-256 を使用する | デフォルトかつ推奨される共通鍵サイズ。HMAC 鍵は 256 ビット以上にすべきです。 |
| 意図的に有効化する | 鍵は有効化されるまで PreActive です。鍵が使用可能な状態になったときにのみ有効化してください。 |
| ReKey でローテーションする | ReKey で鍵をロールします。これは新しい識別子の下で新しい素材を生成し、それを以前の鍵にリンクするため、既存データを引き続き復号できます。 |
| Destroy の前に Revoke する | 運用停止した鍵を Destroy する前に、Revoke で Deactivated(または Compromised)に移行します。Destroy は取り消せません。 |
サーバーは共通鍵(AES、HMAC)を生成します。RSA または EC 鍵ペアは生成せず、署名、アーカイブ、鍵エクスポートの操作も提供しません — 統合は共通鍵管理を中心に計画してください。
保存時の鍵素材の保護
鍵素材は Cockpit データベースに 保存時に暗号化 されて格納され、プラットフォーム暗号鍵の下で AES-256-GCM によりシールされます — これは vault 資格情報に使用されるのと同じ保護です。
保存された KMIP 鍵のセキュリティは、プラットフォーム暗号鍵に依存します。それを保護し、Cockpit データベースへのアクセスを制限し、両方をバックアップおよびリカバリ計画に含めてください。プラットフォーム鍵を失うと、保存された鍵素材を復号できなくなります。
証明書のライフサイクル
- KMIP リスナーは Cockpit の HTTPS エンドポイントと同じ TLS 証明書 を提示します — その証明書の更新は Cockpit 運用の一部として管理してください。
- クライアント 証明書を定期的にローテーションし、運用停止したクライアント CA の信頼をバンドルから削除してください。
本番前の検証
組み込みの Client Simulator を使用して、本番システムを接続する前に、エンドポイントに対してライフサイクル全体(作成 → 有効化 → 取得 → 暗号化/復号 → 失効 → 破棄)を実行します。相互運用性は、OASIS リファレンスクライアントである PyKMIP でも検証されています。
本番チェックリスト
| Area | Before go-live |
|---|---|
| mTLS | クライアント CA バンドルが構成済み。require_client_cert がオン。匿名アクセスがオフ。 |
| ポリシー | 許可する操作とオブジェクトタイプがクライアントに合わせてスコープされている。 |
| 監査 | エンドポイントで監査ログが有効になっている。 |
| 鍵 | デフォルトアルゴリズムが AES-256。有効化とローテーションの方針が合意されている。 |
| バックアップ | Cockpit データベースとプラットフォーム暗号鍵がバックアップに含まれている。 |
| 検証 | エンドポイントが Client Simulator で実行済み。エンドポイントが Running である。 |