«Workload Identity Federation» (федерация удостоверений рабочих нагрузок), или WIF, позволяет вашим рабочим нагрузкам аутентифицироваться в Claude API с помощью краткосрочных токенов OpenID Connect (OIDC) вместо долгоживущих ключей API sk-ant-.... Токены поступают от поставщика удостоверений (identity provider, IdP), которым вы уже управляете: AWS IAM, Google Cloud или любого соответствующего стандартам эмитента OIDC, такого как GitHub Actions, Kubernetes, SPIFFE, Microsoft Entra ID или Okta.
Ваша рабочая нагрузка предъявляет подписанный JWT от вашего поставщика удостоверений. Anthropic проверяет его на соответствие правилам доверия, которые вы настраиваете в Claude Console, и возвращает краткосрочный токен доступа Anthropic, привязанный к сервисному аккаунту в вашей организации. Нет статических секретов, которые нужно создавать, хранить в CI, ротировать или которые могут утечь.
Workload Identity Federation укрепляет вашу безопасность, заменяя статические ключи API токенами, которые истекают через минуты, а не никогда. Само по себе это не полное решение безопасности: федеративная аутентификация настолько же надёжна, насколько надёжен вышестоящий поставщик удостоверений, подписывающий JWT. Сочетайте Workload Identity Federation с элементами управления, которые уже поддерживает ваш IdP (привязка удостоверений рабочих нагрузок, условный доступ, журналирование аудита), для эшелонированной защиты.
Вы настраиваете три ресурса в Claude Console, прежде чем какая-либо рабочая нагрузка сможет использовать федерацию. Вместе они выражают: «токены, подписанные эмитентом X, с утверждениями, которые выглядят как Y, могут действовать как сервисный аккаунт Z».
Сервисный аккаунт (svac_...) — это именованная нечеловеческая идентичность внутри вашей организации Anthropic. Это принципал, от имени которого действует федеративный токен. Сервисные аккаунты существуют на уровне организации и становятся активными в рабочем пространстве, когда вы добавляете их в качестве участников этого рабочего пространства. Во время обмена Anthropic проверяет, что рабочее пространство правила федерации соответствует одному из членств сервисного аккаунта в рабочих пространствах; выпущенный токен затем следует ограничениям скорости и атрибуции использования этого рабочего пространства, так же как ключ API. В отличие от человека-пользователя, у сервисного аккаунта нет электронной почты, пароля и входа в Console. Каждый сервисный аккаунт неявно является участником рабочего пространства по умолчанию вашей организации; добавьте явные членства для любого другого рабочего пространства, в котором он должен действовать.
Ключевое отличие от ключа API: ключ API является учётными данными, тогда как для сервисного аккаунта учётные данные создаются по требованию. Вы можете проводить аудит того, какие рабочие нагрузки действовали от имени какого сервисного аккаунта.
Эмитент федерации (fdis_...) регистрирует поставщика удостоверений OIDC в вашей организации. Регистрация эмитента сообщает Anthropic: «JWT, подписанные этим поставщиком, могут утверждать идентичность рабочей нагрузки для моей организации».
У эмитента есть две части конфигурации:
iss, которое появляется в JWT поставщика, например https://token.actions.githubusercontent.com или https://oidc.eks.us-west-2.amazonaws.com/id/EXAMPLE.discovery (по умолчанию) для любого поставщика, который обслуживает /.well-known/openid-configuration по своему URL эмитента. Используйте explicit_url, чтобы указать непосредственно на конечную точку JWKS, или inline, чтобы загрузить набор ключей для эмитентов, недоступных из публичного интернета (например, частный кластер Kubernetes).URL эмитента и JWKS должны использовать https, порт 443 и публичное DNS-имя хоста, которое разрешается в публичные IP-адреса; IP-литералы не принимаются. Эти ограничения применяются только к URL, которые запрашивает Anthropic; в режимах explicit_url и inline issuer_url сравнивается как строка и может ссылаться на внутреннее имя хоста.
Обычно вы регистрируете одного эмитента на окружение: ваш производственный кластер EKS, ваш промежуточный кластер и GitHub Actions — это три отдельных эмитента.
Правило федерации (fdrl_...) — это мост между эмитентом и сервисным аккаунтом: «когда JWT от эмитента X имеет утверждения, которые выглядят как Y, выпустить токен для сервисного аккаунта Z с областью действия S».
Правило определяет условия соответствия, цель, а также область авторизации и время жизни токена, которые применяются при срабатывании правила:
subject_prefix (например, system:serviceaccount:prod:worker, или с завершающим * для сопоставления по префиксу), точному audience, карте точных значений утверждений, выражению condition на CEL для сложной логики или любой их комбинации. Должен быть задан хотя бы один из subject_prefix, claims или condition, и все настроенные сопоставители должны пройти, чтобы JWT был принят.scope, предоставляемая выпущенному токену. По умолчанию это workspace:developer, что предоставляет тот же доступ, что и ключ API, выпущенный для этого рабочего пространства. Некоторые продукты фиксируют область действия, когда вы создаёте правило из их потока; например, модальное окно создания туннеля MCP tunnels создаёт правила с областью workspace:manage_tunnels. См. Области OAuth. Правило также задаёт token_lifetime_seconds (от 60 до 86400, по умолчанию 3600).У одного эмитента может быть много правил: по одному на команду, пространство имён или уровень разрешений. Правила оцениваются по ID: клиент указывает, какое правило использовать в запросе обмена, и Anthropic проверяет, что JWT удовлетворяет критериям соответствия этого правила. Неявного поиска правил нет.
iss в JWT идентифицирует поставщика, а его sub и другие утверждения идентифицируют конкретную рабочую нагрузку.POST /v1/oauth/token, используя грант jwt-bearer из RFC 7523. Anthropic проверяет JWT по JWKS эмитента и условиям соответствия правила федерации, затем возвращает краткосрочный токен sk-ant-oat01-..., который действует от имени целевого сервисного аккаунта правила.api_key и вызывает API как обычно. SDK повторно выполняет обмен до истечения срока действия токена.Вам нужна роль администратора, владельца или основного владельца в вашей организации Anthropic, поставщик удостоверений с поддержкой OIDC с доступной конечной точкой JWKS (или документ JWKS, который вы можете вставить, для изолированных кластеров), а также рабочая нагрузка, которая может получить токен идентификации от этого поставщика.
Мастер Connect workload создаёт все три ресурса (эмитента, сервисный аккаунт и правило федерации) в одном пошаговом процессе, а затем проверяет соединение от начала до конца.
Откройте Connect workload
В Claude Console перейдите в Settings → Workload identity и выберите Connect workload.
Выберите вашего поставщика
Выберите плитку вашего поставщика удостоверений: GitHub Actions, AWS, Google Cloud, Microsoft Entra ID или Kubernetes. Каждая плитка предварительно заполняет шаблон URL эмитента и поля соответствия, которые поддерживают JWT этого поставщика. Для любого другого соответствующего стандартам поставщика (например, SPIFFE или Okta) выберите Custom OIDC.
Заполните поля мастера
Мастер проведёт вас через поля, специфичные для поставщика: конфигурацию эмитента, условия соответствия для входящих JWT и имена для сервисного аккаунта и правила федерации, которые он создаёт. Мастер предварительно заполняет oauth_scope=workspace:developer и token_lifetime_seconds=600 (значение API по умолчанию, когда token_lifetime_seconds опущен, составляет 3600); скорректируйте их, если вашей рабочей нагрузке нужна другая область действия или время жизни.
Проверьте эмитента
При желании выберите Verify issuer, чтобы выполнить пробный запуск конфигурации эмитента до того, как что-либо будет создано. Проверка подтверждает, что Anthropic может получить и разобрать JWKS по введённым вами URL, что позволяет рано выявить ошибки доступности и конфигурации.
Протестируйте соединение
Мастер создаёт эмитента, сервисный аккаунт и правило федерации, затем ожидает успешного обмена токенами в течение 15 минут. Инициируйте обмен из вашей рабочей нагрузки в течение этого окна (см. Аутентификация из вашей рабочей нагрузки), чтобы подтвердить, что настройка работает. Если окно истечёт, ресурсы сохраняются; вы можете повторно запустить тест со страницы сведений о правиле федерации. Запишите ID правила (fdrl_...) и ID сервисного аккаунта (svac_...), которые создаёт мастер: ваша рабочая нагрузка передаёт оба, вместе с ID вашей организации (и ID вашего рабочего пространства, когда правило охватывает более одного рабочего пространства), в каждом запросе обмена токенами.
Чтобы управлять этими ресурсами программно, см. Управление WIF с помощью Admin API для пошагового руководства с curl, или см. Справочник API сервисных аккаунтов, Справочник API эмитентов федерации и Справочник API правил федерации для полных сведений о параметрах и схемах ответов.
После настройки федерации ваша рабочая нагрузка обменивает выданный IdP JWT на токен Anthropic во время выполнения. SDK обрабатывают цикл обмена и обновления за вас. Вкладка cURL показывает базовый HTTP-обмен для shell-скриптов, отладки или языков без поддержки SDK.
Вы можете создать клиент с явными учётными данными или без аргументов. Без аргументов SDK разрешает учётные данные из переменных окружения или активного профиля, как описано в разделе Приоритет учётных данных. Форма без аргументов — рекомендуемый шаблон для производственных рабочих нагрузок: поставляйте один и тот же образ контейнера везде и внедряйте ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, ANTHROPIC_SERVICE_ACCOUNT_ID, ANTHROPIC_WORKSPACE_ID и ANTHROPIC_IDENTITY_TOKEN_FILE для каждого окружения.
from anthropic import Anthropic, WorkloadIdentityCredentials, IdentityTokenFile
client = Anthropic(
credentials=WorkloadIdentityCredentials(
identity_token_provider=IdentityTokenFile(
"/var/run/secrets/anthropic.com/token"
),
federation_rule_id="fdrl_...",
organization_id="00000000-0000-0000-0000-000000000000",
service_account_id="svac_...",
workspace_id="wrkspc_...",
),
)
message = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello, Claude"}],
)
print(next(block.text for block in message.content if block.type == "text"))Ответ обмена токенами соответствует RFC 6749 §5.1. См. Ответ обмена токенами для справки по полям.
Каждый SDK разрешает учётные данные в одном и том же пятиуровневом порядке: аргументы конструктора, затем ANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN, затем явный ANTHROPIC_PROFILE, затем переменные окружения федерации, затем неявный активный профиль. Побеждает первый источник, который даёт учётные данные.
ANTHROPIC_API_KEY находится выше уровней федерации, поэтому оставшийся в
окружении ключ незаметно перекрывает федерацию. При миграции рабочей нагрузки
с ключей API на Workload Identity Federation убедитесь, что ANTHROPIC_API_KEY не задан везде, где
выполняется эта рабочая нагрузка (окружение контейнера, секреты CI, профили оболочки). Команда CLI ant auth status
сообщает, какой источник победил.
Полную таблицу приоритетов, семантику каждого уровня и схему файла профиля см. в разделе Приоритет учётных данных в справочнике WIF.
Чтобы переключить существующую рабочую нагрузку со статического ключа API на федерацию без простоя:
ANTHROPIC_API_KEY на месте.ant auth status изнутри рабочей нагрузки (или изучите отладочные журналы SDK). Поскольку ANTHROPIC_API_KEY находится выше уровней федерации в цепочке приоритетов, на этом этапе ключ API всё ещё побеждает.ANTHROPIC_API_KEY везде, где он внедряется. Удалите его из секретов CI, окружения контейнера и профилей оболочки (см. предыдущее предупреждение). Повторно запустите ant auth status и убедитесь, что теперь выбран источник федерации.Время жизни выпущенного токена Anthropic — это меньшее из (a) token_lifetime_seconds правила (по умолчанию 3 600 секунд) и (b) удвоенного оставшегося времени жизни предъявленного вами JWT от IdP. Результат никогда не меньше 60 секунд. Второе ограничение предотвращает ситуацию, когда токен Anthropic переживает вышестоящую идентичность, из которой он был получен, более чем на небольшой запас.
SDK кэшируют токен и обновляют его по двухуровневому расписанию, смоделированному по образцу botocore:
Поскольку SDK перечитывает ANTHROPIC_IDENTITY_TOKEN_FILE при каждом обмене, он прозрачно подхватывает ротированные проецируемые токены (токены сервисных аккаунтов Kubernetes, например, ротируются задолго до их exp).
Каждое руководство описывает, откуда берётся JWT на этой платформе, как выглядят его утверждения, а также конфигурацию эмитента и правила для регистрации.
Токены веб-идентификации STS или проецируемые токены EKS IRSA.
Подписанные Google токены идентификации с сервера метаданных.
Managed Identity (IMDS) и Entra Workload ID на AKS.
Бесключевая аутентификация CI с токеном OIDC Actions.
Самоуправляемые и локальные кластеры, использующие проецируемые токены сервисных аккаунтов.
Рабочие нагрузки со SPIFFE JWT-SVID от SPIRE или другого соответствующего эмитента.
Сервисные приложения Okta, использующие поток client-credentials.
Was this page helpful?