• Сообщения
  • Управляемые агенты
  • Администрирование
Search...
⌘K
Организация
Admin APIРабочие пространства
Аутентификация
ОбзорФедерация удостоверений рабочих нагрузокСправочник по WIF
AWSGoogle CloudMicrosoft AzureGitHub ActionsKubernetesSPIFFEOkta
Мониторинг
API использования и затратAPI ограничений скоростиAPI аналитики Claude Code
Данные и соответствие требованиям
Резидентность данныхAPI и хранение данных
Compliance API
ОбзорПолучение доступаЛента активностиЧаты, файлы и проектыОрганизации, пользователи, роли и группыПроектирование интеграцииОшибкиЧасто задаваемые вопросы
Log in
Microsoft Azure
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Администрирование/Поставщики удостоверений

Использование WIF с Microsoft Azure

Федерируйте управляемые удостоверения Azure и Entra Workload Identity с Claude API, чтобы ваши рабочие нагрузки Azure могли обращаться к Claude без статических ключей API.

Рабочие нагрузки Azure аутентифицируются в Claude API, предъявляя JSON Web Token (JWT), выданный Microsoft Entra ID, а затем обменивая его на короткоживущий токен доступа Anthropic. Существует два распространённых способа получить токен, выданный Entra:

  • Управляемое удостоверение (виртуальные машины, App Service, Functions, Container Apps): рабочая нагрузка обращается к Azure Instance Metadata Service (IMDS) по адресу http://169.254.169.254/metadata/identity/oauth2/token и получает JWT для назначенного ей удостоверения.
  • Entra Workload Identity (поды AKS): Kubernetes проецирует токен учётной записи службы (подписанный OIDC-издателем кластера AKS) в под по пути, указанному в AZURE_FEDERATED_TOKEN_FILE. Рабочая нагрузка обменивает этот токен в Entra на токен доступа, выданный Entra.

В обоих случаях токен, выданный Entra, который вы предъявляете Anthropic, содержит специфичный для арендатора издатель Entra (точный URL для регистрации показан ниже в шаге Настройка Anthropic) и идентификатор объекта управляемого удостоверения в утверждениях sub и oid. Вы один раз регистрируете этого издателя в Anthropic, создаёте правило федерации, которое сопоставляется с ожидаемыми утверждениями, и ваша рабочая нагрузка во время выполнения обменивает свой токен Entra на токен доступа вида sk-ant-oat01-....

Поды AKS могут в качестве альтернативы пропустить обмен через Entra и предъявить Anthropic напрямую токен учётной записи службы, спроецированный Kubernetes. В этом случае в Anthropic регистрируется OIDC-издатель вашего кластера AKS вместо вашего арендатора Entra. Этот сценарий описан в разделе Kubernetes.

Предварительные требования

  • Знакомство с концепциями WIF: учётными записями служб, издателями федерации и правилами федерации.
  • Подписка Azure с правами на назначение управляемых удостоверений (или на настройку Entra Workload Identity в AKS).
  • Идентификатор арендатора Microsoft Entra. Найдите его на портале Azure в разделе Microsoft Entra ID → Overview → Tenant ID.
  • Права на создание учётных записей служб, издателей федерации и правил федерации в Claude Console для вашей организации Anthropic.

Настройка Azure

Настройте удостоверение, для которого Azure будет выдавать токены. Выберите вариант, соответствующий тому, где выполняется ваша рабочая нагрузка.

Утверждения токена

Токен, выданный Entra для управляемого удостоверения, содержит следующие утверждения:

{
  "iss": "https://login.microsoftonline.com/<TENANT_ID>/v2.0",
  "sub": "9f8e7d6c-1a2b-3c4d-5e6f-...",
  "aud": "https://api.anthropic.com",
  "oid": "9f8e7d6c-1a2b-3c4d-5e6f-...",
  "tid": "<TENANT_ID>",
  "azp": "<CLIENT_ID>",
  "exp": 1775527120
}

