Admin APIを使用すると、Workload Identity Federationのリソース(サービスアカウント、フェデレーションイシュアー、フェデレーションルール)をプログラムで作成・管理できます。これにより、Claude Consoleで画面操作を行う代わりに、フェデレーション設定をインフラストラクチャ・アズ・コードとして管理し、CIからプロビジョニングし、複数の組織間で再現できます。これらのエンドポイントは、他のAdmin APIと同じく/v1/organizationsパスプレフィックスを共有しています。
このページのすべてのリクエストは、org:adminスコープを持つOAuthベアラートークンで認証されます。このスコープは、admin、owner、またはprimary ownerロールを持つ組織メンバーにのみ付与され、組織全体へのアクセスを許可します。ワークスペースへのバインディングは無視されます。トークンを取得する方法は2つあり、それぞれ異なる権限を持ちます。自身のログインから取得したトークンはユーザーとして動作し、フェデレーショントークンはサービスアカウントとして動作するため、このページのすべての操作を実行できるわけではありません。
インタラクティブ(ターミナルから): ant CLIを使用して専用プロファイルでログインし、org:adminスコープをリクエストします(管理者アクセスを参照)。その後、ベアラートークンをエクスポートします。
ant auth login --profile admin --scope "org:admin"
export ANTHROPIC_OAUTH_TOKEN=$(ant auth print-credentials --profile admin --access-token)インタラクティブトークンは有効期間が短いため、リクエストが401を返し始めた場合は、エクスポートコマンドを再実行してください(トークンは自動的にリフレッシュされます)。
ワークロード(CIおよび自動化): organization_roleがadminであるサービスアカウントをターゲットとする、oauth_scope: org:adminを持つフェデレーションルールを作成します。このルール自体はClaude Consoleで作成する必要があります。ワークロードに組織管理者アクセスを付与することは、自動化が自らブートストラップできるものではなく、人間による意図的な操作です。次のセクションでは、組織ごとに一度だけ行うこのセットアップについて説明します。
Consoleで作成したルールが1つあれば、残りのフェデレーション設定をインフラストラクチャ・アズ・コードで管理できます。信頼できる単一のワークロードにorg:adminスコープを付与し、そのワークロードにこのAPIを通じてフェデレーションイシュアーとすべてのワークスペーススコープのフェデレーションルールを管理させます。
Consoleでorg:adminルールを作成する
Claude Consoleで、Settings → Workload identityに移動し、Connect workloadを選択して、自動化ワークロード(例:インフラストラクチャリポジトリ内のGitHub Actionsワークフロー)用のフェデレーションルールを1つ作成します。Advanced rule optionsで、ルールのOAuthスコープをorg:adminに設定します。ウィザードは、Admin組織ロールを持つ新しいサービスアカウントを作成します(または、ターゲットとして既存のadminサービスアカウントを選択するよう求めます)。
ルールは、広範なパターンではなく、1つの正確なワークロードアイデンティティに一致させてください。subject_prefixは、末尾が*でない限り完全一致です。GitHub Actionsの場合、サブジェクトを保護されたブランチに固定します(例:repo:my-org/my-repo:ref:refs/heads/main)。repo:my-org/my-repo:*のような末尾のワイルドカードは、フォークからトリガーされた実行を含むpull_request実行にも一致するため、そのリポジトリに対してプルリクエストを開くことができる誰もがorg:adminトークンを発行できてしまいます。認証できるワークフローを制限するを参照してください。
ワークロードのアイデンティティトークンを交換する
実行時に、ワークロードは他のフェデレーションワークロードと同じトークン交換を使用して、アイデンティティプロバイダーからのJWTを短期間有効なorg:adminベアラートークンと交換します。
APIを通じてイシュアーとワークスペーススコープのルールを管理する
発行されたトークンをANTHROPIC_OAUTH_TOKENに設定すると、ワークロードはこのページのエンドポイントを使用してフェデレーション設定を作成・管理します。
ワークロードが発行したトークンで実行できる操作とできない操作については、権限と制約を参照してください。Connect workloadウィザードでイシュアー、サービスアカウント、またはルールをすでに作成している場合は、以下のエンドポイントでそれらを一覧表示し、再作成するのではなくインフラストラクチャ・アズ・コードの状態にインポートしてください。
すべてのエンドポイントはhttps://api.anthropic.com/v1/organizations/配下にあります。フェデレーションおよびサービスアカウントのエンドポイントへのすべてのリクエストには、APIバージョンヘッダーとベアラートークンが必要です。
curl --fail-with-body -sS "https://api.anthropic.com/v1/organizations/service_accounts" \
--header "anthropic-version: 2023-06-01" \
--header "authorization: Bearer $ANTHROPIC_OAUTH_TOKEN"これらのエンドポイントではAdmin APIキーは受け付けられません。Admin APIページのx-api-keyの例はここでは適用されません。
サービスアカウント(svac_...)は、フェデレーショントークンが動作する際の非人間アイデンティティです。organization_roleはdeveloperに設定します。
# サービスアカウントを作成する
curl --fail-with-body -sS "https://api.anthropic.com/v1/organizations/service_accounts" \
--header "anthropic-version: 2023-06-01" \
--header "authorization: Bearer $ANTHROPIC_OAUTH_TOKEN" \
--header "content-type: application/json" \
--data '{
"name": "inference-worker",
"organization_role": "developer"
}'
# サービスアカウントを一覧表示する
curl --fail-with-body -sS "https://api.anthropic.com/v1/organizations/service_accounts?limit=20" \
--header "anthropic-version: 2023-06-01" \
--header "authorization: Bearer $ANTHROPIC_OAUTH_TOKEN"
# サービスアカウントをアーカイブする
curl --fail-with-body -sS --request POST "https://api.anthropic.com/v1/organizations/service_accounts/svac_.../archive" \
--header "anthropic-version: 2023-06-01" \
--header "authorization: Bearer $ANTHROPIC_OAUTH_TOKEN"作成エンドポイントは新しいサービスアカウントを返します。
{
"id": "svac_...",
"name": "inference-worker",
"organization_role": "developer",
"created_at": "...",
"type": "service_account",
"...": "..."
}単一のサービスアカウントを読み取りまたは更新するには、/v1/organizations/service_accounts/{service_account_id}に対してGETおよびPOSTを使用します。フェデレーショントークンがワークスペース内で動作するには、サービスアカウントがそのワークスペースのメンバーである必要があります。すべてのサービスアカウントは、組織のデフォルトワークスペースに暗黙的なメンバーシップを持っています。他のワークスペースに明示的なメンバーシップを追加するには、/v1/organizations/service_accounts/{service_account_id}/workspacesに対してGET、POST、DELETEを使用します。DELETEは.../workspaces/{workspace_id}をターゲットとします。
フェデレーションイシュアー(fdis_...)は、OIDCアイデンティティプロバイダーを組織に登録します。jwksフィールドは、Anthropicがプロバイダーの署名キーを取得する方法を制御する判別共用体です。
jwksの値 | 使用する場面 |
|---|---|
{"type": "discovery"} | プロバイダーがイシュアーURLで/.well-known/openid-configurationを提供している場合。 |
{"type": "explicit_url", "url": "..."} | JWKSエンドポイントを直接指定する場合。 |
{"type": "inline", "keys": [...]} | パブリックインターネットから到達できないプロバイダーのキーセットをアップロードする場合。 |
# 発行者を登録する(GitHub Actions、JWKSディスカバリー使用)
curl --fail-with-body -sS "https://api.anthropic.com/v1/organizations/federation_issuers" \
--header "anthropic-version: 2023-06-01" \
--header "authorization: Bearer $ANTHROPIC_OAUTH_TOKEN" \
--header "content-type: application/json" \
--data '{
"name": "github-actions",
"issuer_url": "https://token.actions.githubusercontent.com",
"jwks": {"type": "discovery"}
}'
# 発行者を一覧表示する
curl --fail-with-body -sS "https://api.anthropic.com/v1/organizations/federation_issuers?limit=20" \
--header "anthropic-version: 2023-06-01" \
--header "authorization: Bearer $ANTHROPIC_OAUTH_TOKEN"
# 発行者をアーカイブする
curl --fail-with-body -sS --request POST "https://api.anthropic.com/v1/organizations/federation_issuers/fdis_.../archive" \
--header "anthropic-version: 2023-06-01" \
--header "authorization: Bearer $ANTHROPIC_OAUTH_TOKEN"単一のイシュアーを読み取りまたは更新するには、/v1/organizations/federation_issuers/{issuer_id}に対してGETおよびPOSTを使用します。OAuth呼び出し元は、oauth_scopeがworkspace:developerまたはworkspace:inference以外のルールを支えているイシュアーを更新できません。権限と制約を参照してください。
フェデレーションルール(fdrl_...)は、イシュアーをサービスアカウントにバインドします。ルールの一致条件を満たすイシュアーからのJWTは、ルールのターゲットとして動作するトークンを発行できます。作成リクエストのworkspace_idは、作成時にそのワークスペースでルールを有効にします。後から/federation_rules/{rule_id}/workspacesサブリソースを通じてワークスペースを追加できます。作成時にはworkspace_idまたはapplies_to_all_workspaces: trueのいずれかが必須です。
# ルールを作成します(GitHub Actionsはmainブランチからデプロイします)
curl --fail-with-body -sS "https://api.anthropic.com/v1/organizations/federation_rules" \
--header "anthropic-version: 2023-06-01" \
--header "authorization: Bearer $ANTHROPIC_OAUTH_TOKEN" \
--header "content-type: application/json" \
--data '{
"name": "gha-deploy",
"issuer_id": "fdis_...",
"match": {
"subject_prefix": "repo:my-org/my-repo:ref:refs/heads/main",
"claims": {"repository_owner": "my-org"}
},
"target": {
"type": "service_account",
"service_account_id": "svac_..."
},
"workspace_id": "wrkspc_...",
"oauth_scope": "workspace:developer",
"token_lifetime_seconds": 600
}'
# ルールを一覧表示します(オプションで発行者によるフィルタリングが可能)
curl --fail-with-body -sS "https://api.anthropic.com/v1/organizations/federation_rules?issuer_id=fdis_..." \
--header "anthropic-version: 2023-06-01" \
--header "authorization: Bearer $ANTHROPIC_OAUTH_TOKEN"
# ルールをアーカイブします
curl --fail-with-body -sS --request POST "https://api.anthropic.com/v1/organizations/federation_rules/fdrl_.../archive" \
--header "anthropic-version: 2023-06-01" \
--header "authorization: Bearer $ANTHROPIC_OAUTH_TOKEN"一覧エンドポイントは、ルールのページと次のページのカーソルを返します。
{
"data": [{ "id": "fdrl_...", "name": "gha-deploy", "...": "..." }],
"next_page": "..."
}単一のルールを読み取りまたは更新するには、/v1/organizations/federation_rules/{rule_id}に対してGETおよびPOSTを使用します。ルールがトークンを発行できるワークスペースを管理するには、/v1/organizations/federation_rules/{rule_id}/workspacesに対してGETおよびPOSTを使用し、/v1/organizations/federation_rules/{rule_id}/workspaces/{workspace_id}に対してDELETEを使用します。
oauth_scopeがworkspace:developerまたはworkspace:inferenceであるルールのみを作成または変更できます。それ以外のスコープ(org:adminやorg:manage_tunnelsなど)を持つルールを作成または変更するには、Consoleを使用してください。oauth_scopeがworkspace:developerまたはworkspace:inference以外(org:adminやorg:manage_tunnelsなど)のルールを支えているフェデレーションイシュアーを更新できません。ワークスペーススコープのルールの背後にあるイシュアーをAPI経由で更新可能な状態に保つため、ブートストラップルール用に専用のイシュアーを登録することを検討してください。org:admin OAuthトークンを使用してください。oauth_scope: org:adminを持つルールは、organization_roleがadminであるサービスアカウントをターゲットとする必要があります。リソース名は^[a-z0-9-]+$に一致し、1〜255文字で、各リソースタイプについて組織内で一意である必要があります。フィールドレベルの制約の詳細については、検証ルールを参照してください。
サービスアカウント、フェデレーションイシュアー、フェデレーションルールの一覧エンドポイントは、limit(1〜100、デフォルト20)と、前のレスポンスから取得したpageカーソルを受け付けます。レスポンスのnext_page値を次のリクエストのpageクエリパラメータとして渡します。ルールワークスペースのサブリソース一覧は、ページネーションなしで全セットを返します。アーカイブされたリソースはデフォルトで一覧から非表示になります。含めるにはinclude_archived=trueを渡してください。
アーカイブはソフトデリートであり、冪等です。すでにアーカイブされたリソースをアーカイブしても成功します。イシュアーまたはサービスアカウントをアーカイブする際、それを参照しているアクティブなフェデレーションルールがまだ存在する場合は400が返されます。先にルールをアーカイブしてください。
Was this page helpful?