«Workload Identity Federation» (федерация идентификации рабочих нагрузок), или WIF, позволяет вашим рабочим нагрузкам аутентифицироваться в Claude API с помощью короткоживущих токенов OpenID Connect (OIDC) вместо долгоживущих ключей API вида sk-ant-.... Токены поступают от поставщика идентификации (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, ваш staging-кластер и 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).Один эмитент может иметь много правил: по одному на команду, пространство имён или уровень разрешений. Правила оцениваются по идентификатору: клиент указывает, какое правило использовать, в запросе обмена, и 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 минут ожидает успешного обмена токенами. Инициируйте обмен из вашей рабочей нагрузки в течение этого окна (см. Аутентификация из вашей рабочей нагрузки), чтобы подтвердить, что настройка работает. Если окно истекает, ресурсы сохраняются; вы можете повторно запустить тест со страницы сведений о правиле федерации. Запишите идентификатор правила (fdrl_...) и идентификатор сервисного аккаунта (svac_...), которые создаёт мастер: ваша рабочая нагрузка передаёт оба, вместе с идентификатором вашей организации (и идентификатором вашего рабочего пространства, если правило охватывает более одного рабочего пространства), в каждом запросе обмена токенами.
Чтобы управлять этими ресурсами программно, см. Управление 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-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello, Claude"}],
)
print(message.content[0].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 — это меньшее из (а) значения token_lifetime_seconds правила (по умолчанию 3600 секунд) и (б) удвоенного оставшегося времени жизни предъявленного вами 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?