メインコンテンツまでスキップ
適用対象:
OpenAI Enterprise 組織OpenAI Enterprise Key Management (EKM)AWS KMS、Azure Key Vault、Google Cloud KMS

OpenAI EKM とは​

OpenAI の Enterprise Key Management(EKM) 機能を使用すると、OpenAI 組織のデータを顧客が管理する鍵で暗号化できます。お客様は自身のクラウド KMS — AWS KMS、Azure Key Vault、または Google Cloud KMS — に鍵暗号化鍵(KEK)を作成し、OpenAI のサービスプリンシパルにその使用権限を付与したうえで、OpenAI の Management API を通じて鍵の座標情報を OpenAI に登録します。それ以降、OpenAI は自身のデータ暗号化鍵(DEK)をお客様の KEK でラップし、暗号化または復号が必要になるたびにお客様のクラウド KMS を直接呼び出します。

DuoKey OpenAI EKM は、この登録作業をお客様に代わって取りまとめる Cockpit アプリです。OpenAI 組織ごとに 1 つのアプリをデプロイし、組織の Admin API キーを安全に保管し、クラウドごとの権限付与手順をガイドし、KEK を OpenAI に登録し、登録が有効なままかどうかを随時再検証できるようにします。

これはラップ/アンラップのプロキシではなく登録フローです

DuoKey の他の BYOK/EKM 統合とは異なり、OpenAI EKM はデータパス上に位置しません。DuoKey が OpenAI のデータ暗号化鍵をラップまたはアンラップすることはありません。OpenAI の Management API は、登録された KEK を使用するためにお客様のクラウド KMS を直接呼び出します。DuoKey の役割は、鍵の座標情報を OpenAI に登録し、登録の状態を追跡し、要求に応じて検証することに限られます。KEK のマテリアルは常にお客様のクラウド KMS に留まり、DuoKey を経由することはありません。

登録とランタイムアクセスの違い
登録 — DuoKey を通じた一度きりの作業
DuoKey CockpitOpenAI 組織の Admin API キーを保持します
KEK の座標情報を送信
OpenAI Management API外部キー ID を割り当て、権限付与を追跡します
これ以降、OpenAI はこの組織で当該 KEK を信頼します
ランタイム — DuoKey はこのパス上に一切存在しません
OpenAI自身のデータ暗号化鍵をラップ/アンラップします
Encrypt / Decrypt — 直接呼び出し
お客様のクラウド KMSAWS KMS · Azure Key Vault · Google Cloud KMSKEK のマテリアルがお客様のアカウントの外に出ることはありません

DuoKey の役割は登録までで終わります。その後の OpenAI のデータ暗号化鍵のラップ/アンラップは、すべて OpenAI からお客様のクラウド KMS への直接呼び出しであり、DuoKey がランタイムのパス上に入ることはありません。

マルチクラウドの KEK に対応

AWS KMS、Azure Key Vault、Google Cloud KMS のいずれかでホストされている KEK を登録できます。

ガイド付きの権限付与設定

プロバイダーごとの設定手順(IAM ポリシー、サービスプリンシパル、Workload Identity Federation)により、正しい権限付与を一度で適用できます。

登録状況の追跡

登録済みの各鍵には、draft、registered、error、revoked のいずれかのライフサイクルステータスがあります。

オンデマンド検証

鍵がまだ登録されていて失効していないことを、いつでも OpenAI に対して再確認できます。

Cockpit v2 の Apps モデルへの適合​

OpenAI EKM は、他の Cockpit v2 アプリと同様に Apps カタログからデプロイします。デプロイすると OpenAI 組織ごとに 1 つのアプリが作成され、次の情報を保持します。

