DuoKey Azure EKM Proxy
DuoKey vault に保持された鍵を使って、Azure Managed HSM に顧客管理鍵のラップとアンラップを行わせます
Azure EKM とは
Azure の外部キーマネージャー(EKM)プロトコルを使用すると、鍵暗号化鍵(KEK)を Azure 内に保存する代わりに、Azure Managed HSM がデータ暗号化鍵(DEK)のラップとアンラップを、お客様が運用する鍵マネージャーに委任できます。Managed HSM 上の顧客管理鍵で構成された Azure サービス — Azure SQL Database の Transparent Data Encryption(TDE)や列レベル暗号化など — は、DEK を保護または復元する必要があるたびに EKM エンドポイントを呼び出します。
DuoKey Cockpit はこのプロトコル(API バージョン 0.1-preview)を組み込みアプリとして実装しています。DuoKey が EKM プロキシとして動作し、KEK が DuoKey vault の外に出ることはありません。
Azure はラップ/アンラップのたびに mTLS で終端された Cockpit エンドポイントを呼び出します。KEK 自体がテナント vault の外に出ることはありません。
ラップ / アンラップ
Azure は、お客様の KEK でラップまたはアンラップする DEK を送信します。KEK 自体が Azure に公開されることはありません
相互 TLS
すべてのリクエストは、お客様が設定した CA にチェーンする必要があるクライアント証明書で認証されます
アルゴリズムの選択
AES-256 鍵には AES Key Wrap(パディングあり/なし)、RSA 鍵には RSA-OAEP-256 を使用できます
セルフテストとヘルスチェック
組み込みのラップ/アンラップ往復テストと、エンドポイントの構造化されたヘルスチェック
Cockpit の Apps モデルへの適合
DuoKey の他の統合と同様に、Azure EKM プロキシは Cockpit の Apps カタログからデプロイされる App です。別途インストールするものはありません。他のアプリや鍵を管理するのと同じインターフェースから EKM エンドポイントをデプロイでき、エンドポイントはデプロイ時に選択した単一の vault と鍵にバインドされます。
サポートされるアルゴリズム
| アルゴリズム | 鍵タイプ | 説明 |
|---|---|---|
A256KW | AES-256 | AES Key Wrap(RFC 3394) |
A256KWP | AES-256 | パディング付き AES Key Wrap(RFC 5649)— 任意長の平文向け |
RSA-OAEP-256 | RSA-2048 / RSA-4096 | SHA-256 を使用する RSA-OAEP |
AES アルゴリズムの場合、ラップ/アンラップは vault から取得した生の KEK を使用して実行されます。RSA-OAEP-256 の場合は代わりに vault アダプターに処理が委任されるため、HSM で保護された RSA 秘密鍵が vault の外に出ることはありません。
動作の仕組み
Azure が DEK の保護または復元を必要とする
Azure Managed HSM(または Azure SQL TDE のように Managed HSM の顧客管理鍵で構成された Azure サービス)が、新しい DEK をラップする、あるいは以前ラップした DEK をアンラップする必要が生じます。
Azure が mTLS 経由で EKM プロキシを呼び出す
Azure はすべてのリクエストでクライアント証明書を提示します。エンドポイントで相互 TLS が必須になっている場合(既定)、DuoKey は証明書が設定済みのクライアント CA にチェーンすることを検証し、期待する Subject CN をピン留めしている場合は証明書の CN がそれと一致することも検証します。
DuoKey がエンドポイントの鍵を解決する
推測不可能なエンドポイントパス(そのスラッグ)は、エンドポイントのデプロイ時に選択した vault と鍵 — つまり鍵暗号化鍵 — に解決されます。
KEK に対してラップまたはアンラップが実行される
A256KW/A256KWP の場合、処理は vault から取得した KEK の生の鍵マテリアルに対して実行されます。RSA-OAEP-256 の場合は vault に委任されるため、秘密鍵が vault の外に出ることはありません。
結果が Azure に返される
ラップ(またはアンラップ)された鍵のバイト列が、同じ mTLS 接続を通じて Azure に返されます。鍵で監査ログが有効になっている場合、その操作は DuoKey の監査証跡に記録されます。
デプロイ時に作成されるエンドポイント
Azure EKM アプリをデプロイすると、自動生成されたスラッグで識別されるエンドポイントが 1 つ、/azureekm/<slug> の配下に作成されます。
| 操作 | パス | 目的 |
|---|---|---|
| プロキシ情報 | POST /azureekm/{slug}/info | プロキシの識別情報を返します。Azure がエンドポイントを検出するために使用します |
| 鍵メタデータ | POST /azureekm/{slug}/{key_name}/metadata | 鍵のタイプ、サイズ、サポートされる操作(および RSA 鍵の場合は公開モジュラスと指数)を返します |
| ラップ | POST /azureekm/{slug}/{key_name}/wrapkey | KEK で DEK を暗号化します |
| アンラップ | POST /azureekm/{slug}/{key_name}/unwrapkey | 以前ラップされた DEK を復号します |
| ヘルス | GET /azureekm/{slug}/health | 監視用のシンプルなヘルスチェック |
これらのエンドポイントは、ユーザーセッションや JWT ではなく、相互 TLS と推測不可能なスラッグによって Azure を認証します。スラッグはエンドポイントのデプロイ時に生成されるもので、資格情報として扱う必要があります。
主な機能
相互 TLS
クライアント CA の検証と、特定の Managed HSM ID に対する任意の Subject CN ピン留め
AES と RSA のアルゴリズム
A256KW、A256KWP、RSA-OAEP-256 — エンドポイントごとに許可するアルゴリズムを制限できます
vault で保護された KEK
鍵が DuoKey vault の外に出ることはありません。RSA 秘密鍵はラップ/アンラップ中も外に出ません
セルフテスト
ワンクリックのラップ/アンラップ往復テスト — AES-256 の KEK では実際の鍵に対して実行され、それ以外では合成的な疎通確認として実行されます。エンドポイントのヘルスチェックは RSA でも実際の鍵を使用します
構造化されたヘルスチェック
デプロイ状況、鍵の可用性、ラップ/アンラップ、mTLS 設定を 1 回の呼び出しで検証します
監査ログ
鍵で監査ログが有効になっている場合、ラップとアンラップの操作が記録されます
ユースケース
Azure SQL TDE
Azure Managed HSM の外部でお客様が管理する KEK により、SQL Database の Transparent Data Encryption 鍵を保護します。
列レベル暗号化
Managed HSM の CMK 上に構築された Always Encrypted / 列レベル暗号化のシナリオでも、外部に保持された同じ KEK を使用します。
鍵の主権
暗号化されたデータの管理は Azure に任せたまま、鍵暗号化鍵をお客様自身の管理下に維持します。
即時の失効
DuoKey でエンドポイントまたは鍵を無効にすると、Azure はただちにラップとアンラップを実行できなくなります。
前提条件
前提条件
- 顧客管理鍵/外部キーマネージャー向けに構成された Azure Managed HSM(またはそれをバックエンドとする Azure サービス)
- EKM 接続用の Azure のクライアント証明書を発行するクライアント CA 証明書
- AES-256 鍵(A256KW/A256KWP 用)または RSA-2048/4096 鍵(RSA-OAEP-256 用)を含む DuoKey vault
- Apps を管理する権限を持つ DuoKey Cockpit の管理者アクセス