sub и oid идентичны (идентификатор объекта управляемого удостоверения). azp — это идентификатор приложения или клиента. Сопоставляйте по oid, чтобы авторизовать одно конкретное удостоверение, или по azp, чтобы авторизовать любое удостоверение, связанное с регистрацией приложения. Утверждение tid повторяет идентификатор вашего арендатора; сопоставление по нему — это дополнительный уровень защиты, поскольку URL издателя уже фиксирует арендатора.

Настройка Anthropic

Следуйте пошаговому руководству по настройке, чтобы зарегистрировать издателя федерации, создать учётную запись службы Anthropic и создать правило федерации в Claude Console. В Console выберите вариант провайдера OIDC и укажите приведённые ниже значения, специфичные для Entra.

Издатель федерации: Entra публикует документ обнаружения OIDC по URL издателя, специфичному для арендатора, поэтому используйте режим обнаружения. Для каждого федерируемого арендатора Azure требуется собственная запись издателя.

{
  "name": "azure-prod-tenant",
  "issuer_url": "https://login.microsoftonline.com/<TENANT_ID>/v2.0",
  "jwks_source": "discovery"
}

В зависимости от версии токена утверждение iss может иметь вид https://sts.windows.net/<TENANT_ID>/. Декодируйте ваш токен управляемого удостоверения (как это сделать, показано ниже в разделе «Проверка») и зарегистрируйте то значение iss, которое он содержит. Оба URL используют один и тот же JWKS, поэтому режим обнаружения работает для любого из них.

Правило федерации: сопоставляйте по идентификатору объекта управляемого удостоверения и идентификатору вашего арендатора.

{
  "name": "azure-inference-worker",
  "issuer_id": "fdis_...",
  "match": {
    "audience": "https://api.anthropic.com",
    "claims": {
      "oid": "9f8e7d6c-1a2b-3c4d-5e6f-...",
      "tid": "<TENANT_ID>"
    }
  },
  "target": {
    "type": "service_account",
    "service_account_id": "svac_..."
  },
  "workspace_id": "wrkspc_...",
  "oauth_scope": "workspace:developer",
  "token_lifetime_seconds": 600
}

Получение и использование токена

Во время выполнения ваша рабочая нагрузка получает свой токен Entra, обменивает его через POST /v1/oauth/token и использует возвращённый bearer-токен для обращения к Claude. Каждый SDK Anthropic берёт на себя обмен и цикл обновления, если вы передаёте вызываемый объект — поставщик токенов, как показано в следующих примерах. Вкладка cURL демонстрирует «сырой» поток.

import os

import anthropic
import requests
from anthropic import WorkloadIdentityCredentials

IMDS_URL = "http://169.254.169.254/metadata/identity/oauth2/token"


def fetch_entra_token() -> str:
    """Fetch a managed identity token from Azure IMDS."""
    response = requests.get(
        IMDS_URL,
        headers={"Metadata": "true"},
        params={"api-version": "2018-02-01", "resource": "https://api.anthropic.com"},
        timeout=5,
    )
    response.raise_for_status()
    return response.json()["access_token"]


client = anthropic.Anthropic(
    credentials=WorkloadIdentityCredentials(
        identity_token_provider=fetch_entra_token,
        federation_rule_id=os.environ["ANTHROPIC_FEDERATION_RULE_ID"],
        organization_id=os.environ["ANTHROPIC_ORGANIZATION_ID"],
        service_account_id=os.environ["ANTHROPIC_SERVICE_ACCOUNT_ID"],
        workspace_id=os.environ.get("ANTHROPIC_WORKSPACE_ID"),
    ),
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello from Azure"}],
)
print(message.content[0].text)

В AKS с Entra Workload Identity

В AKS файл по пути AZURE_FEDERATED_TOKEN_FILE — это токен учётной записи службы, спроецированный Kubernetes и подписанный OIDC-издателем вашего кластера, а не токен, выданный Entra. Чтобы остаться на пути через Entra, описанном на этой странице, сначала обменяйте этот токен по адресу https://login.microsoftonline.com/<TENANT_ID>/oauth2/v2.0/token (федеративный грант client_credentials), а затем передайте полученный токен доступа Entra в SDK Anthropic в качестве токена удостоверения.

