Couchbase Encryption at Rest
DuoKey が保持するキー暗号化キーが、KMIP 経由で Couchbase 自身のデータ暗号化キーをラップします。
概要
Couchbase Server(7.1+ Enterprise Edition)には、データベース内部のネイティブ Encryption at Rest 機能が同梱されています。Couchbase 自身が、ディスク上のバケット、インデックス、ログ、監査データ、設定を保護するデータ暗号化キー(DEK)を生成・管理します。それらの DEK は、Couchbase が KMIP(または AWS KMS)経由で外部の KMS から取得するキー暗号化キー(KEK)によってラップされます。
このアプリはその KEK を DuoKey vault にプロビジョニングし、KMIP 登録バンドル — ホスト、ポート、キー ID、クライアント証明書の識別情報 — を出力します。オペレーターはこれを Couchbase 自身の Security > Encryption at Rest の設定画面に貼り付けます。キーのラップは Couchbase が KMIP 接続を通じて内部で行い、DuoKey の役割はキーカストディ側に完全に限定されます。
これは、汎用の OS レベルのディスク暗号化アプリ(PKCS#11/CNG-KSP によるボリュームのアンロック)とは本質的に異なる仕組みです。ラップを駆動するのは OS レベルのボリュームのアンロックではなく、Couchbase 自身の /settings/security/encryptionAtRest の設定です。
Couchbase は自身のデータ暗号化キーをエンドツーエンドで所有します。KMIP 接続を越えて DuoKey に渡るのは、それらをラップするキー暗号化キーだけです。
Couchbase 自身の KMIP クライアントには 2 つのモードがあります。"Use KMIP Get & encrypt locally" では、KEK のバイト列を一度取得し、ノード上で DEK のラップ/アンラップを行います。"Use KMIP native Encrypt/Decrypt operation" では、代わりに Couchbase がラップ対象の DEK マテリアルを KMIP サーバーに送って暗号化または復号するため、KEK のバイト列が DuoKey から出ることは一切ありません。いずれの方法でも、DuoKey が DEK やバケットのデータを見ることはなく、見るのは前者のモードにおけるその接続用の KEK マテリアルだけです。
| プロパティ | 値 |
|---|---|
| 暗号化モデル | エンジンネイティブな DEK/KEK ラップ — KEK は KMIP 経由で外部から供給 |
| キーの種類 | DuoKey vault 内で生成される AES-256 の KEK |
| オンボーディング | アプリ詳細ページ — ウィザードのエントリなし |
| 実証ステータス | KEK のプロビジョニングと KMIP 登録バンドルは実物(本物の vault キーが作成されます)。Couchbase 内でバンドルを適用する作業はオペレーターによる手動ステップであり、まだエンドツーエンドで自動化されていません |
設定
| フィールド | 目的 |
|---|---|
cluster_hosts | クラスターノードのホスト名の参考リスト。 |
bucket_scope | `cluster` — クラスター全体で 1 つの KEK(デフォルト) — または `per_bucket`。 |
vault_id | KEK を作成する DuoKey の vault。 |
アプリをデプロイすると、Couchbase 暗号化アプリと最初のクラスターレコードが併せて作成されます。そのクラスターの登録は別のステップであり、そこで実際に KEK がプロビジョニングされます。
登録の流れ
アプリをデプロイする
アプリと最初のクラスターレコードを作成し、KEK のスコープをクラスター全体にするかバケットごとにするかを選択します。
クラスターを登録する
登録を実行します。Cockpit は選択された vault(指定がない場合はテナントのデフォルトのソフトウェア vault)に本物の AES-256 KEK を作成し、それに対する安定した KMIP の Unique Identifier を生成します。
Couchbase で登録バンドルを適用する
返された手順に従って Couchbase Web Console 内で作業し、Couchbase を DuoKey KMIP サーバーに向け、クライアントの mTLS 識別情報をインストールします。
Encryption at Rest を有効にする
Couchbase でクラスター(またはバケットごと)に KEK を適用し、DEK が暗号化済みステータスを報告することを確認します。
登録バンドル
| フィールド | 目的 | |
|---|---|---|
kmip_host | kmip_port | Couchbase が接続すべき先 — Cockpit の KMIP サーバー(デフォルトポートは 5696)。 |
kmip_key_id | KEK の KMIP 上で可視の Unique Identifier。 | |
client_cert_alias | Couchbase が相互 TLS で認証に使用するクライアント識別情報。 |
1. Open the Couchbase Web Console
Security > Encryption at Rest > Add Encryption Key
2. Configure the key
Key Type: KMIP
Host / Port: <kmip-host> / 5696
KMIP key ID: <kmip-key-id>
Client certificate: install the <client-cert-alias> mTLS identity
Encryption approach: "Use KMIP Get & encrypt locally" or
"Use KMIP native Encrypt/Decrypt operation"
3. Apply the key
Cluster-wide: Security > Encryption at Rest > set the cluster default key
Per bucket: Buckets > <bucket> > Edit > Advanced bucket settings >
Encryption at Rest > select the keyこのアプリは、クラスターの登録状態、KEK がバインドされているかどうか、それを保持する vault に現在到達可能かどうかを報告するステータスチェックを提供します — Couchbase 側のトラブルシューティングに入る前に、KEK 側が正常であることを確認するのに役立ちます。
登録のシーケンス
ステップ 1〜2 は DuoKey Cockpit で行われ、ステップ 3〜5 はオペレーターが Couchbase 内でバンドルを適用する作業です。
キーローテーション
クラスターの KEK をローテーションすると、同じ vault 内に新しい AES-256 キーと新しい KMIP 識別子が、同じクライアント証明書の識別情報の下で作成されます — オペレーターは同じ登録手順に従って、Couchbase 側で新しい kmip_key_id を再適用します。
KMIP のキー ID を切り替えたら、Couchbase は新しい KEK の下で自身の DEK を再ラップする必要があります。Couchbase 側の手順については、Couchbase 自身の encryption-at-rest のキーローテーションのガイダンスに従ってください。