Workload-Identitätsföderation
Konfigurieren Sie die Workload-Identitätsföderation für Codex mit einem OIDC-Token oder SPIFFE JWT-SVID.
Mit der Workload-Identitätsföderation kann vertrauenswürdige Automatisierung Codex verwenden, ohne ein persönliches Zugriffstoken oder andere langlebige OpenAI-Anmeldedaten zu speichern. Ihre Workload legt ein kurzlebiges Identitätstoken eines von Ihnen bereits betriebenen Anbieters vor. OpenAI überprüft dieses Token und gibt ein kurzlebiges Zugriffstoken für einen Benutzer oder ein Dienstkonto in Ihrem verwalteten ChatGPT-Workspace zurück.
Verwenden Sie Workload-Identitäten für unbeaufsichtigte Codex-Prozesse auf Cloud-Plattformen, in Kubernetes, CI-Systemen und anderen Umgebungen, die OIDC-Token oder SPIFFE JWT-SVIDs ausstellen können. Informationen zum gemeinsamen Vertrauensmodell und zum separaten OpenAI API-Ablauf finden Sie in der Übersicht über Workload-Identitäten.
Voraussetzungen
Sie benötigen:
- Die Berechtigung zum Verwalten von Workload-Identitäten im OpenAI Admin Portal.
- Einen verwalteten ChatGPT-Workspace.
- Einen ChatGPT-Benutzer oder ein Dienstkonto, der beziehungsweise das aktives Mitglied dieses Workspace ist, oder die Berechtigung, während der Einrichtung eines zu erstellen.
- Ein OIDC-Token oder SPIFFE JWT-SVID, dessen Aussteller, Zielgruppe und identifizierende Ansprüche Ihnen bekannt sind.
- Eine Laufzeitumgebung, die dieses Token in einer geschützten Datei unter einem absoluten Pfad aktuell halten kann.
- Codex 0.148.0 oder höher.
- Eine wirksame Codex-Authentifizierungsrichtlinie, die die ChatGPT-Authentifizierung und den durch die Föderationsregel ausgewählten Workspace zulässt. Siehe Anmeldemethode oder Workspace erzwingen.
OpenAI erstellt beim Token-Austausch weder einen Prinzipal noch eine Workspace-Mitgliedschaft. Eine administrierende Person wählt den Prinzipal aus oder erstellt ihn, bevor die Workload eine Verbindung herstellt. Das Erstellen eines menschlichen Benutzers belegt einen Workspace-Arbeitsplatz und unterliegt den Mitgliedschaftsregeln dieses Workspace.
Verwenden Sie unter nativem Windows die elevated Windows-Sandbox. Andere Windows-Sandbox-Modi können die Identitätstoken-Datei nicht vor modellgesteuerten Befehlen schützen.
Identitätstoken abrufen
Ihre Workload-Laufzeitumgebung ruft das vorgelagerte Identitätstoken ab und aktualisiert es. Codex ruft weder Cloud-Metadatendienste noch Clientbibliotheken von Identitätsanbietern in Ihrem Namen auf.
| Laufzeitumgebung | Empfohlene Quelle der Token-Datei |
|---|---|
| Kubernetes, AKS, EKS oder GKE | Stellen Sie ein projiziertes Dienstkontotoken bereit und verweisen Sie Codex auf diese Datei. Die Plattform rotiert es. |
| Verwaltete Microsoft Entra-Identität | Führen Sie einen vertrauenswürdigen Hostprozess oder Sidecar aus, der ein Token von Azure IMDS anfordert und die Datei vor Ablauf ersetzt. |
| Ausgehende AWS-Identitätsföderation | Führen Sie einen vertrauenswürdigen Hostprozess aus, der regionales STS GetWebIdentityToken aufruft und die Datei vor Ablauf ersetzt. |
| Google Cloud | Führen Sie einen vertrauenswürdigen Hostprozess aus, der ein Identitätstoken vom Metadatenserver anfordert und die Datei vor Ablauf ersetzt. |
| Oracle Cloud Infrastructure | Führen Sie einen vertrauenswürdigen Hostprozess aus, der über einen Instanzprinzipal ein IDCS-Zugriffstoken anfordert und die Datei vor Ablauf ersetzt. |
| GitHub Actions | Fordern Sie das OIDC-Token des Jobs an, schreiben Sie es in eine geschützte Datei und fordern Sie vor einem späteren Austausch ein neues Token an. |
| SPIFFE | Verwenden Sie die SPIFFE Workload API oder ein genehmigtes Hilfsprogramm, um ein aktuelles JWT-SVID in die Datei zu schreiben. |
| Benutzerdefinierter OIDC-Anbieter | Verwenden Sie den Workload-Ablauf des Ausstellers, um ein JWT abzurufen, und aktualisieren Sie anschließend die geschützte Datei, bevor das JWT abläuft. |
Befolgen Sie die Anleitung für Ihren Anbieter, um die Token-Ausstellung zu konfigurieren und ein Beispieltoken zu prüfen:
Decodieren Sie ein Beispieltoken lokal und notieren Sie dessen iss, aud, sub und alle weiteren
Ansprüche, denen Sie vertrauen möchten. Durch das Decodieren wird die Signatur nicht überprüft. Fügen Sie kein
Produktionstoken in eine Website ein und schreiben Sie es nicht in Protokolle.
Workload verbinden
Eine administrierende Person erstellt den Anbieter und die Föderationsregel, bevor Codex gestartet wird.
- Öffnen Sie Workload identity im OpenAI Admin Portal und wählen Sie anschließend Connect workload aus.
- Verwenden Sie einen für Codex konfigurierten Anbieter erneut oder erstellen Sie einen. Anbietervoreinstellungen tragen gängige Einstellungen für GitHub Actions, Microsoft Entra ID, Google Cloud, AWS, Kubernetes, SPIFFE und benutzerdefinierte OIDC-Anbieter ein.
- Wählen Sie Codex und den verwalteten Workspace aus, den die Workload verwenden darf.
- Fügen Sie die engsten Bedingungen hinzu, die die Workload identifizieren. Gleichen Sie ein Subjekt, exakte Ansprüche, eine CEL-Bedingung oder eine Kombination davon ab. Fügen Sie akzeptierte Zielgruppen hinzu, um einzuschränken, welche Token die Regel akzeptiert. Jede konfigurierte Abgleichsbedingung muss erfüllt sein.
- Ordnen Sie die Regel einem vorhandenen ChatGPT-Benutzer oder Dienstkonto zu oder erstellen Sie während der Einrichtung eines.
- Prüfen Sie Anbieter, Bedingungen, Workspace, Prinzipal, Geltungsbereiche und Lebensdauer des Zugriffstokens. Wählen Sie Connect workload und anschließend Download config aus.
Die heruntergeladene Datei enthält eine nicht geheime Föderationsregel-ID und den Pfad, unter dem Codex das Identitätstoken liest. Sie enthält keine Anmeldedaten.
Verwenden Sie zur Automatisierung der Einrichtung die Workload-Identitäts-Admin- API. Informationen zum Verhalten von Abgleichsbedingungen und Beispiele finden Sie in der Referenz zu Föderationsregeln.
Codex-Prozess konfigurieren
Der Prozess, der Codex startet, benötigt diese beiden Workload-Identitätsvariablen:
export OPENAI_FEDERATION_RULE_ID="idpm_..."
export OPENAI_IDENTITY_TOKEN_FILE="/var/run/secrets/openai.com/identity-token"OPENAI_FEDERATION_RULE_ID ist nicht geheim. Die Token-Datei ist es. Verwenden Sie einen absoluten
Pfad in einem dedizierten Verzeichnis wie /var/run/secrets/openai.com, das dem
Workload-Konto gehört und den Modus 0700 verwendet. Nur vertrauenswürdige Hostprozesse sollten dort
schreiben. Halten Sie das Verzeichnis außerhalb von Repositorys und anderen Pfaden, die für
Codex-Tools verfügbar sind. Halten Sie Anmeldedaten aus Protokollen, Shell-Verläufen und Build-Artefakten heraus.
Audit-Zuordnung hinzufügen
Wenn Laufzeitinstanzen eine Föderationsregel gemeinsam verwenden, können Sie jede Instanz
in Audit-Ereignissen zur Token-Ausstellung identifizieren. Legen Sie die optionale Variable
OPENAI_WORKLOAD_IDENTITY_CONTEXT auf ein als Zeichenfolge codiertes JSON-Objekt fest:
export OPENAI_WORKLOAD_IDENTITY_CONTEXT='{
"instance_id": "runner-42",
"display_name": "payments-prod",
"labels": {
"environment": "production",
"region": "us-west-2"
}
}'Das Objekt erfordert instance_id. Es kann außerdem display_name und bis zu
acht Labels enthalten. Das codierte Objekt darf bis zu 1.024 Byte groß sein. instance_id und
display_name dürfen bis zu 128 Zeichen umfassen. Label-Schlüssel dürfen bis zu 64
Zeichen und Label-Werte bis zu 256 Zeichen umfassen.
Bezeichner müssen mit einem ASCII-Buchstaben oder einer Zahl beginnen. Werte können anschließend
Buchstaben, Zahlen, ., _, :, /, @ und - enthalten. Label-Schlüssel unterstützen Buchstaben,
Zahlen, ., _ und -.
OpenAI behandelt diesen Kontext als clientseitig gemeldete Audit-Zuordnung und nicht als verifizierte Workload-Identität. Er wirkt sich nicht auf Authentifizierung, Autorisierung, Regelabgleich, Geltungsbereiche, Ratenlimits, Widerruf, Funktionsfreigaben oder Metriken aus. Nehmen Sie darin keine Anmeldedaten, Geheimnisse, personenbezogenen Daten, Prompts, Modellausgaben oder andere Customer Content auf.
Für einen gültigen Kontext leitet OpenAI eine stabile Zuordnungs-ID ab, deren Geltungsbereich auf Mandant,
Anbieter, Föderationsregel und instance_id beschränkt ist. Für die Zuordnung enthält das Zugriffstoken
die ID, aber nicht den Kontext. Das Audit-Ereignis einer erfolgreichen Token-Ausstellung
enthält die ID und den normalisierten Kontext. Ein Kontext, der ein Limit überschreitet oder
gegen dieses Schema verstößt, führt dazu, dass der Austausch mit invalid_grant fehlschlägt.
Codex liest den Kontext beim Start des Prozesses und übergibt weder ihn noch die Regel- ID oder den Pfad der Token-Datei an modellgesteuerte Shells, Hooks oder MCP-Server. Starten Sie Codex nach einer Änderung des Kontexts neu.
Token-Datei schützen und rotieren
Fügen Sie bei verwalteten Bereitstellungen unter Linux, macOS und WSL das gesamte Token-Verzeichnis zu
permissions.filesystem.deny_read
in den verwalteten Anforderungen hinzu:
[permissions.filesystem]
deny_read = ["/var/run/secrets/openai.com"]Dadurch wird verhindert, dass modellgesteuerte Befehle das aktive Token oder eine temporäre Ersatzdatei lesen, während der Codex-Hostprozess das Token weiterhin für den Austausch verwenden kann. Verweigern Sie bei Volumes mit projizierten Token den Zugriff auf den gesamten Token-Mount und alle zugrunde liegenden oder aufgelösten Zielpfade außerhalb davon. Dateimodi und das Bereinigen von Umgebungsvariablen allein schützen Anmeldedaten nicht vor einem anderen Prozess, der als derselbe Benutzer ausgeführt wird. Verwenden Sie unter nativem Windows die oben beschriebene elevated-Sandbox.
Bei Token-Quellen, die keine Datei projizieren, lassen Sie einen vertrauenswürdigen Hostprozess jeden Ersatz innerhalb dieses geschützten Verzeichnisses schreiben und an die richtige Stelle umbenennen. Eine atomare Umbenennung verhindert, dass Codex ein unvollständiges Token liest. Passen Sie beispielsweise dieses hosteigene Aktualisierungsskript an den Token-Befehl Ihres Anbieters an. Stellen Sie das Verzeichnis bereit, bevor Sie das Skript ausführen:
set -eu
TOKEN_DIR="/var/run/secrets/openai.com"
TOKEN_FILE="$TOKEN_DIR/identity-token"
umask 077
TOKEN_TEMP="$(mktemp "$TOKEN_DIR/.identity-token.XXXXXX")"
trap 'rm -f -- "$TOKEN_TEMP"' EXIT
trap 'exit 1' HUP INT TERM
your-identity-provider-command > "$TOKEN_TEMP"
test -s "$TOKEN_TEMP"
mv -f -- "$TOKEN_TEMP" "$TOKEN_FILE"Führen Sie den Aktualisierungsprozess außerhalb jeder Shell und jedes Tools aus, die beziehungsweise das Codex steuern kann. Behalten Sie
die Leseverweigerung während der Aktualisierung und Bereinigung bei. Selbst wenn bei einem erzwungenen Abbruch
eine temporäre Datei zurückbleibt, muss diese innerhalb des gesperrten
Verzeichnisses verbleiben. Legen Sie keine Workload-Identitätseinstellungen in config.toml ab.
Verbindung überprüfen
Laden Sie die heruntergeladene Umgebung und prüfen Sie die ausgewählte Authentifizierungsmethode:
. ./workload-identity-idpm_example.env
codex login statusIn PowerShell:
$env:OPENAI_FEDERATION_RULE_ID = "idpm_..."
$env:OPENAI_IDENTITY_TOKEN_FILE = "C:\run\openai\identity-token"
codex login statusBei einer erfolgreichen Prüfung wird Logged in using workload identity ausgegeben. Dies bestätigt,
dass Codex über die konfigurierte Föderationsregel ein Token ausgetauscht hat. Der Befehl
gibt den aufgelösten Workspace, Prinzipal oder die Regel nicht aus. Bestätigen Sie diese Werte
im Admin Portal, bevor Sie die Workload starten. Meldet Codex eine andere
Authentifizierungsmethode, haben die beiden erforderlichen WIF-Variablen den Prozess nicht erreicht.
Wenn der Anbieter Prevent assertion replay verwendet und die Assertion einen jti-
Anspruch besitzt, verbraucht diese Prüfung dessen jti. Schreiben Sie vor dem Start eines weiteren Codex-Prozesses
eine neu ausgestellte Assertion mit einem neuen jti.
Führen Sie eine kleine Anfrage aus derselben Umgebung aus:
codex exec "Reply with only: workload identity is working"Codex tauscht das vorgelagerte Token aus und hält das OpenAI-Zugriffstoken im Arbeitsspeicher.
Es schreibt keine der beiden Anmeldedaten in auth.json, den Systemschlüsselbund oder
config.toml.
Token aktuell halten
Aktualisieren Sie die Identitätstoken-Datei, bevor das vorgelagerte Token abläuft. Codex liest die Datei erneut, wenn ein weiteres OpenAI-Zugriffstoken benötigt wird. Das OpenAI-Token läuft zum früheren Zeitpunkt aus dem Ablauf des vorgelagerten Tokens oder der Lebensdauer der Föderationsregel ab und ist niemals länger als eine Stunde gültig.
Wenn eine administrierende Person den Wiederholungsschutz aktiviert, muss jedes vorgelagerte JWT über ein
eindeutiges jti verfügen. Schreiben Sie vor jedem Austausch, einschließlich Aktualisierungen in einem lang laufenden Prozess,
eine neu ausgestellte Assertion mit einem neuen jti. Assertions ohne
jti erhalten keinen Wiederholungsschutz.
Codex verwendet innerhalb jedes Hostprozesses eine gemeinsame Austausch-Sitzung im Arbeitsspeicher. Gleichzeitige Anfragen in diesem Prozess verwenden ein gültiges OpenAI-Zugriffstoken erneut und führen beim Ablauf gemeinsam eine einzige Aktualisierung durch. Separate Prozesse führen separate Austausche durch und benötigen daher Assertions, deren Verwendung der Anbieter ihnen gestattet.
Rangfolge der Anmeldedaten
Die beiden erforderlichen Workload-Identitätsvariablen haben Vorrang vor allen anderen Quellen für Anmeldedaten:
- Wenn entweder
OPENAI_FEDERATION_RULE_IDoderOPENAI_IDENTITY_TOKEN_FILEvorhanden ist, wählt Codex die Workload-Identität aus. - Wenn nur eine der erforderlichen Variablen vorhanden ist, gibt Codex einen Fehler zurück. Es greift nicht auf einen API key, ein Zugriffstoken oder eine gespeicherte Anmeldung zurück.
OPENAI_WORKLOAD_IDENTITY_CONTEXTallein wählt keine Workload-Identität aus.- Wenn keine der erforderlichen WIF-Variablen vorhanden ist, wendet Codex die normalen
Anmeldedatenregeln für die jeweilige Oberfläche an. Bei Oberflächen, die die Authentifizierung per API key
zulassen, hat
CODEX_API_KEYincodex exec,codex review, dem TypeScript SDK undcodex exec-server --remoteVorrang. Andere Oberflächen könnenCODEX_ACCESS_TOKENoder eine gespeicherte Anmeldung verwenden.
Eine SDK-Option apiKey wird zu CODEX_API_KEY, WIF hat jedoch weiterhin Vorrang,
wenn eine der beiden erforderlichen WIF-Variablen vorhanden ist. Lassen Sie die Option bei der Verwendung von WIF weg, damit
die Workload keine ungenutzten langlebigen Anmeldedaten mitführt.
Um eine bestehende Workload ohne Ausfallzeit zu migrieren, konfigurieren Sie WIF, solange ihre aktuellen Anmeldedaten noch verfügbar sind. Starten Sie einen neuen Prozess mit beiden erforderlichen WIF- Variablen; WIF hat auch dann Vorrang, wenn die alten Anmeldedaten noch vorhanden sind. Nachdem die Workload erfolgreich mit WIF ausgeführt wurde, entfernen Sie die alten Anmeldedaten aus ihrer Laufzeitumgebung und dem Secret-Speicher und widerrufen Sie sie anschließend. Vor dem Widerruf können Sie ein Rollback durchführen, indem Sie beide erforderlichen WIF-Variablen entfernen und einen neuen Prozess starten.
Unterstützte Codex-Oberflächen
Konfigurieren Sie die Workload-Identität auf dem Computer, auf dem der Codex-Prozess ausgeführt wird.
| Oberfläche | Unterstützung und Hostgrenze |
|---|---|
Interaktives codex, resume und fork |
Unterstützt. Starten Sie die CLI in der konfigurierten Umgebung. |
codex exec, exec resume und codex review |
Unterstützt. Jede der erforderlichen WIF-Variablen bewirkt, dass WIF Vorrang erhält. |
| TypeScript SDK | Unterstützt. Der übergeordnete Prozess stellt die erforderlichen WIF-Variablen und optionalen Zuordnungskontext bereit. |
codex app-server |
Unterstützt. Konfigurieren Sie WIF auf dem App-Server-Host, nicht auf einem Remote-Client. |
codex exec-server --remote |
Für die Authentifizierung bei der Registrierung der Remote-Umgebung unterstützt. Konfigurieren Sie WIF auf dem Exec-Server-Host. |
| Lokale Exec-Server-Prozessvorgänge | Verwenden Sie keine WIF-Authentifizierung. Sie werden über das lokale Exec-Server-Protokoll ausgeführt. |
codex mcp-server |
Nicht unterstützt. |
Remote-App-Server- und Exec-Server-Clients senden das vorgelagerte Identitätstoken niemals über ihre Protokolle.
Zugriff ändern oder entfernen
Änderungen an Subjekten, Zielgruppen, Ansprüchen, CEL-Bedingungen, Geltungsbereichen oder der Token- Lebensdauer einer Regel gelten für neue Austausche. Ein vor der Änderung ausgestelltes Token kann bis zum Ende seiner Lebensdauer gültig bleiben.
Deaktivieren Sie einen Anbieter oder eine Regel, um den Zugriff sofort zu beenden. Die Deaktivierung blockiert neue Austausche und widerruft OpenAI-Zugriffstoken, die bereits über diese Ressource ausgestellt wurden. Die Archivierung hat dieselbe Auswirkung auf den Zugriff und kann nicht rückgängig gemacht werden. Eine Änderung des Anbieter- Vertrauens widerruft ebenfalls ausgestellte Token, bevor das neue Vertrauen wirksam wird.
Änderungen auditieren
Das Erstellen, Aktualisieren und Archivieren von Anbietern und Föderationsregeln erzeugt Audit- Ereignisse. Verwenden Sie die Anleitung zur Compliance API und zu Audit-Ereignissen, um die von Ihrem Workspace unterstützten Ereignisse zu exportieren. Korrelieren Sie sie mit den Ausstellungsprotokollen Ihres Identitätsanbieters und zeichnen Sie weder vorgelagerte Assertions noch OpenAI-Zugriffstoken in einem der Systeme auf.
Wenn der Prozess OPENAI_WORKLOAD_IDENTITY_CONTEXT bereitstellt, enthalten erfolgreiche
Audit-Ereignisse zur Token-Ausstellung außerdem die stabile Zuordnungs-ID und den oben beschriebenen
normalisierten Kontext.
Fehlerbehebung
| Symptom | Prüfung |
|---|---|
| Codex meldet eine unvollständige Workload-Identitätskonfiguration | Legen Sie beide erforderlichen Variablen im selben Prozess fest und verwenden Sie einen absoluten Pfad zur Token-Datei. |
| Codex meldet, dass seine Anmelderichtlinie keine Workload-Identität zulässt | Lassen Sie die ChatGPT-Authentifizierung in der wirksamen Richtlinie zu und nehmen Sie den Workspace der Regel in die zulässigen Workspaces auf. |
| Codex meldet andere Anmeldedaten | Laden Sie beide erforderlichen WIF-Variablen in den Codex-Prozess, starten Sie anschließend einen neuen Prozess und führen Sie codex login status erneut aus. |
| OpenAI lehnt den Workload-Kontext ab | Prüfen Sie JSON-Struktur, Größe, zulässige Zeichen und Feldlimits. Entfernen Sie sensible Daten oder Customer Content. |
| OpenAI lehnt das Token ab | Vergleichen Sie iss, aud, Ablaufzeit, Signaturschlüssel und Lebensdauer der Assertion mit der Anbieterkonfiguration. |
| Die Regel stimmt nicht überein | Stellen Sie sicher, dass der Client die vorgesehene Regel-ID verwendet und jede Subjekt-, Zielgruppen-, Exaktanspruchs- und CEL-Prüfung bestanden wird. |
| OpenAI lehnt den Prinzipal ab | Stellen Sie sicher, dass der Benutzer oder das Dienstkonto aktiv und aktives Mitglied des ausgewählten Workspace ist. |
| OpenAI lehnt eine wiederholte Assertion ab | Rufen Sie ein neues JWT mit einem neuen jti ab; versuchen Sie nicht erneut, dieselbe wiederholungsgeschützte Assertion zu verwenden. |
| Ein lang laufender Prozess aktualisiert nicht mehr | Stellen Sie sicher, dass der Host-Aktualisierungsprozess die Token-Datei weiterhin vor Ablauf ersetzt. |
Informationen zur Anbieterüberprüfung, zu Limits und CEL-Details finden Sie in der Referenz zu Föderationsregeln.