日本語

サービスアカウント

ChatGPT ワークスペースで Codex の自動化に使用するサービスアカウントを設定、管理します

サービスアカウントを使用すると、従業員のアカウントに依存することなく、組織全体でヘッドレス Codex ワークフローを実行し、拡張できます。継続的インテグレーション(CI)ランナー、スケジュールされたジョブ、共有インテグレーションのそれぞれに専用の ChatGPT ワークスペース ID が割り当てられ、ユーザーと同様のグループ、ロール、アクセス制御、監査可能性が適用されます。

サービスアカウントを作成できるのは、ワークスペースの所有者と管理者のみです。他のユーザーまたはグループに、アカウントの管理、プラグインの設定、アクセストークンの作成を許可できます。

サービスアカウントは、人間以外のワークスペース ID を表します。パーソナルアクセストークンは、それを作成したワークスペースメンバーを表します。API Platform プロジェクトのサービスアカウントと API key では、別のプロジェクトアクセスと課金が使用されます。

サービスアカウントを作成して設定する

このインタラクティブなチュートリアルでは GitHub を例として、アカウントの作成、プラグインの設定、トークンの作成、グループとロールの割り当てを行います。

インタラクティブなチュートリアル ワークスペース例 · GitHub の自動化

ワークスペース所有の ID を作成

プラスボタンを選択し、サービスアカウントに名前を付けて、Create を選択します。

サービスアカウント release-automation 有効 · Alex Kim が作成
  1. ワークスペース設定で サービスアカウントを開きます。
  2. プラス(+)ボタンを選択し、release-automation などの分かりやすい名前を入力します。
  3. Create を選択します。

プラグインを接続する

サービスアカウント自体にプラグインを設定します。作成者のプラグインや接続済みアプリは継承されません。

  1. アカウントの Plugins セクションを開き、Add plugin を選択します。
  2. プラグインを選択し、設定済みまたは有効と表示されることを確認します。

ConfigureManager ロールはプラグインを設定できます。User ロールは設定できません。

アクセストークンを作成する

サービスアカウントの詳細ページからトークンを作成します。トークンは、作成したユーザーではなくサービスアカウントを表します。

  1. アカウントを開き、Access tokensCreate token を選択します。
  2. トークンに名前を付け、Codex スコープを確認し、有効期限を選択します。
  3. Create を選択し、トークンをシークレットマネージャーに保存します。

完全なトークンが表示されるのは一度だけです。利用できる有効期限はワークスペースのポリシーによって制御されます。

ロールとグループを割り当てる

サービスアカウントには、人間のワークスペースメンバーと同様に、ワークスペースのロールを付与し、グループに参加させることができます。アクセス権は直接割り当てます。作成者の権限は継承されません。

ユーザーまたはグループにアカウントの管理を許可するには、ShareAdd people or groups の順に選択し、ロールを割り当てます。

共有アカウントのロール アカウントとそのプラグインの設定 サービスアカウントのアクセストークンの作成
User いいえ はい
Configure はい いいえ
Manager はい はい

これらのロールは、アカウントを管理するユーザーに適用されます。サービスアカウントに割り当てられたワークスペースのロールやグループとは別のものです。

ConfigureManager は、アカウントを有効または無効にできます。アカウントを作成、削除、共有できるのは、ワークスペースの所有者と管理者だけです。オペレーターは、自分の 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 プロバイダーで userTypeServiceAccount に設定します。

{
  "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 では、共有アカウントへのアクセスを一覧表示、追加、更新、削除することもできます。ロールの値は managerconfigureruser です。configurer は ChatGPT では Configure と表示されます。

サービスアカウントを安全に管理する

  • ワークフローに必要なロール、グループ、プラグイン、接続のみを付与します。
  • トークンをシークレットマネージャーに保存し、信頼できるランナーを使用します。
  • 認証情報をログ、チャットメッセージ、ソース管理に含めないでください。
  • 有限の有効期限を設定し、アカウントのアクセス権とアクティビティを定期的に確認します。
  • 代替トークンを作成し、ワークフローを更新してアクセスを確認した後、ワークスペースまたは Admin API で古いトークンを失効させて、トークンをローテーションします。
  • 漏洩したトークンは直ちに失効させ、アカウントの最近のアクティビティを調査します。
  • 使用していないアカウントは、ワークスペースまたは Admin API で無効化または削除します。どちらの操作でも、有効なトークンはすべて失効します。無効化したアカウントは新しいトークンで再度有効にできますが、削除は取り消せません。

実行はサービスアカウントに帰属します。利用可能なワークスペース分析と監査記録から、トークンを作成したユーザーやアカウント設定を変更したユーザーも特定できます。イベントの対象範囲は、Admin API リファレンスで確認してください。

関連ドキュメント