服務帳號
在 ChatGPT 工作區中設定和管理用於 Codex 自動化的服務帳號
服務帳號讓你無需依賴員工帳號,即可在整個組織內執行和擴充套件無頭 Codex 工作流程。每個持續整合 (CI) 執行器、計劃作業或共享整合都有自己的 ChatGPT 工作區身份,並具備與人員帳號相同的群組、角色、存取控制和可審計性。
只有工作區所有者和管理員可以建立服務帳號。他們可以允許其他人員或群組管理帳號、設定外掛或建立存取令牌。
服務帳號代表非人員工作區身份。個人存取令牌代表建立該令牌的工作區成員。API Platform 專案服務帳號和 API key 使用獨立的專案存取權限和計費方式。
建立並設定服務帳號
此互動式演練以 GitHub 為例:建立帳號、設定外掛、建立令牌,以及分配群組和角色。
建立工作區所有的身份
選擇加號按鈕,為服務帳號命名,然後選擇建立。
設定帳號的外掛
開啟外掛,選擇新增外掛,選擇 GitHub,並確認已為此帳號啟用該外掛。
建立限定範圍的存取令牌
為令牌命名,確認 Codex 範圍,選擇到期時間,然後將令牌儲存在金鑰管理器中。
分配群組和角色
將服務帳號新增到所需的工作區群組,然後使用使用者、設定者或管理者角色與人員或群組共享管理權限。
- 在工作區設定中開啟服務帳號。
- 選擇加號 (+) 按鈕並輸入描述性名稱,例如
release-automation。 - 選擇建立。
連線外掛
為服務帳號本身設定外掛。它不會繼承建立者的外掛或已連線應用。
- 開啟帳號的外掛部分,然後選擇新增外掛。
- 選擇一個外掛,並確認其顯示為已設定或已啟用。
設定者和管理者角色可以設定外掛。使用者角色不可以。
建立存取令牌
從服務帳號的詳情頁面建立令牌。該令牌代表服務帳號,而非建立令牌的人員。
- 開啟帳號,然後在存取令牌中選擇建立令牌。
- 為令牌命名,確認 Codex 範圍,然後選擇到期時間。
- 選擇建立,並將令牌儲存在金鑰管理器中。
完整令牌只會顯示一次。工作區策略控制可用的到期時間。
分配角色和群組
服務帳號可以像人員工作區成員一樣獲得工作區角色並加入群組。請直接分配其存取權限;它不會繼承建立者的權限。
要允許人員或群組管理該帳號,請選擇共享,然後選擇新增人員或群組並分配角色:
| 共享帳號角色 | 設定帳號及其外掛 | 建立服務帳號存取令牌 |
|---|---|---|
| 使用者 | 否 | 是 |
| 設定者 | 是 | 否 |
| 管理者 | 是 | 是 |
這些角色適用於管理帳號的人員。它們與分配給服務帳號的工作區角色和群組相互獨立。
設定者和管理者可以啟用或停用帳號。只有工作區所有者和管理員可以建立、刪除或共享帳號。操作人員需登入自己的 ChatGPT 帳號來管理共享帳號。
要進一步瞭解工作區權限,請參閱角色和工作區權限。
無需登入即可執行 Codex
服務帳號存取令牌要求 Codex CLI 版本為 0.142.0 或更高版本。設定 CODEX_ACCESS_TOKEN,然後無需開啟瀏覽器即可執行 Codex:
export CODEX_ACCESS_TOKEN="<service-account-access-token>"
codex exec --json "Inspect this repository and summarize its current state."在 CI 中,請通過金鑰管理器或執行器金鑰提供令牌。
要在受信任的計算機上儲存登入資訊,請通過標準輸入傳入令牌:
printf '%s' "$CODEX_ACCESS_TOKEN" | codex login --with-access-token
codex exec "Summarize the changes in the current branch."這會將憑據儲存在本機。在共享或臨時執行器上,請使用 CODEX_ACCESS_TOKEN,不要儲存登入資訊。
使用 SCIM 預配服務帳號
如果你的工作區支援通過跨域身份管理系統 (SCIM) 協議預配服務帳號,請在身份供應商中將 userType 設定為 ServiceAccount:
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"userName": "svc-codex-release@company.example",
"displayName": "Codex release automation",
"active": true,
"userType": "ServiceAccount"
}將該身份分配給工作區及所需群組,然後進行同步。身份供應商負責管理帳號名稱、群組成員資格和生命週期。由 SCIM 管理的帳號無法在 ChatGPT 中重新命名或刪除。請參閱群組和預配。
使用 Admin API 管理服務帳號
如果你的工作區有權使用此功能,請使用 ChatGPT Admin API key 管理帳號、令牌和共享。讀取操作需要 chatgpt.enterprise.service_account.read;更改操作需要 chatgpt.enterprise.service_account.write。服務帳號令牌無法對 Admin API 請求進行身份驗證。
請檢視 Admin API 參考,瞭解可用操作和當前請求路徑。
帳號
| 操作 | 方法 | 作用 |
|---|---|---|
| 列出帳號 | GET |
傳回工作區服務帳號 |
| 建立帳號 | POST |
建立命名的服務帳號 |
| 取得帳號 | GET |
傳回一個服務帳號 |
| 啟用或停用帳號 | PATCH |
更新帳號的 enabled 值 |
| 刪除帳號 | DELETE |
移除帳號並吊銷其令牌 |
使用 POST /v1/manage/workspaces/{workspace_id}/service-accounts 建立帳號。帳號更新只會更改 enabled。
令牌
| 操作 | 方法 | 作用 |
|---|---|---|
| 列出令牌 | GET |
傳回帳號的令牌後設資料 |
| 建立令牌 | POST |
建立限定範圍的存取令牌 |
| 吊銷令牌 | DELETE |
永久吊銷一個令牌 |
例如,建立一個 30 天后到期的 Codex 令牌:
{
"name": "production-release-runner",
"ttl": 2592000,
"scopes": ["chatgpt.workspace.feature.allow-codex-local-access.access"]
}ttl 是令牌的有效期(以秒為單位)。有限有效期必須短於一年,並符合工作區的到期策略。完整的 access_token 只會在建立令牌時傳回。
Admin API 還可以列出、新增、更新和移除共享帳號存取權限。其角色值為 manager、configurer 和 user;configurer 在 ChatGPT 中顯示為設定者。
保護和管理服務帳號
- 僅授予工作流程所需的角色、群組、外掛和連線。
- 將令牌儲存在金鑰管理器中,並使用受信任的執行器。
- 不要在日誌、聊天訊息和源程式碼控制中包含憑據。
- 設定有限的到期時間,並定期檢查帳號存取權限和活動。
- 輪換令牌時,請建立替代令牌、更新工作流程、驗證存取權限,然後在工作區或 Admin API 中吊銷舊令牌。
- 立即吊銷已洩露的令牌,並調查帳號近期的活動。
- 在工作區或 Admin API 中停用或刪除未使用的帳號。這兩種操作都會弔銷所有有效令牌。停用的帳號可以重新啟用並建立新令牌;刪除操作無法撤銷。
執行操作會歸因於該服務帳號。可用的工作區分析和審計記錄還可以識別由誰建立了令牌或更改了帳號設定。請在 Admin API 參考中確認事件覆蓋範圍。