import os
from pathlib import Path
import httpx
import anthropic
from anthropic import WorkloadIdentityCredentials


def fetch_entra_token_via_federation() -> str:
    federated_token = Path(os.environ["AZURE_FEDERATED_TOKEN_FILE"]).read_text()
    response = httpx.post(
        f"https://login.microsoftonline.com/{os.environ['AZURE_TENANT_ID']}/oauth2/v2.0/token",
        data={
            "client_id": os.environ["AZURE_CLIENT_ID"],
            "grant_type": "client_credentials",
            "scope": "https://api.anthropic.com/.default",
            "client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
            "client_assertion": federated_token,
        },
    )
    response.raise_for_status()
    return response.json()["access_token"]


client = anthropic.Anthropic(
    credentials=WorkloadIdentityCredentials(
        identity_token_provider=fetch_entra_token_via_federation,
        federation_rule_id=os.environ["ANTHROPIC_FEDERATION_RULE_ID"],
        organization_id=os.environ["ANTHROPIC_ORGANIZATION_ID"],
        service_account_id=os.environ["ANTHROPIC_SERVICE_ACCOUNT_ID"],
        workspace_id=os.environ.get("ANTHROPIC_WORKSPACE_ID"),
    ),
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello from Azure"}],
)
print(message.content[0].text)

В качестве альтернативы зарегистрируйте OIDC-издатель вашего кластера AKS напрямую в Anthropic и пропустите шаг через Entra. Этот подход описан в разделе Kubernetes.

Проверка настройки

Из вашего ресурса Azure выполните показанный ранее обмен через cURL и убедитесь, что POST /v1/oauth/token возвращает 200 с полем access_token, начинающимся с sk-ant-oat01-, и значением expires_in в секундах. При ошибке 400 invalid_grant см. раздел Устранение неполадок при неудачном обмене; наиболее частая причина на стороне Azure — несовпадение между зарегистрированным вами issuer_url и утверждением iss в декодированном токене. Они должны совпадать точно. Для токенов управляемого удостоверения значение iss — это либо https://login.microsoftonline.com/<TENANT_ID>/v2.0, либо https://sts.windows.net/<TENANT_ID>/.

Ограничение области действия правила

Утверждение oid — это GUID управляемого удостоверения, и у него нет стабильного префикса. subject_prefix с * соответствует произвольным удостоверениям в арендаторе, поэтому любая рабочая нагрузка, обладающая управляемым удостоверением, сможет получить федеративный токен Anthropic.

Ограничьте блок match правила до минимально необходимой области, подходящей для вашего сценария:

  • Сопоставляйте oid как точное значение: задайте claims.oid равным полному идентификатору объекта управляемого удостоверения и никогда не используйте subject_prefix для токенов Azure.
  • Фиксируйте tid как дополнительный уровень защиты: URL издателя уже фиксирует вашего арендатора, но добавление claims.tid защищает от дрейфа конфигурации, если запись издателя будет позднее изменена.
  • Фиксируйте аудиторию: задайте audience равным https://api.anthropic.com, чтобы токены, выпущенные для других ресурсов, отклонялись.
  • Используйте отдельное правило для каждого управляемого удостоверения: создавайте по одному правилу на удостоверение, а не одно правило, авторизующее несколько, чтобы можно было отозвать доступ одной рабочей нагрузки, не затрагивая остальные.

Дальнейшие шаги

  • Ознакомьтесь с полной моделью конфигурации в разделе Workload Identity Federation.
  • См. руководства по провайдерам для AWS, Google Cloud, GitHub Actions и Kubernetes.
  • О переменных окружения, файлах профилей и приоритете учётных данных см. в справочнике по WIF.

Was this page helpful?

  • Предварительные требования
  • Настройка Azure
  • Утверждения токена
  • Настройка Anthropic
  • Получение и использование токена
  • В AKS с Entra Workload Identity
  • Проверка настройки
  • Ограничение области действия правила
  • Дальнейшие шаги