できること
外部 ID でトークン取得
ワークロードが外部で発行された ID トークンを提示し、短期間有効な OpenAI アクセストークンと交換できます。長期間有効な API キーを保存する必要はありません。
X.509 証明書で認証
OpenAI API のワークロードは、組織の既存の Mutual TLS の設定で検証されたクライアント証明書の ID を、X.509 workload identity federation で交換できます。
マッピングで権限を限定
サービスアカウントのマッピングで、どの外部 ID が OpenAI のサービスアカウント用のアクセストークンを発行できるかを定めます。マッピングの権限は、発行されるトークンのアクセスをさらに絞るためのもので、対応するサービスアカウントの範囲を超えることはできません。
機能解説
概要
ワークロードは自社の ID プロバイダーが発行した短期間有効なトークンを提示し、OpenAI がそれを短期間有効な OpenAI アクセストークンと交換します。OpenAI API のワークロードは、X.509 workload identity federation を通じて、検証済みの証明書の ID を交換することもできます。
仕組みの概要
ワークロードは自社の ID プロバイダーが発行した短期間有効なトークンを提示し、OpenAI はそれを短期間有効な OpenAI アクセストークンと交換します。
- 受け付けるトークンは、文書化された構成での OIDC 互換の JWT のサブジェクトトークンで、SPIFFE JWT-SVID も含みます。
- トークン交換は refresh token を返しません。更新するときは、有効な外部 ID トークンまたはクライアント証明書を使って交換をやり直します。
- Codex で使う場合は、ワークロードを API Platform のサービスアカウントではなく、管理されたワークスペース内の ChatGPT ユーザーまたはサービスアカウントに対応付けます。
OIDC プロバイダーとマッピングの設定
OIDC の Workload Identity Provider では、トークンの検証方法と属性の扱いを設定します。
- アップロードした JWKS による検証を有効にすると、OpenAI は OIDC discovery から鍵を取得する代わりに、アップロードされた JWKS でトークンを検証します。カスタムの OIDC discovery とアップロードした JWKS は、同時には使えません。
- トークンの
kidがキャッシュ済みの JWKS に見つからない場合、OpenAI は JWKS を更新して再度照合し、それでも見つからないときにトークンを拒否します。 - 属性の変換には Common Expression Language (CEL) を使い、トークンのクレームからマッピングの判定に使うカスタムの
openai.*属性を導き出せます。
サービスアカウントのマッピングについては、次の決まりがあります。
- 文字列の値には、空でない接頭辞の後ろに 1 つだけワイルドカードを付けられます (例:
repo:example/*)。ワイルドカードだけの値や、値の途中のワイルドカードは使えません。 - マッピングに Admin API のスコープは含められません。また、通常の API の認可もそのまま適用されます。
- OpenAI がトークンを発行するのは、設定したすべての属性に一致する有効なマッピングがちょうど 1 つの場合だけです。有効なマッピングが 2 つ以上一致した場合、交換は拒否されます。
X.509 プロバイダー
X.509 プロバイダーは、クライアント証明書からワークロードの ID 属性を導き出します。証明書は、組織の既存の Mutual TLS の設定に照らして OpenAI が検証します。証明書を保存したり、別の trust store を管理したりはしません。
設定の流れは次のとおりです。
- プロバイダーを作成する前に、Organization Settings (組織の設定) > Security (セキュリティ) > Mutual TLS で、クライアント証明書の基点となる信頼済み証明書を設定し、有効にします。
- X.509 プロバイダーを作成し、空でない
openai.subjectの値を 1 つ導き出して、その ID を、ワークロードに必要な権限だけを持つプロジェクトのサービスアカウントに対応付けます。 - ワークロードは証明書を X.509 のトークンエンドポイントに提示して短期間有効な bearer token を取得し、その bearer token と受け入れられたクライアント証明書を API の mTLS エンドポイントに送ります。
証明書と X.509 の ID プロバイダーは Platform コンソールで直接設定でき、その操作は組織のロールと権限で制御されます。
管理者・導入時に確認したい点
- トークン交換によって、プリンシパル、プロジェクト、ワークスペースのメンバーシップが作られることはありません。これらは、管理者が設定時に作成または選択します。
- 証明書と X.509 の ID プロバイダーの設定操作は、組織のロールと権限で制御されます。
- 対象プランについては、公式のリリースノートには記載がありません。
使い方
ここでは、OpenAI API で OIDC のプロバイダーを設定する流れを示します。
- Organization Settings (組織の設定) > Security (セキュリティ) > Workload Identity Provider (ワークロード ID プロバイダー) を開きます。
- 先にプロバイダーを作成し、そのあとプロバイダーの詳細ページからサービスアカウントのマッピングを設定します。
- ID プロバイダーごとのガイドにある SDK の例を使うか、トークン交換のエンドポイントを直接呼び出して、ワークロードを接続します。
利用シーン
長期間有効な API キーをワークロード側に保存せずに OpenAI API を呼び出したい場面に向いています。
OIDC 互換の ID プロバイダーや SPIFFE をすでに運用している環境から、その ID を使って OpenAI API を呼び出す場面に使えます。
組織で Mutual TLS を設定済みの環境で、クライアント証明書の ID によってワークロードを認証する場面に向いています。
ワークロードごとに、必要な権限だけを持つサービスアカウントを割り当てて API を使わせる場面に使えます。
Claude・Anthropic の対応する機能
比較の単位となる業務: 長期 API キーを使わない外部 ID によるワークロード認証
Anthropic の Claude API にも Workload Identity Federation があり、長期間有効な静的 API キーの代わりに、自社の ID プロバイダーが発行する短期間有効な OIDC トークンでワークロードを認証します。発行元 (issuer) と連携ルールは Claude Console で設定し、トークンの交換と更新は SDK が自動で行います。
OpenAI API の Workload identity federation では、OIDC 互換の JWT のサブジェクトトークンに加えて、X.509 workload identity federation で検証済みの証明書の ID も交換できます。mTLS と X.509 によるワークロード ID 連携は、OpenAI API で一般提供になっています。トークン交換は refresh token を返さず、更新するときは有効な外部 ID トークンまたはクライアント証明書で交換をやり直します。
これまでの変更
相互 TLS (mTLS) と X.509 によるワークロード ID 連携が OpenAI API で一般提供になりました。証明書と X.509 の ID プロバイダーは Platform コンソールで直接設定できます。
ワークロード ID 連携がリリースされました。信頼されたワークロードは、外部で発行された ID トークンを短期間有効な OpenAI アクセストークンと交換でき、長期間有効な API キーを保存する必要はありません。