設定項目目的
アプリ名と説明Cockpit の UI 上でアプリを識別します。
OpenAI 組織 IDこのアプリが外部キーを管理する対象となる org-… の ID。
組織の Admin API キー保存時にテナントのシークレットバックエンドによってシールされ、OpenAI の Management API をサーバー側から呼び出すために使用されます。一度保存すると API から返されることはありません。
API ベース URL既定では公開の OpenAI API を使用します。公開ホストへの HTTPS URL のみが受け付けられます。

登録された各外部キーはアプリの子レコードであり、プロバイダー(AWS、Azure、または GCP)、KEK の非機密の座標情報、DuoKey vault 内の参照鍵への任意のリンク(お客様自身のトレーサビリティ用であり、DuoKey がこの鍵を暗号処理に使用することはありません)、および鍵の現在のステータスを保持します。

主な操作​

操作内容
外部キーの登録お客様の KEK の座標情報を、組織の外部キーとして OpenAI の Management API に送信します。成功すると OpenAI が外部キー ID を返します。拒否された場合、鍵は理由とともにエラー状態でローカルに保持されるため、権限付与を修正して再試行できます。
鍵の検証鍵の外部キー ID が組織の鍵リストにまだ存在するかどうかを OpenAI に対して再確認し、それに応じてステータス(registered / revoked / error)を更新します。
鍵の一覧 / ステータスサマリー登録済みのすべての鍵とそのステータス、およびアプリごとのステータス別件数を表示します。
設定手順選択したプロバイダー(AWS、Azure、または GCP)の権限付与手順を、組織 ID を埋め込んだ状態で返します。
接続テスト保存されている Admin API キーで OpenAI の Management API 上の外部キーを一覧できることを確認します。
Admin API キーのローテーション / 設定の更新既存の鍵登録を失うことなく、組織 ID、API ベース URL の更新、または Admin API キーの差し替えを行います。
鍵の登録解除OpenAI からのベストエフォートでの削除を行い、その後ローカルのレコードを削除します。

プロバイダーごとの権限付与設定​

OpenAI(かつお客様の組織にスコープされた OpenAI のみ)がお客様の KEK を使用できるようにするため、クラウドプロバイダーごとに異なる権限付与が必要です。

プロバイダー付与する内容
AWS KMSOpenAI の EKM IAM ロールがお客様の KEK に対して kms:Encrypt / kms:Decrypt を呼び出すことを許可するキーポリシーステートメント。条件は sts:ExternalId によってお客様の OpenAI 組織 ID に固定されます。
Azure Key VaultOpenAI のアプリケーション ID から作成したサービスプリンシパルに、<org-id>--<name> という名前の RSA 鍵に対して直接 Key Vault Crypto User ロールを付与します。
Google Cloud KMSOpenAI の ID トークンを信頼する Workload Identity Federation のプールとプロバイダー(オーディエンスはお客様の OpenAI 組織 ID に設定)を作成し、お客様の KEK に対して roles/cloudkms.cryptoKeyEncrypterDecrypter を付与します。

アプリの設定手順画面では、選択したプロバイダー向けの正確なポリシーステートメントまたはロール割り当て手順が、お客様の組織 ID を差し込んだ状態で生成されます。

アクセスの取り消し

OpenAI はお客様のクラウド KMS を直接呼び出すため、お客様が作成した権限付与を取り消すこと(IAM 権限、ロール割り当て、または WIF バインディングの削除)が、OpenAI による鍵の使用を実際に遮断する手段となります。これは DuoKey 側の状態とは無関係です。OpenAI 自身の EKM 設計によれば、権限付与を取り消すと約 1 時間以内に OpenAI のアクセスが停止します。

前提条件​

前提条件

  • EKM が利用可能な OpenAI Enterprise 組織
  • platform.openai.com(Settings → Organization → Admin keys)から取得した組織の Admin API キー
  • AWS KMS、Azure Key Vault、または Google Cloud KMS に作成済みの KEK(または作成できること)
  • そのクラウドアカウントで IAM ポリシー / ロール割り当て / Workload Identity Federation を変更する権限

はじめに​

ベンダードキュメント​