メインコンテンツまでスキップ
適用対象:
DuoKey Cockpit v2KMIP サーバーエンドポイント

KMIP とは何か​

Key Management Interoperability Protocol(KMIP) は、暗号機能を備えたアプリケーション(データベース、ストレージシステム、バックアップアプライアンス)が、中央の鍵マネージャーとどのように通信するかを定義する OASIS 標準です。KMIP は鍵のライフサイクル全体(作成、取得、有効化、失効、破棄)を標準化するため、単一の鍵マネージャーがカスタム統合を必要とせずに多くの異なる製品にサービスを提供できます。

DuoKey が KMIP を実装する方法​

DuoKey Cockpit v2 は KMIP サーバーエンドポイント を実行します。準拠クライアントは TLS 経由でこれに接続し、KMIP 操作を発行します。DuoKey は鍵素材を生成して保護し、エンドポイントポリシーに従って返却します(または暗号化/復号を実行します)。

KMIP clientsdatabases · backupstorage · appsTTLV / TLSport 5696DuoKey KMIP serverOASIS KMIP 2.x — no SDKKeysvault / HSM custody
Standard KMIP clients consume keys directly over the wire — no DuoKey SDK — while the key material stays in the vault or HSM.
単一世代

KMIP サーバーは Cockpit v2(Rust/React)の機能であり、PKI サービスエンドポイントとしてプロビジョニングされます。これは Cockpit v1(.NET/Angular)の構成モデルとは無関係です。

プロトコルサポート​

CapabilityDetails
KMIP バージョン2.1、2.0、1.4、1.3、1.2、1.1、1.0 をネゴシエートします。デフォルトで通知されるプロファイルは KMIP 2.1 です。
トランスポートTLS 上のバイナリ TTLV、および JSON-over-HTTPS プロファイル。
デフォルト TLS ポート5696(IANA が割り当てた KMIP ポート)。
エンコーディング正規の KMIP 2.x 属性。1.x の TemplateAttribute リクエストは受信時に正規化され、2.0 より前のクライアント向けに送信時に適応されます。

サポートされる操作​

エンドポイントは次の KMIP 操作をディスパッチします。

OperationPurpose
Create新しい管理対象鍵を生成します。
Registerクライアントが提供した鍵素材をインポートします。
Get鍵オブジェクトを取得します。
GetAttributesオブジェクトの属性を読み取ります。
GetAttributeListオブジェクト上の属性名を一覧表示します。
Locate属性フィルターに一致するオブジェクトを検索します。
Activate鍵をアクティブ状態に移行します。
Revoke鍵を失効させます(標準的な無効化の手順)。
Destroy鍵素材を恒久的に削除します。
NaNサーバー側の暗号操作。
ReKey新しい識別子の下で鍵を新しい素材にロールします。
Checkオブジェクトの使用制約を検証します。
Queryサーバー機能を検出します。
DiscoverVersionsKMIP プロトコルバージョンをネゴシエートします。
未実装

非対称鍵の生成および署名操作 — CreateKeyPair、DeriveKey、Certify、Sign、MAC、および属性変更操作 — はサポートされておらず、OperationNotSupported の結果を返します。エンドポイントポリシーにより、デプロイメントごとに許可される操作をさらに制限できます。

オブジェクトとアルゴリズム​

ItemSupport
管理対象オブジェクトタイプ共通鍵、公開鍵、秘密鍵、証明書、およびシークレットデータ。
鍵生成共通鍵素材のみ: AES(128 / 192 / 256 ビット、デフォルト 256)および HMAC(256 ビット以上)。
サーバー側暗号Encrypt / Decrypt には AES-256-GCM を使用し、自己完結型の nonce ‖ ciphertext ‖ tag ブロブを返します。
共通鍵の生成

DuoKey は 共通鍵 素材(AES、HMAC)を生成して保存します。非対称オブジェクトタイプおよび証明書はオブジェクトとして登録・管理できますが、サーバー自体が RSA または EC 鍵ペアを生成することはありません。

鍵の保護方法​

生成された鍵素材は、プラットフォーム暗号鍵の下で AES-256-GCM により 保存時に暗号化 されます。これは vault 資格情報や ID プロバイダーのシークレットに使用されるのと同じエンベロープであり、DuoKey データベースに保存されます。鍵は再起動後も存続し、プロセスメモリ内にのみ存在することはありません。Destroy は保存された素材をハード削除します。

位置付け

KMIP では、鍵は MPC ではなく、プラットフォーム鍵の下でのエンベロープ暗号化によって保護されます。MPC ベースの鍵保護は、ここで説明する KMIP サーバーバックエンドではなく、他の DuoKey 鍵管理フローに適用されます。

クライアント認証​

クライアント認証は オプションの相互 TLS(mTLS) です。提示されたクライアント証明書の CommonName が監査対象のクライアント ID になります。エンドポイントごとのポリシー(allowed_auth_methods、require_client_cert)が、どの方式を受け入れるかを決定します。

MethodHow it works
mTLSクライアントが X.509 証明書を提示します。その CommonName が ID になります。
メッセージ内の資格情報リクエストヘッダーに含まれる KMIP のユーザー名/パスワード資格情報。
匿名エンドポイントポリシーが明示的に許可する場合にのみ許可されます。

mTLS の ID を信頼するには、リスナーを信頼できるクライアント CA の PEM バンドルに向けます。

検証済み mTLS を強制するBASH
# PEM bundle of trusted client-CA certificates
KMIP_CLIENT_CA_BUNDLE=/etc/duokey/kmip/client-ca-bundle.pem
本番環境では CA バンドルが必須

クライアント CA バンドルが構成されていない場合、提示されたクライアント証明書は CA 検証なしで受け入れられ、その ID を認可のために信頼してはなりません。本番環境ではリスナーは フェイルクローズ し、バンドルが設定されるまで起動を拒否します。

クライアント互換性​

任意の OASIS KMIP 1.x または 2.x クライアントが、ポート 5696 のバイナリ TLS トランスポート経由で接続できます。相互運用性は PyKMIP リファレンスクライアントを使用してエンドツーエンドで検証されています(Query → Create → Activate → Get → Encrypt/Decrypt → Locate → Revoke → Destroy)。

KMIP ベースの暗号化の統合対象には次のものが含まれます。

Percona Server

MongoDB および MySQL の保存データ暗号化。

VMware vSphere

vSphere および vSAN の標準キープロバイダー。

NetApp ONTAP

ストレージ暗号化のための外部鍵マネージャー。

プロビジョニング​

KMIP サーバーエンドポイントは、DuoKey Cockpit の PKI → KMIP Server から作成します。ウィザードは、エンドポイント名、キー vault、許可される認証方式、トランスポート(バイナリ TLS または JSON/HTTPS)と TLS ポート、デフォルトのアルゴリズムと鍵サイズ、許可されるオブジェクトタイプと操作、監査設定を収集し、エンドポイントをデプロイして起動します。