サービスアカウント
ChatGPT ワークスペースで Codex の自動化に使用するサービスアカウントを設定、管理します
サービスアカウントを使用すると、従業員のアカウントに依存することなく、組織全体でヘッドレス Codex ワークフローを実行し、拡張できます。継続的インテグレーション(CI)ランナー、スケジュールされたジョブ、共有インテグレーションのそれぞれに専用の ChatGPT ワークスペース ID が割り当てられ、ユーザーと同様のグループ、ロール、アクセス制御、監査可能性が適用されます。
サービスアカウントを作成できるのは、ワークスペースの所有者と管理者のみです。他のユーザーまたはグループに、アカウントの管理、プラグインの設定、アクセストークンの作成を許可できます。
サービスアカウントは、人間以外のワークスペース ID を表します。パーソナルアクセストークンは、それを作成したワークスペースメンバーを表します。API Platform プロジェクトのサービスアカウントと API key では、別のプロジェクトアクセスと課金が使用されます。
サービスアカウントを作成して設定する
このインタラクティブなチュートリアルでは GitHub を例として、アカウントの作成、プラグインの設定、トークンの作成、グループとロールの割り当てを行います。
ワークスペース所有の ID を作成
プラスボタンを選択し、サービスアカウントに名前を付けて、Create を選択します。
アカウントのプラグインを設定
Plugins を開き、Add plugin を選択して GitHub を選び、このアカウントで有効になっていることを確認します。
スコープ付きアクセストークンを作成
トークンに名前を付け、Codex スコープを確認し、有効期限を選択して、トークンをシークレットマネージャーに保存します。
グループとロールを割り当て
サービスアカウントを必要なワークスペースグループに追加し、User、Configure、または Manager ロールを使用して、ユーザーまたはグループと管理アクセスを共有します。
- ワークスペース設定で サービスアカウントを開きます。
- プラス(+)ボタンを選択し、
release-automationなどの分かりやすい名前を入力します。 - Create を選択します。
プラグインを接続する
サービスアカウント自体にプラグインを設定します。作成者のプラグインや接続済みアプリは継承されません。
- アカウントの Plugins セクションを開き、Add plugin を選択します。
- プラグインを選択し、設定済みまたは有効と表示されることを確認します。
Configure と Manager ロールはプラグインを設定できます。User ロールは設定できません。
アクセストークンを作成する
サービスアカウントの詳細ページからトークンを作成します。トークンは、作成したユーザーではなくサービスアカウントを表します。
- アカウントを開き、Access tokens で Create token を選択します。
- トークンに名前を付け、Codex スコープを確認し、有効期限を選択します。
- Create を選択し、トークンをシークレットマネージャーに保存します。
完全なトークンが表示されるのは一度だけです。利用できる有効期限はワークスペースのポリシーによって制御されます。
ロールとグループを割り当てる
サービスアカウントには、人間のワークスペースメンバーと同様に、ワークスペースのロールを付与し、グループに参加させることができます。アクセス権は直接割り当てます。作成者の権限は継承されません。
ユーザーまたはグループにアカウントの管理を許可するには、Share、Add people or groups の順に選択し、ロールを割り当てます。
| 共有アカウントのロール | アカウントとそのプラグインの設定 | サービスアカウントのアクセストークンの作成 |
|---|---|---|
| User | いいえ | はい |
| Configure | はい | いいえ |
| Manager | はい | はい |
これらのロールは、アカウントを管理するユーザーに適用されます。サービスアカウントに割り当てられたワークスペースのロールやグループとは別のものです。
Configure と Manager は、アカウントを有効または無効にできます。アカウントを作成、削除、共有できるのは、ワークスペースの所有者と管理者だけです。オペレーターは、自分の 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 でサービスアカウントをプロビジョニングする
ワークスペースが System for Cross-domain Identity Management(SCIM)プロトコルを使用したサービスアカウントのプロビジョニングに対応している場合は、ID プロバイダーで 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"
}ID をワークスペースと必要なグループに割り当ててから同期します。ID プロバイダーは、アカウントの名前、グループメンバーシップ、ライフサイクルを管理します。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 |
1つのサービスアカウントを返します |
| アカウントを有効または無効にする | PATCH |
アカウントの enabled 値を更新します |
| アカウントを削除 | DELETE |
アカウントを削除し、そのトークンを失効させます |
POST /v1/manage/workspaces/{workspace_id}/service-accounts を使用してアカウントを作成します。アカウントの更新では、enabled だけが変更されます。
トークン
| 操作 | メソッド | 内容 |
|---|---|---|
| トークンを一覧表示 | GET |
アカウントのトークンメタデータを返します |
| トークンを作成 | POST |
スコープ付きアクセストークンを作成します |
| トークンを失効 | DELETE |
1つのトークンを永久に失効させます |
たとえば、30日後に期限切れになる Codex トークンを作成します。
{
"name": "production-release-runner",
"ttl": 2592000,
"scopes": ["chatgpt.workspace.feature.allow-codex-local-access.access"]
}ttl は、トークンの有効期間を秒単位で表します。有限の有効期間は1年未満で、ワークスペースの有効期限ポリシーに従う必要があります。完全な access_token が返されるのは、トークンの作成時だけです。
Admin API では、共有アカウントへのアクセスを一覧表示、追加、更新、削除することもできます。ロールの値は manager、configurer、user です。configurer は ChatGPT では Configure と表示されます。
サービスアカウントを安全に管理する
- ワークフローに必要なロール、グループ、プラグイン、接続のみを付与します。
- トークンをシークレットマネージャーに保存し、信頼できるランナーを使用します。
- 認証情報をログ、チャットメッセージ、ソース管理に含めないでください。
- 有限の有効期限を設定し、アカウントのアクセス権とアクティビティを定期的に確認します。
- 代替トークンを作成し、ワークフローを更新してアクセスを確認した後、ワークスペースまたは Admin API で古いトークンを失効させて、トークンをローテーションします。
- 漏洩したトークンは直ちに失効させ、アカウントの最近のアクティビティを調査します。
- 使用していないアカウントは、ワークスペースまたは Admin API で無効化または削除します。どちらの操作でも、有効なトークンはすべて失効します。無効化したアカウントは新しいトークンで再度有効にできますが、削除は取り消せません。
実行はサービスアカウントに帰属します。利用可能なワークスペース分析と監査記録から、トークンを作成したユーザーやアカウント設定を変更したユーザーも特定できます。イベントの対象範囲は、Admin API リファレンスで確認してください。