Технологии

«Одна подписка, три среды»: AWS показала, как развести доступ к Claude Platform on AWS

AWS Machine Learning Blog 1 октября опубликовал пошаговое руководство по доступу к Claude Platform on AWS из трёх сред — продакшена в AWS, ноутбуков разработчиков и внешних сервисов и CI/CD, — с общей подпиской и изоляцией на уровне рабочих пространств: кросс-аккаунтный SigV4, ключ API, ограниченный рабочим пространством, и OIDC-федерация для внешних нагрузок.

«Одна подписка, три среды»: AWS показала, как развести доступ к Claude Platform on AWS

Какая задача разбирается

Публикация описывает типовую ситуацию: инференс Claude Platform on AWS (CPonAWS) нужен сразу из трёх мест — продакшен-нагрузок в AWS, ноутбуков разработчиков для локальных прогонов и внешних сервисов на других облаках или в CI/CD на собственных мощностях.

Требования к аутентификации у этих сред разные, но подписка должна оставаться одна, а трафик продакшена и разработки — изолированным на уровне рабочих пространств; для дополнительных сред AWS советует заводить отдельное рабочее пространство на команду или нагрузку и повторять шаблон кросс-аккаунтных ролей для каждого.

Архитектура: выделенный аккаунт AI Services

Основа схемы — отдельный связанный аккаунт AI Services внутри организации: он владеет подпиской, рабочими пространствами, ключами API и кросс-аккаунтными ролями, а рабочие аккаунты не касаются подписки напрямую, а берут роли в AI Services для вызовов инференса.

В результате получается структура из трёх аккаунтов: плательщик (он же управляющий) для биллинга и управления, аккаунт AI Services с подпиской CPonAWS и рабочими пространствами и один или несколько рабочих аккаунтов, потребляющих инференс через кросс-аккаунтные роли.

Три пути доступа

Первый путь — для нагрузок в AWS: под в Amazon EKS в рабочем аккаунте принимает роль в аккаунте AI Services и делает вызовы инференса, подписанные SigV4, без хранения ключей API и без секретов, которые нужно ротировать.

Для этого в аккаунте AI Services создаётся кросс-аккаунтная роль с доверием к роли пода и политикой, где действие CreateInference ограничено ARN продакшен-рабочего-пространства: эта роль не может обратиться ни к рабочему пространству разработки, ни к любому другому в аккаунте.

Второй путь — для ноутбуков разработчиков: долгоживущий ключ API, привязанный к рабочему пространству разработки, который используется локально со стандартным SDK Anthropic.

Здесь есть подвох, о котором AWS предупреждает прямо: по умолчанию у служебного IAM-пользователя сгенерированного ключа (AeaApiKey-*) прикреплена управляемая политика AnthropicLimitedAccess, дающая доступ ко всем рабочим пространствам, поэтому её нужно отозвать и заменить встроенной политикой только на нужное рабочее пространство и на получение токена.

Ключ при этом самодостаточен: он работает из любого аккаунта AWS и вообще из не-AWS окружения, поэтому хранить его следует в защищённом хранилище секретов.

Третий путь — для внешних нагрузок: рабочие процессы в других облаках, кластерах Kubernetes вне AWS и пайплайнах CI/CD аутентифицируются через OIDC, получают временные учётные данные AWS, а из них — короткоживущий токен, и вызовы инференса идут вообще без постоянных учётных данных.

Как проверяется изоляция

AWS предлагает проверять разграничение практикой: разработчику даётся отдельный шаг с попыткой обратиться ключом разработки к продакшен-рабочему-пространству.

Ожидаемый результат — отказ в доступе с ошибкой прав; если ключ всё-таки прошёл в продакшен, публикация советует вернуться к шагу с политикой и убедиться, что управляемая политика действительно откреплена.

Детали, которые AWS называет важными

Регион рабочего пространства определяет адрес API, но не то, где выполняется инференс: географию инференса настраивают отдельно в разделе Security консоли Claude, где сейчас доступны варианты «US» и «Global routing».

Короткоживущие ключи привязаны к региональной границе жёстче: токен работает только против того регионального эндпоинта, на котором был сгенерирован, тогда как долгоживущие ключи API регионом не ограничены.

Для OIDC-роли есть отдельная оговорка: действие CallWithBearerToken должно быть разрешено на ресурсе «*», иначе генерация токенов перестанет работать целиком, а ограничение на рабочее пространство остаётся на CreateInference — именно из него сгенерированный токен наследует границы.

Сгенерированный токен живёт один час — срок настраивается, максимум 12 часов, — и после генерации он становится автономным bearer-credential: внешней нагрузке AWS-учётные данные больше не нужны, но для постоянно работающих сервисов авторы советуют обновлять токен заранее.

До и после внедрения

Из предварительных условий: организация в AWS Organizations с аккаунтом плательщика и связанными аккаунтами под подписку и под нагрузку, AWS CLI v2 с именованными профилями для обоих аккаунтов и Python 3.12+ с пакетами anthropic[aws], boto3 и token-generator-for-aws-external-anthropic.

Для тех, кто только оценивает схему, в руководстве есть отдельный раздел с уборкой: удаление ключей API и служебных IAM-пользователей, удаление ролей и OIDC-провайдера, удаление секрета и отмена подписки через AWS Marketplace.

Для продакшена AWS советует два шага: включить события данных AWS CloudTrail для сервиса aws-external-anthropic, чтобы получить аудит каждого вызова с указанием того, кто его сделал, и разметить рабочие пространства тегами вроде team:payments и environment:prod, активировав их как теги распределения затрат, — после активации, на которую уходит 24–48 часов, расходы на Claude можно фильтровать в Cost Explorer по проектам, командам и средам.

Первоисточники

  1. AWS Machine Learning Blog — «Implementing Multi-Environment Access for Claude Platform on AWS» (Andrea Gallo, Ayan Ray, 1 октября 2026)