メインコンテンツまでスキップ
適用対象:
DuoKey Cockpit v2Double Key EncryptionMicrosoft Purview / MIP

DKE 365 API には 2 つのエンドポイントファミリー があります。マネジメント API(/api/dke/…)は Cockpit ユーザーセッションで認証され、Operations.Dke.* 権限によって制御され、DKE サービスのデプロイ・構成・運用を行います。公開 DKE プロトコル(/dke/…、/api プレフィックスなし)は、Microsoft Office がコンテンツの暗号化・復号のために呼び出すサーフェスです。

ファミリーベースパス認証目的
マネジメント API/api/dke/…Cockpit ユーザーセッション(JWT)、Operations.Dke.* 権限DKE サービスのデプロイ・構成・管理
公開 DKE プロトコル/dke/…(/api なし)GetKey は公開、Decrypt は Azure AD ベアラートークンを検証Microsoft 365 / Office が直接呼び出すエンドポイント

マネジメント API​

Cockpit ユーザーセッション(JWT)で認証されます。各ルートは、記載されている Operations.Dke.* 権限を必要とします。

メソッド + パス目的権限
GET /api/dke/servicesDKE サービスの一覧取得Operations.Dke.Read
POST /api/dke/services新しいサービスのデプロイOperations.Dke.Create
POST /api/dke/services/validate-keyキーが DKE 対応か(RSA-2048/4096)を検証Operations.Dke.Create
GET /api/dke/services/{id}サービスの取得Operations.Dke.Read
PUT /api/dke/services/{id}サービスの更新Operations.Dke.Update
DELETE /api/dke/services/{id}サービスの削除Operations.Dke.Delete
POST /api/dke/services/{id}/enable有効化(Azure AD アプリを自動プロビジョニング)Operations.Dke.Enable
POST /api/dke/services/{id}/disable無効化Operations.Dke.Disable
POST /api/dke/services/{id}/stop停止Operations.Dke.Disable
POST /api/dke/services/{id}/rotate-keyRSA キーのローテーション(重複期間あり)Operations.Dke.Update
GET /api/dke/services/{id}/healthサービスのヘルスOperations.Dke.Read
GET /api/dke/services/{id}/deploy-configクライアントデプロイ構成のダウンロードOperations.Dke.Read
GET /api/dke/services/{id}/onboardingDNS / CNAME オンボーディングガイダンスOperations.Dke.Read
POST /api/dke/provision-azure-appAzure AD アプリを単独でプロビジョニングOperations.Dke.Create
GET /api/dke/defaultsウィザードのデフォルト値(ベースドメイン、オーディエンスドメイン、デフォルト IdP)(認証のみ)
POST /api/dke/resolve-domain(s)B2B パートナードメインを有効な発行者に解決Operations.Dke.Read
注記

独立した「登録」エンドポイントはありません — 登録 = デプロイ → 有効化です。/api/dke/services/{id}/enable において、サービスに identity_provider_id があり、まだ Azure アプリがない場合、Cockpit v2 は Microsoft Graph を呼び出して Azure AD アプリ登録を作成し、生成された azure_client_id、azure_audience、azure_app_object_id を保存します。

デプロイリクエストの例​

POST /api/dke/servicesJSON

{
"name": "Contoso DKE",
"slug": "89c3b193-af16-4887-8031-43f88d475d9d",
"key_id": "<rsa-key-uuid>",
"key_name": "dke_key",
"azure_tenant_id": "<azure-tenant-guid>",
"azure_client_id": "<app-guid>",
"azure_audience": "https://89c3b193-af16-4887-8031-43f88d475d9d.duokey365.com",
"allowed_domains": ["partner.com"],
"algorithm": "RSA-OAEP-256",
"cache_duration_hours": 24,
"mtls_enabled": false,
"allow_anonymous": false,
"access_policy_id": "<policy-uuid>",
"identity_provider_id": "<idp-uuid>"
}

公開プロトコル​

Microsoft Office が直接呼び出すエンドポイントで、/api プレフィックスなしで提供されます。サービスは slug(GUID)で特定されます。GetKey は公開です — 誰でも公開された公開鍵を取得できます。Decrypt は Azure AD ベアラートークンを検証します(さらにサービスに紐づいたアクセスポリシーを適用します)。その後アンラップを行います。

メソッド + パス名前認証目的
GET /dke/{slug}/versionVersion公開プロトコル/サービスバージョンの確認
GET /dke/{slug}/{key_id}GetKey公開コンテンツの暗号化に使用する公開 RSA JWK を返す
POST /dke/{slug}/{key_id}/decryptDecryptAzure AD ベアラートークンVault が保持する秘密鍵を使用してラップされたキーをアンラップ
注記

kid による旧来の名前指定バリアントの GetKey と Decrypt も提供されており、キーは key_id ではなく key_name によって特定されます。これは、Office がキャッシュしている可能性のある kid URL に一致させるためです。公開される kid はサービスの完全な URL であり、https://{slug}.{base-domain}/dke/{slug}/{key_name}/{key_id} です。

注意

ステータスが Running のサービスのみが復号リクエストを処理します。Decrypt は slug によってサービスを解決し、実効キー(現行キー、またはローテーションの重複期間中は 1 つ前のキー)を選択し、任意で mTLS 検証を行い、Azure AD JWT を検証し、紐づいたアクセスポリシーを適用したうえで、Vault アダプターを使用して RSA-OAEP 復号を行います。秘密鍵が Vault の外に出ることはありません。

プロトコルの詳細​

公開される JWK の特殊仕様​

GetKey が返す公開鍵は標準的な RSA JWK ですが、Microsoft の DKE 特有の仕様に従います — クライアント(および再実装を行う場合)は、正確に次の点を考慮する必要があります。

フィールド値/エンコーディング
nRSA モジュラス。標準 Base64(base64url ではない)でエンコード
e公開指数を整数として表記(例: 65537)。base64url 文字列ではない
algRS256
kidサービスキーの完全な URL

Decrypt のリクエスト/レスポンスボディ​

Decrypt エンドポイントは、ラップされたキーを受け取り、アンラップされたキーを返します。値は Base64 です。

POST /dke/{slug}/{key_id}/decrypt — requestJSON

{
"alg": "RSA-OAEP-256",
"value": "<base64 ciphertext>"
}
ResponseJSON

{
"value": "<base64 plaintext>"
}

各復号リクエストは、暗号ティアの下でクライアント IP ごとにレート制限されます(1000 リクエスト/分)。

関連: Oracle TDE PKCS#11 プロキシ​

Oracle Transparent Data Encryption 向けに、DuoKey は独立した PKCS#11 プロキシエンドポイント POST /api/apps/{app_id}/tde/pkcs11/{access_guid} を公開しており、URL に埋め込まれた access_guid ベアラートークンのみで認証されます。詳細は Oracle TDE 統合ガイドを参照してください。