OpenAI EKM
クラウド KMS の鍵を OpenAI Enterprise Key Management の外部キーとして登録・管理する
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 の役割は登録までで終わります。その後の 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 KMS | OpenAI の EKM IAM ロールがお客様の KEK に対して kms:Encrypt / kms:Decrypt を呼び出すことを許可するキーポリシーステートメント。条件は sts:ExternalId によってお客様の OpenAI 組織 ID に固定されます。 |
| Azure Key Vault | OpenAI のアプリケーション ID から作成したサービスプリンシパルに、<org-id>--<name> という名前の RSA 鍵に対して直接 Key Vault Crypto User ロールを付与します。 |
| Google Cloud KMS | OpenAI の 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 を変更する権限