DuoKey SDK レイヤー
DuoKey SDK レイヤー は、DuoKey Cockpit とのすべての通信を処理します。各 PKCS#11 操作を HTTPS 経由で Cockpit に運び、認証トークンを付加し、リトライと接続の再利用を処理します。
API リファレンス: 具体的なワイヤープロトコル(エンドポイントとリクエスト/レスポンス形式)は内部仕様であり、開発者ドキュメント で別途文書化されています。このページは、このレイヤーの責務を高レベルで示すものです。
概要
責務
認証
DuoKey Cockpit への認証には、単一の access_guid ベアラートークン を使用します。このトークンは、Oracle TDE アプリ向けに構成された Cockpit プロキシ URL の一部であり、すべてのリクエストに Authorization: Bearer … ヘッダーとして送信されます。
OAuth2 クライアントクレデンシャルフローはなく、client_id / client_secret もなく、ユーザー名/パスワードもなく、クライアント側のテナントヘッダーもありません。Cockpit は、URL に埋め込まれたアプリ識別情報からテナントをサーバー側で解決します。
認証フロー:
構成: トークンは pkcs11.toml(または DKE_PKCS11_ACCESS_TOKEN による上書き)から提供されます。構成 を参照してください。
HTTPS クライアント
DuoKey Cockpit プロキシエンドポイントにリクエストを送信します。各 PKCS#11 操作は単一のリクエストとなり、ベアラートークンとともに送信されます。レスポンスは PKCS#11 の結果に解析されて戻されます。概念レベルでは、操作は 2 つのグループに分かれます。
- キー管理 — マスターキーのプロビジョニング、キー情報の参照。
- ラップ/アンラップ — マスターキーによるテーブルおよび表領域キーのラップとアンラップ。
リクエスト/レスポンスの処理
このレイヤーは、送信リクエストをシリアライズし、ヘッダーとベアラートークンを付加し、HTTPS 経由で送信し、レスポンスを解析します。
エラー処理: このレイヤーは、Cockpit およびトランスポートのエラーを適切な PKCS#11 リターンコードに変換します。これにより、Oracle TDE には標準的な Cryptoki の結果が見えます。たとえば、認証の失敗は認証エラーとして、オブジェクトの欠落は無効なハンドルエラーとして、バックエンドまたはネットワークの失敗はデバイスエラーとして現れます。
リトライロジック
一時的な失敗は、指数バックオフでリトライされます。
リトライ可能: ネットワークタイムアウト、503 Service Unavailable、502 Bad Gateway、接続エラー。
リトライ不可: 401 Unauthorized(認証)、404 Not Found(オブジェクトの欠落)、400 Bad Request(無効なパラメーター)。
構成: リクエストごとのタイムアウトは、pkcs11.toml 内の timeout_secs(デフォルト 30 秒)で設定されます。構成 を参照してください。
接続の再利用
- キープアライブ: HTTPS 接続はリクエスト間で再利用され、TCP/TLS ハンドシェイクの繰り返しを回避します。
- TLS: すべての接続で、厳格な証明書検証を伴う TLS 1.2 以上を使用します(
verify_tlsで制御されます)。
エラー処理
Cockpit は失敗時に構造化されたエラーを返します。SDK レイヤーはそれを解析し、PKCS#11 リターンコードにマッピングします。
セキュリティに関する考慮事項
TLS
- 最小バージョン: TLS 1.2 以上
- 証明書の検証: 厳格。本番環境では
verify_tls = true - 暗号スイート: 強力なスイートのみ
認証情報の処理
- 単一の認証情報:
access_guidベアラートークンが、クライアント側の唯一のシークレットです。 - ロギングなし: トークンが決してログに記録されることはありません。
- 実行時に提供:
pkcs11.tomlまたはDKE_PKCS11_ACCESS_TOKEN環境変数による上書きを通じて提供されます。ファイルは制限的な権限で保護してください。
次のステップ
- オブジェクトハンドルマッピング → - ハンドルがキー識別子にどのようにマッピングされるかを理解する
- 通信フロー → - エンドツーエンドの通信パターンを見る
- 構成 → - pkcs11.toml 構成について学ぶ