İş yükü kimliği federasyonu
Codex için iş yükü kimliği federasyonunu bir OIDC belirteci veya SPIFFE JWT-SVID ile yapılandırın.
İş yükü kimliği federasyonu, güvenilir otomasyonun kişisel erişim belirteci veya başka bir uzun ömürlü OpenAI kimlik bilgisi saklamadan Codex'i kullanmasını sağlar. İş yükünüz, hâlihazırda işlettiğiniz bir sağlayıcıdan kısa ömürlü bir kimlik belirteci sunar. OpenAI bu belirteci doğrular ve yönetilen ChatGPT çalışma alanınızdaki bir kullanıcı veya hizmet hesabı için kısa ömürlü bir erişim belirteci döndürür.
İş yükü kimliğini bulut platformları, Kubernetes, CI sistemleri ve OIDC belirteçleri veya SPIFFE JWT-SVID'leri verebilen diğer ortamlardaki gözetimsiz Codex işlemleri için kullanın. Paylaşılan güven modeli ve ayrı OpenAI API akışı için iş yükü kimliğine genel bakış bölümüne bakın.
Başlamadan önce
Şunlara ihtiyacınız vardır:
- OpenAI Admin Portal'da iş yükü kimliğini yönetme izni.
- Yönetilen bir ChatGPT çalışma alanı.
- Bu çalışma alanının etkin üyesi olan bir ChatGPT kullanıcısı veya hizmet hesabı ya da kurulum sırasında bir tane oluşturma izni.
- Verenini, hedef kitlesini ve tanımlayıcı taleplerini bildiğiniz bir OIDC belirteci veya SPIFFE JWT-SVID.
- Bu belirteci mutlak bir yoldaki korumalı dosyada güncel tutabilen bir çalışma zamanı.
- Codex 0.148.0 veya sonraki bir sürüm.
- ChatGPT kimlik doğrulamasına ve federasyon kuralının seçtiği çalışma alanına izin veren geçerli bir Codex kimlik doğrulama politikası. Oturum açma yöntemini veya çalışma alanını zorunlu kılma bölümüne bakın.
OpenAI, belirteç değişimi sırasında bir sorumlu veya çalışma alanı üyeliği oluşturmaz. İş yükü bağlanmadan önce bir yönetici sorumluyu seçer veya oluşturur. İnsan kullanıcı oluşturmak bir çalışma alanı lisansı tüketir ve ilgili çalışma alanının üyelik kurallarına tabidir.
Yerel Windows'ta elevated Windows sandbox kullanın. Diğer Windows korumalı alan modları, kimlik belirteci dosyasını modelin denetlediği komutlardan koruyamaz.
Kimlik belirteci edinin
İş yükünüzün çalışma zamanı, üst kimlik belirtecini alır ve yeniler. Codex sizin yerinizde bulut meta veri hizmetlerini veya kimlik sağlayıcısı istemci kitaplıklarını çağırmaz.
| Çalışma zamanı | Önerilen belirteç dosyası kaynağı |
|---|---|
| Kubernetes, AKS, EKS veya GKE | Yansıtılmış bir hizmet hesabı belirtecini bağlayın ve Codex'i bu dosyaya yönlendirin. Platform bunu döndürür. |
| Microsoft Entra yönetilen kimliği | Azure IMDS'den belirteç isteyen ve süresi dolmadan dosyayı değiştiren güvenilir bir ana makine işlemi veya yardımcı kapsayıcı çalıştırın. |
| AWS giden kimlik federasyonu | Bölgesel STS GetWebIdentityToken çağrısı yapan ve süresi dolmadan dosyayı değiştiren güvenilir bir ana makine işlemi çalıştırın. |
| Google Cloud | Meta veri sunucusundan kimlik belirteci isteyen ve süresi dolmadan dosyayı değiştiren güvenilir bir ana makine işlemi çalıştırın. |
| Oracle Cloud Infrastructure | IDCS erişim belirteci istemek için bulut sunucusu sorumlusu kullanan ve süresi dolmadan dosyayı değiştiren güvenilir bir ana makine işlemi çalıştırın. |
| GitHub Actions | İşin OIDC belirtecini isteyin, korumalı bir dosyaya yazın ve sonraki bir değişimden önce yeni bir belirteç isteyin. |
| SPIFFE | Dosyaya güncel bir JWT-SVID yazmak için SPIFFE Workload API veya onaylanmış bir yardımcı kullanın. |
| Özel OIDC sağlayıcısı | JWT almak için verenin iş yükü akışını kullanın, ardından JWT'nin süresi dolmadan korumalı dosyayı yenileyin. |
Belirteç verilmesini yapılandırmak ve örnek bir belirteci incelemek için sağlayıcınızın kılavuzunu izleyin:
Örnek bir belirteci yerel olarak çözün ve iss, aud, sub ile güvenmeyi
planladığınız diğer talepleri kaydedin. Çözme işlemi imzayı doğrulamaz. Üretim
belirtecini bir web sitesine yapıştırmayın veya günlüklere yazmayın.
İş yükünü bağlayın
Bir yönetici, Codex'i başlatmadan önce sağlayıcıyı ve federasyon kuralını oluşturur.
- OpenAI Admin Portal'da Workload identity sayfasını açın, ardından Connect workload seçeneğini belirleyin.
- Codex için yapılandırılmış bir sağlayıcıyı yeniden kullanın veya yeni bir tane oluşturun. Sağlayıcı ön ayarları GitHub Actions, Microsoft Entra ID, Google Cloud, AWS, Kubernetes, SPIFFE ve özel OIDC sağlayıcıları için yaygın ayarları doldurur.
- Codex seçeneğini ve iş yükünün kullanabileceği yönetilen çalışma alanını seçin.
- İş yükünü tanımlayan mümkün olan en dar koşulları ekleyin. Bir konuyu, kesin talepleri, CEL koşulunu veya bunların birleşimini eşleştirin. Kuralın kabul ettiği belirteçleri kısıtlamak için kabul edilen hedef kitleleri ekleyin. Yapılandırılan her eşleştirici geçmelidir.
- Kuralı mevcut bir ChatGPT kullanıcısı veya hizmet hesabıyla eşleyin ya da kurulum sırasında bir tane oluşturun.
- Sağlayıcıyı, koşulları, çalışma alanını, sorumluyu, kapsamları ve erişim belirteci ömrünü inceleyin. Connect workload, ardından Download config seçeneğini belirleyin.
İndirilen dosya, gizli olmayan bir federasyon kuralı kimliği ve Codex'in kimlik belirtecini okuyacağı yolu içerir. Herhangi bir kimlik bilgisi içermez.
Kurulumu otomatikleştirmek için iş yükü kimliği Admin API kullanın. Eşleştirici davranışı ve örnekler için Federasyon kuralı referansı bölümüne bakın.
Codex işlemini yapılandırın
Codex'i başlatan işlem şu iki iş yükü kimliği değişkenini gerektirir:
export OPENAI_FEDERATION_RULE_ID="idpm_..."
export OPENAI_IDENTITY_TOKEN_FILE="/var/run/secrets/openai.com/identity-token"OPENAI_FEDERATION_RULE_ID gizli değildir. Belirteç dosyası gizlidir. İş yükü hesabının
sahip olduğu ve 0700 modunu kullanan /var/run/secrets/openai.com gibi özel
bir dizinde mutlak yol kullanın. Buraya yalnızca güvenilir ana makine işlemleri yazmalıdır.
Dizini depoların ve Codex araçlarının erişebildiği diğer yolların dışında tutun.
Kimlik bilgilerini günlüklerden, kabuk geçmişinden ve derleme yapıtlarından uzak tutun.
Denetim ilişkilendirmesi ekleyin
Çalışma zamanı örnekleri bir federasyon kuralını paylaştığında, belirteç verme
denetim olaylarında her örneği tanımlayabilirsiniz. İsteğe bağlı
OPENAI_WORKLOAD_IDENTITY_CONTEXT değişkenini dize olarak kodlanmış bir JSON nesnesine
ayarlayın:
export OPENAI_WORKLOAD_IDENTITY_CONTEXT='{
"instance_id": "runner-42",
"display_name": "payments-prod",
"labels": {
"environment": "production",
"region": "us-west-2"
}
}'Nesne instance_id gerektirir. Ayrıca display_name ve en fazla
sekiz etiket içerebilir. Kodlanmış nesne en fazla 1.024 bayt olabilir. instance_id ve
display_name en fazla 128 karakter olabilir. Etiket anahtarları en fazla 64
karakter, etiket değerleri ise en fazla 256 karakter olabilir.
Tanımlayıcılar bir ASCII harfi veya rakamıyla başlamalıdır. Değerler daha sonra
harf, rakam, ., _, :, /, @ ve - içerebilir. Etiket anahtarları harfleri,
rakamları, ., _ ve - destekler.
OpenAI bu bağlamı doğrulanmış iş yükü kimliği olarak değil, istemci tarafından bildirilen denetim ilişkilendirmesi olarak değerlendirir. Kimlik doğrulamasını, yetkilendirmeyi, kural eşleştirmesini, kapsamları, hız sınırlarını, iptali, özellik kapılarını veya ölçümleri etkilemez. Buraya kimlik bilgileri, gizli değerler, kişisel veriler, istemler, model çıktısı veya başka Müşteri İçeriği koymayın.
Geçerli bağlam için OpenAI; kiracı, sağlayıcı, federasyon kuralı ve instance_id ile
sınırlandırılmış kararlı bir ilişkilendirme kimliği türetir. İlişkilendirme amacıyla erişim belirteci
kimliği içerir ancak bağlamı içermez. Başarılı belirteç verme denetim olayı
kimliği ve normalleştirilmiş bağlamı içerir. Sınırı aşan veya bu şemayı
ihlal eden bağlam, değişimin invalid_grant ile başarısız olmasına neden olur.
Codex, işlem başladığında bağlamı okur ve bunu, kural kimliğini veya belirteç dosyası yolunu modelin denetlediği kabuklara, kancalara ya da MCP sunucularına iletmez. Bağlamı değiştirdikten sonra Codex'i yeniden başlatın.
Belirteç dosyasını koruyun ve döndürün
Yönetilen Linux, macOS ve WSL dağıtımlarında belirteç dizininin tamamını yönetilen
gereksinimlerde permissions.filesystem.deny_read
içine ekleyin:
[permissions.filesystem]
deny_read = ["/var/run/secrets/openai.com"]Bu işlem, Codex ana makine işlemi değişim için belirteci kullanmaya devam edebilirken modelin denetlediği komutların etkin belirteci veya geçici bir yedeği okumasını engeller. Yansıtılmış belirteç birimlerinde, belirteç bağlama noktasının tamamını ve bunun dışındaki tüm destekleyici veya çözümlenmiş hedef yolları reddedin. Yalnızca dosya modları ve ortam değişkenlerinin temizlenmesi, kimlik bilgilerini aynı kullanıcı olarak çalışan başka bir işlemden korumaz. Yerel Windows'ta yukarıda açıklanan elevated sandbox'ı kullanın.
Dosya yansıtmayan belirteç kaynaklarında, güvenilir bir ana makine işleminin her yedeği bu korumalı dizine yazmasını ve yerine yeniden adlandırmasını sağlayın. Atomik yeniden adlandırma, Codex'in kısmi bir belirteci okumasını önler. Örneğin bu ana makineye ait yenileme betiğini sağlayıcınızın belirteç komutuna uyarlayın. Betiği çalıştırmadan önce dizini sağlayın:
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"Yenileme işlemini Codex'in denetleyebileceği herhangi bir kabuk veya aracın dışında çalıştırın. Yenileme
ve temizlik sırasında okuma reddini yürürlükte tutun. Zorunlu durdurma geçici
bir dosya bıraksa bile bu dosya reddedilen dizinin içinde kalmalıdır. İş yükü
kimliği ayarlarını config.toml içine koymayın.
Bağlantıyı doğrulayın
İndirilen ortamı yükleyin ve seçilen kimlik doğrulama yöntemini inceleyin:
. ./workload-identity-idpm_example.env
codex login statusPowerShell'de:
$env:OPENAI_FEDERATION_RULE_ID = "idpm_..."
$env:OPENAI_IDENTITY_TOKEN_FILE = "C:\run\openai\identity-token"
codex login statusBaşarılı bir denetim Logged in using workload identity yazdırır. Bu, Codex'in
yapılandırılan federasyon kuralı üzerinden bir belirteç değiştirdiğini doğrular. Komut
çözümlenen çalışma alanını, sorumluyu veya kuralı yazdırmaz. İş yükünü başlatmadan
önce bu değerleri Admin Portal'da doğrulayın. Codex başka bir
kimlik doğrulama yöntemi bildiriyorsa gerekli iki WIF değişkeni işleme ulaşmamıştır.
Sağlayıcı Prevent assertion replay kullanıyorsa ve bildirimin bir jti
talebi varsa bu denetim, ilgili jti değerini tüketir. Başka bir Codex işlemini
başlatmadan önce yeni bir jti içeren, yeni verilmiş bir bildirim yazın.
Aynı ortamdan küçük bir istek çalıştırın:
codex exec "Reply with only: workload identity is working"Codex üst belirteci değiştirir ve OpenAI erişim belirtecini bellekte tutar.
İki kimlik bilgisini de auth.json, sistem anahtarlığı veya
config.toml içine yazmaz.
Belirteci güncel tutun
Üst belirtecin süresi dolmadan kimlik belirteci dosyasını yenileyin. Codex başka bir OpenAI erişim belirtecine ihtiyaç duyduğunda dosyayı yeniden okur. OpenAI belirtecinin süresi, üst belirtecin sona erme zamanı ile federasyon kuralının ömründen hangisi daha erkense o zaman dolar ve hiçbir zaman bir saatten uzun sürmez.
Bir yönetici yeniden oynatma korumasını açtığında her üst JWT'nin benzersiz bir
jti değeri olmalıdır. Uzun süre çalışan bir işlemdeki yenilemeler dâhil her
değişimden önce yeni bir jti içeren, yeni verilmiş bir bildirim yazın. jti
içermeyen bildirimlere yeniden oynatma koruması uygulanmaz.
Codex, her ana makine işlemi içinde tek bir bellek içi değişim oturumu paylaşır. Bu işlemdeki eşzamanlı istekler geçerli bir OpenAI erişim belirtecini yeniden kullanır ve süresi dolduğunda tek bir yenilemeyi paylaşır. Ayrı işlemler ayrı değişimler gerçekleştirir; dolayısıyla sağlayıcının kullanmalarına izin verdiği bildirimlere ihtiyaç duyarlar.
Kimlik bilgisi önceliği
Gerekli iki iş yükü kimliği değişkeni, diğer tüm kimlik bilgisi kaynaklarından önceliklidir:
OPENAI_FEDERATION_RULE_IDveyaOPENAI_IDENTITY_TOKEN_FILEdeğerlerinden biri mevcutsa Codex iş yükü kimliğini seçer.- Gerekli değişkenlerden yalnızca biri mevcutsa Codex hata döndürür. Bir API key, erişim belirteci veya saklanan oturum açma bilgisine geri dönmez.
- Tek başına
OPENAI_WORKLOAD_IDENTITY_CONTEXTiş yükü kimliğini seçmez. - Gerekli WIF değişkenlerinin ikisi de mevcut değilse Codex, ilgili yüzey için normal
kimlik bilgisi kurallarını uygular. API key kimlik doğrulamasına izin veren yüzeylerde
CODEX_API_KEY;codex exec,codex review, TypeScript SDK vecodex exec-server --remoteüzerinde önceliklidir. Diğer yüzeylerCODEX_ACCESS_TOKENveya saklanan bir oturum açma bilgisi kullanabilir.
Bir SDK apiKey seçeneği CODEX_API_KEY olur ancak gerekli WIF değişkenlerinden
biri mevcut olduğunda WIF yine önceliklidir. İş yükünün kullanılmayan uzun ömürlü bir
kimlik bilgisi taşımaması için WIF kullanırken seçeneği atlayın.
Mevcut bir iş yükünü kesinti olmadan taşımak için geçerli kimlik bilgisi hâlâ kullanılabilirken WIF'i yapılandırın. Gerekli iki WIF değişkeniyle yeni bir işlem başlatın; eski kimlik bilgisi hâlâ mevcut olsa bile WIF öncelikli olur. İş yükü WIF ile başarıyla çalıştıktan sonra eski kimlik bilgisini çalışma zamanından ve gizli değer deposundan kaldırın, ardından iptal edin. İptalden önce gerekli iki WIF değişkenini de kaldırıp yeni bir işlem başlatarak geri dönebilirsiniz.
Desteklenen Codex yüzeyleri
İş yükü kimliğini Codex işleminin sahibi olan makinede yapılandırın.
| Yüzey | Destek ve ana makine sınırı |
|---|---|
Etkileşimli codex, resume ve fork |
Desteklenir. CLI'ı yapılandırılmış ortamda başlatın. |
codex exec, exec resume ve codex review |
Desteklenir. Gerekli WIF değişkenlerinden biri WIF'in öncelikli olmasını sağlar. |
| TypeScript SDK | Desteklenir. Üst işlem, gerekli WIF değişkenlerini ve isteğe bağlı ilişkilendirme bağlamını sağlar. |
codex app-server |
Desteklenir. WIF'i uzak istemcide değil, app-server ana makinesinde yapılandırın. |
codex exec-server --remote |
Uzak ortam kayıt defterinde kimlik doğrulaması için desteklenir. WIF'i exec-server ana makinesinde yapılandırın. |
| Yerel exec-server işlem operasyonları | WIF kimlik doğrulamasını kullanmayın. Bunlar yerel exec-server protokolü üzerinden çalışır. |
codex mcp-server |
Desteklenmez. |
Uzak app-server ve exec-server istemcileri, üst kimlik belirtecini protokolleri üzerinden hiçbir zaman göndermez.
Erişimi değiştirin veya kaldırın
Bir kuralın konularında, hedef kitlelerinde, taleplerinde, CEL koşulunda, kapsamlarında veya belirteç ömründe yapılan değişiklikler yeni değişimlere uygulanır. Değişiklikten önce verilen bir belirteç, ömrü sona erene kadar geçerli kalabilir.
Erişimi hemen durdurmak için bir sağlayıcıyı veya kuralı devre dışı bırakın. Devre dışı bırakma yeni değişimleri engeller ve ilgili kaynak üzerinden daha önce verilmiş OpenAI erişim belirteçlerini iptal eder. Arşivleme aynı erişim etkisine sahiptir ve geri alınamaz. Sağlayıcı güvenini değiştirmek de yeni güven yürürlüğe girmeden önce verilmiş belirteçleri iptal eder.
Değişiklikleri denetleyin
Sağlayıcı ve federasyon kuralı oluşturma, güncelleme ve arşivleme işlemleri denetim olayları oluşturur. Çalışma alanınızın desteklediği olayları dışa aktarmak için Compliance API ve denetim olayı yönergelerini kullanın. Bunları kimlik sağlayıcınızın verme günlükleriyle ilişkilendirin ve iki sistemde de üst bildirimleri veya OpenAI erişim belirteçlerini kaydetmeyin.
İşlem OPENAI_WORKLOAD_IDENTITY_CONTEXT sağladığında başarılı
belirteç verme denetim olayları, yukarıda açıklanan kararlı ilişkilendirme kimliğini ve
normalleştirilmiş bağlamı da içerir.
Sorun giderme
| Belirti | Denetim |
|---|---|
| Codex eksik iş yükü kimliği yapılandırması bildiriyor | Gerekli iki değişkeni aynı işlemde ayarlayın ve mutlak bir belirteç dosyası yolu kullanın. |
| Codex, oturum açma politikasının iş yükü kimliğine izin vermediğini bildiriyor | Geçerli politikada ChatGPT kimlik doğrulamasına izin verin ve kuralın çalışma alanını izin verilen çalışma alanlarına ekleyin. |
| Codex başka bir kimlik bilgisi bildiriyor | Gerekli iki WIF değişkenini de Codex işlemine yükleyin, ardından yeni bir işlem başlatıp codex login status komutunu yeniden çalıştırın. |
| OpenAI iş yükü bağlamını reddediyor | JSON yapısını, boyutunu, izin verilen karakterleri ve alan sınırlarını denetleyin. Hassas içeriği veya Müşteri İçeriğini kaldırın. |
| OpenAI belirteci reddediyor | iss, aud, sona erme zamanı, imza anahtarı ve bildirim ömrünü sağlayıcı yapılandırmasıyla karşılaştırın. |
| Kural eşleşmiyor | İstemcinin amaçlanan kural kimliğini kullandığını ve her konu, hedef kitle, kesin talep ve CEL denetiminin geçtiğini doğrulayın. |
| OpenAI sorumluyu reddediyor | Kullanıcının veya hizmet hesabının etkin olduğunu ve seçilen çalışma alanının etkin bir üyesi olduğunu doğrulayın. |
| OpenAI yinelenen bir bildirimi reddediyor | Yeni bir jti içeren yeni bir JWT alın; yeniden oynatma korumalı aynı bildirimi tekrar denemeyin. |
| Uzun süre çalışan bir işlem yenilemeyi durduruyor | Ana makine yenileme işleminin, belirteç dosyasını süresi dolmadan değiştirmeye devam ettiğini doğrulayın. |
Sağlayıcı doğrulaması, sınırlar ve CEL ayrıntıları için federasyon kuralı referansına bakın.