Шлюз Claude apps предназначен для организаций, которые должны — или предпочитают — маршрутизировать вывод через своего поставщика облачных услуг, например для соответствия требованиям резидентности данных. Если у вас нет этого требования и вы хотите получить доступ к другим функциям, таким как подготовка SCIM или Claude Code в веб-версии и мобильных приложениях, Claude Enterprise может быть лучшим вариантом. Полное сравнение всех методов развертывания см. на странице доступности функций.
claude, поэтому тот же исполняемый файл, который запускает Claude Code на ноутбуке, запускает сервер шлюза с помощью claude gateway --config gateway.yaml.
На этой странице рассматривается:
- Почему Claude apps gateway, что он добавляет по сравнению с самостоятельным запуском и когда что-то другое подходит лучше
- Быстрый старт с предварительными требованиями, который переводит шлюз от нуля к вошедшему разработчику
- Подключение разработчиков, включая установку URL шлюза через управляемые параметры
- Доступность и ограничения, охватывающие какие функции Claude Code работают через шлюз и что поддерживает сервер
Почему Claude apps gateway
Обзор шлюза охватывает, что делает шлюз и почему вы бы его запустили. Claude apps gateway — это собственный шлюз Anthropic, встроенный в двоичный файлclaude и протестированный вместе с каждым выпуском Claude Code, поэтому он пересылает заголовки и поля запроса, которые отправляет Claude Code, без того, чтобы операторы поддерживали отдельный список разрешений. После развёртывания он даёт вам:
- Учётные данные: ключ API вышестоящего уровня или учётные данные облака существуют только в вашей инфраструктуре. Разработчики аутентифицируются с помощью корпоративного SSO и получают краткосрочные токены-носители, поэтому отключение происходит в вашем IdP. Отключите пользователя, и его доступ к шлюзу истекает в течение времени жизни сеанса, по умолчанию один час.
- Контроль доступа: ваши группы IdP сопоставляются со списками разрешённых моделей и политиками управляемых параметров. Шлюз обеспечивает доступ к модели на стороне сервера, отклоняя запросы для неразрешённых моделей, и выбирает политику управляемых параметров каждой группы, которую CLI применяет на уровне управляемых параметров. Разные команды получают разные модели, инструменты и разрешения, и разработчик не может переопределить то, что его политика блокирует.
- Доставка параметров: шлюз доставляет управляемые параметры подписанным клиентам сам, занимая место параметров, управляемых сервером из консоли администратора claude.ai.
- Телеметрия: каждое настроенное назначение получает метрики OpenTelemetry Protocol (OTLP) с подсчётом токенов, моделью, идентификацией пользователя и задержкой по умолчанию, с журналами и трассировками как дополнительные параметры для каждого назначения.
- Маршрутизация вышестоящего уровня: клиенты говорят API Anthropic Messages с шлюзом, и шлюз переводит для каждого вышестоящего уровня, будь то Amazon Bedrock, Claude Platform on AWS, Agent Platform Google Cloud, Microsoft Foundry или API Anthropic, с отказоустойчивостью между ними. Вы можете менять регионы, поставщиков или порядок отказоустойчивости без того, чтобы разработчики замечали или переконфигурировали.
Плоскость данных самого шлюза не отправляет ничего в инфраструктуру Anthropic, если API Anthropic не является настроенным вышестоящим уровнем. Вы контролируете, куда идут телеметрия, журналы аудита, управляемые параметры и идентификация IdP ваших разработчиков, и шлюз не отправляет ни одно из них в Anthropic. Для оставшегося трафика процесс CLI может отправлять и как его закрыть, см. Позиция соответствия.
Другие реализации шлюза
Если вы уже запускаете шлюз LLM или шлюз API, который соответствует вашим потребностям, продолжайте его использовать; Другие шлюзы LLM охватывает конфигурирование Claude Code против него. Справочник протокола шлюза документирует, что Claude Code ожидает от любого шлюза: конечные точки, которые он вызывает, заголовки и поля тела для пересылки, и что перестаёт работать, когда они удаляются. Работающий Claude apps gateway также служит собственной ссылкой на протокол вGET /protocol, которая описывает конечные точки, которые он предоставляет клиентам Claude Code: вход SSO, вывод, доставка управляемых параметров, обнаружение модели и телеметрия. Получите его с помощью curl https://claude-gateway.internal.example.com/protocol из любого развёрнутого шлюза, такого как тот, который производит быстрый старт ниже.
Критические изменения протокола объявляются заранее, но неопределённая обратная совместимость не гарантируется.
Быстрый старт
Этот быстрый старт проходит минимальный путь: зарегистрируйте клиент OAuth в вашем IdP, напишитеgateway.yaml, запустите шлюз вместе с Postgres с помощью Docker Compose и проверьте вход от конца к концу. Он использует вышестоящий уровень Amazon Bedrock; Claude Platform on AWS, Agent Platform Google Cloud, Microsoft Foundry и API Anthropic одинаково поддерживаются путём замены блока upstreams, как показано в справочнике конфигурации. В конце у вас есть шлюз, к которому разработчик может выполнить /login.
Развёртывайте в вашей частной сети. Claude Code подключается только к шлюзу, адрес которого является частным. Это охранник безопасности, потому что доверенный шлюз может отправлять параметры, которые запускают команды на машинах разработчиков. Поместите шлюз за внутренним балансировщиком нагрузки или VPN и дайте ему имя хоста, которое разрешается только в частные IP-адреса. Если ваша внутренняя сеть пронумерована из общедоступного пространства IPv4, которым владеет ваша организация, см. Разрешить шлюз на общедоступном адресном пространстве, которым вы владеете.
Предварительные требования
Имейте это на месте перед началом:Шаги
1
Зарегистрируйте клиент OAuth в вашем IdP
Сначала решите имя хоста шлюза, потому что URI перенаправления должен ему соответствовать. Создайте новое веб-приложение OIDC и установите URI перенаправления на
https://claude-gateway.<your-domain>/oauth/callback, где хост — это то же значение, которое вы установили как listen.public_url на шаге 3. Запишите client_id и client_secret. Инструкции для каждого IdP находятся в Настройка поставщика удостоверений.2
Подготовьте базу данных PostgreSQL
Любой Postgres 14 или позже работает, включая самый маленький управляемый уровень. Шлюз запускает свои собственные миграции схемы при загрузке, поэтому пользователю базы данных нужны права для создания и изменения таблиц; см.
store.3
Напишите gateway.yaml
Секреты читаются через расширение Эта конфигурация достаточна для работающего цикла входа с каталогом моделей Bedrock по умолчанию. После того как она запущена, добавьте RBAC для каждой группы и управляемые параметры через
${ENV_VAR}, поэтому сам файл может находиться в системе управления версиями. Используйте имя хоста public_url, которое разрешается в частный IP в вашей сети, потому что /login отклоняет общедоступные адреса. Минимальная конфигурация имеет пять разделов, и каждое другое поле имеет значение по умолчанию:gateway.yaml
managed.policies, телеметрию fan-out через telemetry, и многоуровневую отказоустойчивость, ARN подготовленной пропускной способности или не-US регионы через models.Вышестоящий уровень Amazon Bedrock нуждается в принципе AWS с
bedrock:InvokeModel и bedrock:InvokeModelWithResponseStream как на ARN inference-profile/us.anthropic.*, так и на базовых ARN foundation-model/anthropic.*. Он также нуждается в форме одноразового использования Anthropic, отправленной для учётной записи из каталога моделей консоли Bedrock.Предоставьте учётные данные с IRSA на EKS, ролью задачи ECS или профилем экземпляра EC2, а не статическими ключами. Справочник upstreams содержит полные детали IAM, матрицу учётных данных между облаками и блоки auth для других поставщиков.4
Запустите его
Создайте образ контейнера вокруг двоичного файла Шлюз — это один двоичный файл Linux, который читает конфигурацию, подключается к Postgres и применяет его миграции схемы, запускает обнаружение OIDC против вашего IdP, создаёт клиентов вышестоящего уровня и начинает слушать.Загрузка закрывается для конфигурации, подключения Postgres, обнаружения OIDC и конструкции клиента вышестоящего уровня. Если какой-либо из них недоступен или неправильно настроен, шлюз выходит с ошибкой, а не служит трафику в деградированном состоянии.Успешная загрузка не проверяет путь вывода, потому что учётные данные экземпляра Bedrock и Agent Platform разрешаются при первом запросе, а не при загрузке.Смотрите stderr для последовательности загрузки. Строки журнала используют формат Шлюз также регистрирует предупреждение, что
claude, который соответствует требованиям образа, затем запустите его вместе с Postgres. Файл Compose ссылается на образ как registry.example.com/claude-gateway:2.1.198; замените свой собственный реестр и тег образа:docker-compose.yaml
[gateway] <timestamp> <level> <message>, события аудита — это однострочный JSON с полем evt, и баннер запуска, опущенный ниже, печатается между строками миграции и прослушивания. Свежая база данных печатает одну строку migration N applied на каждую миграцию схемы; уже перенесённая база данных не печатает ничего. Вы должны увидеть, по порядку:access_control.allow_cidrs пусто. Это ожидается здесь, потому что ничто не ограничивает, какие адреса клиентов обслуживает шлюз, пока вы не установите список разрешений. Справочник access_control содержит рекомендуемые диапазоны.Если загрузка выходит перед строкой claude gateway listening on, последняя строка stderr называет проблему:- недоступный Postgres
- роль Postgres без разрешения DDL
- недоступный или недействительный документ обнаружения OIDC
- нарушение схемы конфигурации с путём нарушающего поля
claude gateway --config gateway.yaml. Установите public_url на происхождение входа и привяжите listen к адресу loopback или внутри кластера.5
Проверьте поверхность аутентификации
Три проверки подтверждают, что шлюз может аутентифицировать реального пользователя перед тем, как вы передадите его разработчику.Примеры используют общедоступный URL шлюза; для локальной установки Compose без входа замените Ответ включает дополнительные поля, такие как В-третьих, протестируйте ветку браузера, открыв
http://localhost:8080 в первых двух проверках. Третья проверка открывает verification_uri_complete, который построен из public_url, поэтому для локального Compose установите public_url: http://localhost:8080 в gateway.yaml и добавьте http://localhost:8080/oauth/callback как второй URI перенаправления на клиент OAuth из шага 1, потому что шлюз строит IdP redirect_uri из public_url. Ссылка проверки затем открывается в вашем локальном браузере.В Windows PowerShell запустите curl.exe; голый curl — это псевдоним для Invoke-WebRequest и отклоняет эти флаги.Сначала получите документ обнаружения, который подтверждает, что шлюз работает, конфигурация действительна и все проверки загрузки прошли:response_types_supported и scopes_supported.Во-вторых, запросите авторизацию устройства, которая подтверждает, что поток входа устройства работает и Postgres доступен и доступен для записи:verification_uri_complete в браузере и подтвердив код. Вы должны быть перенаправлены на страницу входа вашего IdP и после входа приземлиться обратно на шлюз с подтверждением входа.Используйте первую неудачную проверку для определения проблемы:- Первая проверка не удаётся: загрузка не завершена; проверьте stderr
- Вторая проверка не удаётся: Postgres недоступен из шлюза или роль не может писать; проверьте строку подключения и разрешения
- Третья проверка не достигает IdP: проверьте, что URI перенаправления IdP точно соответствует
https://<gateway>/oauth/callback - Третья проверка достигает IdP, но отскакивает с ошибкой: прочитайте журнал аудита шлюза, который записывает каждый отказ в аутентификации с причиной, такой как
email domain not allowed
6
Войдите разработчик
Этот последний шаг происходит на машине разработчика, а не на сервере. Установите
forceLoginMethod на "gateway" и forceLoginGatewayUrl на public_url вашего шлюза в файле управляемых параметров этой машины, затем запустите /login, нажмите Enter на экране Cloud gateway и завершите вход в браузер. Установка URL шлюза ниже охватывает распределение обоих ключей в масштабе.Подключение разработчиков
Разработчики подключаются со своих собственных ноутбуков с одним входом в браузер, используя свою корпоративную рабочую учётную запись. Им не нужна учётная запись claude.ai, ключ API или подписка, потому что запросы к модели идут через шлюз, используя учётные данные вышестоящего уровня организации. Подключение управляется управляемыми параметрами на стороне клиента, которые вы отправляете через MDM, поэтому нет ручной настройки на стороне разработчика; этот раздел охватывает то, что настраивает администратор. CLI отпечатывает сертификат TLS листа шлюза при первом подключении и закрепляет его для каждого имени хоста. Он проверяет этот отпечаток снова при входе, при молчаливом обновлении сеанса и при получении управляемых параметров, в то время как запросы вывода используют стандартную проверку TLS без отпечатка. Запросы, маршрутизируемые через прокси HTTPS, пропускают проверку отпечатка, поэтому добавьте хост шлюза вNO_PROXY, чтобы сохранить их прямыми.
Опубликуйте ожидаемый отпечаток SHA-256 вместе с URL шлюза, чтобы разработчики имели что-то для сравнения. Подсказка /login показывает первые 16 символов отпечатка как строчные шестнадцатеричные без двоеточий. Чтобы вывести полный отпечаток в этой форме из файла сертификата, выполните:
email в своём ответе токена для обозначения учётной записи, которую использовал вход. Когда это происходит, разработчик подтверждает учётную запись перед тем, как Claude Code сохранит учётные данные. После подтверждённого входа /status показывает учётную запись.
Подтверждение требует Claude Code v2.1.275 или позже на машине разработчика; клиент ниже этой версии игнорирует поле. Сервер шлюза в двоичном файле claude не возвращает поле, поэтому его входы завершаются без подтверждения.
После входа разработчика средство выбора модели показывает модели в списке разрешённых availableModels разработчика. Управляемые параметры применяются при запуске и обновляются ежечасно, и телеметрия маршрутизируется в ваш сборщик.
Сеансы молча обновляются перед истечением ttl_hours. Когда обновление не удаётся после отключения IdP, Claude Code запрашивает у разработчика повторный вход.
Установка URL шлюза
Три ключа идут в файл управляемых параметров для каждой ОС, который вы развёртываете через MDM или непосредственно на диск.forceLoginMethod и forceLoginGatewayUrl открывают /login прямо на экране Cloud gateway с заполненным URL, и parentSettingsBehavior: "merge" позволяет Claude Desktop доставлять список разрешённых исходящих соединений шлюза в сеансы Claude Code, которые он запускает, как объяснено в Доставка политики в сеансы Claude Desktop:
CLAUDE_CODE_USE_BEDROCK, не нуждаются во входе в шлюз.
Разработчик не может настроить это вручную. В средстве выбора входа нет опции шлюза, и forceLoginGatewayUrl игнорируется в собственных файлах параметров разработчика. forceLoginMethod один, без URL, оставляет разработчика с сообщением “Свяжитесь с администратором IT”. Ключи входа принадлежат файлу, который вы отправляете на машины, а не в блок managed.policies[].cli шлюза, который достигает только уже подключённых клиентов.
Разрешение шлюза на адресном пространстве, которым вы владеете
Некоторые организации нумеруют свою внутреннюю сеть из блока публичного IPv4, которым они владеют, например из собственного адресного пространства оператора или устаревшего/8, поэтому их шлюз не может иметь приватный адрес. Перечислите эти блоки в управляемом параметре gatewayInternalNetworks. /login затем принимает шлюз внутри перечисленного блока, когда машина разработчика подключается к нему с адреса внутри того же блока. Это требует Claude Code v2.1.268 или позже на машине разработчика; более ранние версии игнорируют ключ и применяют правило приватного адреса.
Добавьте ключ в тот же источник управляемых параметров, что и ключи входа: файл управляемых параметров, профиль MDM или политика реестра. Claude Code игнорирует его в пользовательских, проектных и управляемых на сервере параметрах.
Этот пример объявляет один блок. Замените 203.0.113.0/24 на ваш собственный блок. Это диапазон документации, и Claude Code отказывает в нём.
/login перед тем, как он контактирует с каким-либо шлюзом:
- Каждая запись — это блок IPv4, написанный как его первый адрес и префикс от
/8до/32. - Список содержит максимум четыре блока, и никакие два не перекрываются.
- Никакой блок не перекрывает приватное адресное пространство:
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.0/8,169.254.0.0/16и100.64.0.0/10./loginуже принимает шлюз там без этого ключа. - Никакой блок не перекрывает пространство, которое никогда не является сетью организации:
198.18.0.0/15и192.0.0.0/24, которые VPN и NAT64 клиенты держат как локальные адреса; диапазоны документации192.0.2.0/24,198.51.100.0/24и203.0.113.0/24; и зарезервированные диапазоны0.0.0.0/8,192.88.99.0/24и мультикаст224.0.0.0/4. Вы можете объявлять блоки внутри240.0.0.0/4, которые некоторые крупные сети используют как внутреннее одноадресное пространство.
managed-settings.json и его файлов drop-in managed-settings.d/ объединяются в один список, и эти ограничения применяются к объединённому списку. Чтобы сузить блок, замените его запись, а не добавляйте вторую, перекрывающуюся в drop-in; /login отказывает в перекрытии.
Если запись нарушает правило или значение не является списком строк, Claude Code отказывает в каждом новом входе в шлюз на этой машине и называет проблему в сообщении. Вход в шлюз на приватном адресе также не удаётся, и существующие входы продолжают работать. Попробуйте значение на одной машине перед развёртыванием. Claude Code также перечисляет неправильно типизированное значение среди неправильных управляемых параметров, которые он сообщает.
С правильным списком /login применяет три проверки к шлюзу, чей адрес находится внутри перечисленного блока:
- Каждый адрес, на который разрешается имя хоста шлюза, находится внутри того же блока. Claude Code отказывает имени, которое также имеет записи вне него, включая приватные и IPv6 адреса.
- Машина разработчика подключается изнутри того же блока. Claude Code отказывает машине за NAT, внутри контейнера или WSL2, или на VPN, чей пул адресов находится вне блока, и называет адрес, с которого машина подключилась.
- Подключение прямое. Если
HTTPS_PROXYприменяется к хосту шлюза,/loginотказывает и называет записьNO_PROXYдля добавления.
Доставка политики в сеансы Claude Desktop
Claude Desktop запускает свои вкладки Cowork и Code, а также вкладку Chat, когда вы её включаете, на встроенных сеансах Claude Code и отправляет их запросы модели через шлюз. Он передаёт политику каждому из этих сеансов, построенную из конфигурации, которую шлюз ему предоставляет в/user/bootstrap: список разрешённых моделей, отключённые инструменты и список разрешённых исходящих соединений, полученный из блока cli согласованной политики, плюс наложение desktop.
Другие ключи cli, такие как hooks, env и правила разрешений с областью действия, такие как Bash(npm *), достигают только клиентов, которые входят через /login. Claude Desktop читает URL шлюза из своей собственной управляемой конфигурации и входит со своим собственным потоком, отдельно от ключей forceLoginMethod и forceLoginGatewayUrl в Установка URL шлюза.
Параметры, переданные запускающим процессом, являются родительскими параметрами. Claude Code игнорирует родительские параметры на любой машине, которая имеет развёрнутый администратором управляемый источник, если только источник, который доставляет политику, не устанавливает parentSettingsBehavior: "merge".
Какие машины нуждаются в согласии
Машины, которые только запускают Claude Desktop, нуждаются в нём. Claude Desktop применяет список моделей и список отключённых инструментов к встроенным сеансам сам, но список разрешённых исходящих соединений достигает их только как родительские параметры, в форме правил доменовWebFetch и правил сетевой изоляции. Без согласия эти сеансы работают без ограничения исходящих соединений, и ничто вас не предупредит. Шлюз по-прежнему отклоняет запросы вывода для моделей, которые политика не предоставляет.
Список разрешённых маркетплейсов плагинов также достигает встроенных сеансов только как родительские параметры. Когда вы отключаете пользовательские маркетплейсы плагинов в управляемой конфигурации Claude Desktop, Claude Desktop 2.16120.0 или позже скрывает маркетплейсы, которые ваша организация не предоставила, и отказывает в установках из них. Чтобы остановить встроенные сеансы от загрузки плагинов, уже установленных из этих маркетплейсов, он отправляет им список strictKnownMarketplaces как родительские параметры. Без согласия Claude Code игнорирует этот список, и эти плагины продолжают загружаться.
Машины, где разработчики входят через /login, не нуждаются в нём; каждый сеанс Claude Code получает свою политику из шлюза.
Флоты, чьи policyHelper предоставляют управляемые параметры, не могут использовать это: Claude Code никогда не объединяет родительские параметры на этих флотах, потому что он читает управляемые параметры только из выходных данных помощника.
Установка согласия
Развёртывайте фрагмент управляемых параметров из Установка URL шлюза, отразите его в любом источнике на стороне клиента, который превосходит файл, затем проверьте.1
Развёртывание согласия в файле управляемых параметров
Фрагмент выше уже включает
parentSettingsBehavior: "merge", поэтому файл, который вы отправляете на машины, несёт его.2
Отражение фрагмента в любом источнике, который превосходит файл
Claude Code читает
parentSettingsBehavior только из выбранного источника. Добавление любого ключа политики в источник может сделать этот источник выбранным, поэтому в источнике на стороне клиента отразите весь фрагмент, а не только parentSettingsBehavior. Управляемые параметры на стороне клиента охватывает флоты, которые доставляют политику через Group Policy или профили конфигурации. Plist управляемых предпочтений на macOS или политика HKLM на Windows превосходит файл managed-settings.json, и удалённые управляемые параметры шлюза превосходят оба, поэтому на машинах, которые входят в шлюз, также установите parentSettingsBehavior в блоке cli политики шлюза.3
Проверка выбранного источника
На машине, которая только запускает Claude Desktop, вызовите
resolveSettings() Agent SDK и прочитайте policyOrigin в записи managed в его списке sources. Значение называет выбранный источник на стороне клиента, plist, hklm или file, который является источником, который должен нести фрагмент. Встроенные сеансы Claude Desktop не получают политику шлюза, поэтому блок cli шлюза никогда не считается выбранным источником для них.Ограничение родительских параметров
После развёртыванияparentSettingsBehavior: "merge" любой хост-процесс, который запускает Claude Code, может предоставлять родительские параметры, не только Claude Desktop, но также приложение Agent SDK или расширение IDE.
Claude Code фильтрует родительские параметры против списка разрешённых ограничивающих ключей, но некоторые разрешённые ключи могут предоставлять доступ, а не ограничивать его. Если вы не установите блокировки allowManaged*Only, правила разрешения доступа и списки разрешённых изоляции, предоставленные хостом, по-прежнему применяются. Правила отказа и запроса вашей политики остаются в силе в любом случае; они оцениваются перед любым правилом разрешения.
Claude Code пересылает записи sandbox.credentials, предоставленные родителем, в упрощённой форме:
- Записи
deny: пересылаются только с ихpathилиnameи режимом. - Записи файлов с
mode: mask: пересылаются только как дозорные, как маска всего файла, чейinjectHostsявляется пустым списком, поэтому прокси никогда не подставляет реальное значение для записи, предоставленной родителем, на любой платформе. Все поля структурированного маскирования также отбрасываются, поэтому шаблон извлечения, предоставленный родителем, не может заменить более строгую маску, которую устанавливает другой источник для того же пути. - Записи
envVarsсmode: mask: не пересылаются.deny— это единственное ограничение, которое канал родителя может выразить через записиenvVars. awsPairsиsigv4: пересылаются только ограничения. Изsigv4сохраняются только значенияdeny, и родитель, который определяет блокsigv4вообще, закрепляет все три формы запроса,streaming,presignedиsigv4a, наdeny. ПараawsPairsникогда не пересылается в форме, которая может переподписать; пара, которая называет одну из обычных переменных AWS, заменяется инертной записью, которая сохраняет автоматическое спариваниеAWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEYиAWS_SESSION_TOKENподавленным.
Развёртывание блокировок
Чтобы сохранить родительские параметры как можно ближе к ограничению, как поддерживает фильтр, добавьте все пять блокировокallowManaged*Only и списки разрешённых, которые они управляют, в те же источники, что и согласие на объединение:
cli политики и сохраняйте этот файл развёрнутым, потому что машины, которые никогда не подключаются, включая те, которые только запускают Claude Desktop, получают свою политику только из файла.
Поведение блокировки между источниками
Установка одной блокировки не ограничивает другие; каждый ключ задокументирован в справочнике параметров. Из источника администратора ниже победителя две блокировки изоляции по-прежнему применяются, иallowManagedPermissionRulesOnly по-прежнему блокирует правила разрешения, предоставленные родителем, и additionalDirectories. На Claude Code v2.1.273 или позже блокировка MCP сервера также применяется из источника ниже победителя, и пока она включена, управляемый список allowedMcpServers поступает из источника администратора с наивысшим приоритетом, который устанавливает один.
Блокировка hooks и эффект allowManagedPermissionRulesOnly на собственные правила разработчика нуждаются в выигрывающем источнике по умолчанию; в соответствии с согласием на объединение managedSourcesBehavior в как Claude Code объединяет управляемые источники, Claude Code применяет самое строгое значение, которое любой источник устанавливает для каждой блокировки. На флотах policyHelper блокировки читаются только из выходных данных помощника.
Каждая блокировка заставляет Claude Code игнорировать собственные записи разработчика для этого параметра, поэтому включите списки разрешённых вашей организации рядом с блокировками:
- Сетевые домены: блокировка с пустым списком управляемых доменов блокирует весь исходящий трафик в изоляции.
- MCP серверы: блокировка без
allowedMcpServersв любом источнике администратора или в параметрах, предоставленных родителем, загружает каждый сервер, которыйdeniedMcpServersне блокирует. - Пути чтения: записи
allowReadтолько повторно разрешают пути внутри регионовdenyRead, поэтому спаривайте их с управляемымdenyRead.
Параметры, которые блокировки не охватывают
Шесть параметров, предоставленных родителем, проходят фильтр даже со всеми пятью установленными блокировками. В соответствии с параметром первого выигрыша по умолчанию, значение администратора, которое блокирует родителя, находится в источнике администратора с наивысшим приоритетом, кромеallowedMcpServers пока блокировка MCP сервера включена. В соответствии с согласием на объединение managedSourcesBehavior, как Claude Code объединяет управляемые источники говорит, какое значение источника применяется вместо этого.
forceLoginOrgUUID: Claude Code соблюдает значение, предоставленное родителем, когда источник администратора с наивысшим приоритетом не устанавливает UUID организации. Вход в шлюз не проверяет этот ключ. UUID организации в источнике администратора с наивысшим приоритетом блокирует значение родителя и является тем, который Claude Code применяет.allowedMcpServers: Claude Code соблюдает список разрешённых, предоставленный родителем, когда источник администратора с наивысшим приоритетом не устанавливает один.allowManagedMcpServersOnlyне блокирует его, потому что блокировка применяет список, который выигрывает, как управляемое значение, включая список, предоставленный родителем, когда источник администратора с наивысшим приоритетом не устанавливает один. Список в источнике администратора с наивысшим приоритетом блокирует список родителя и является списком, который Claude Code применяет, поэтому установитеallowedMcpServersтам, рядом с блокировкой. До v2.1.223 значение для любого ключа в любом источнике администратора блокировало значение родителя.availableModels: Claude Code соблюдает список моделей, предоставленный родителем, когда выигрывающий управляемый источник не устанавливает один. Если ваш флот ограничивает модели, установитеavailableModelsв выигрывающем источнике.strictKnownMarketplaces: Claude Code соблюдает список разрешённых маркетплейсов плагинов, предоставленный родителем, когда выигрывающий управляемый источник не устанавливает один. Claude Desktop 2.16120.0 или позже отправляет один, когда его управляемая конфигурация отключает пользовательские маркетплейсы плагинов. Если ваш флот ограничивает маркетплейсы, установитеstrictKnownMarketplacesв выигрывающем источнике. Требует Claude Code v2.1.282 или позже.blockedMarketplaces: список блокировки маркетплейсов, предоставленный родителем, проходит и добавляется к любому списку блокировки, который устанавливает управляемый источник, так как список блокировки может только дополнительно ограничить. Требует Claude Code v2.1.282 или позже.strictPluginOnlyCustomization: этот ключ проходит фильтр независимо от любой блокировки, и он заставляет Claude Code игнорировать собственную настройку разработчика, включая защитные hooks. Никакая блокировка не блокирует его.
Подключение Claude Desktop
Claude Desktop подключается к тому же шлюзу через другой ключ MDM: установитеbootstrapUrl в управляемой конфигурации Claude Desktop на <listen.public_url>/user/bootstrap, и согласьте политику пользователя с ключом desktop. Наложение Claude Desktop охватывает обе части. Требует Claude Code v2.1.203 или позже на сервере шлюза.
Claude Desktop подписывает разработчика через поставщика идентификации шлюза с тем же шагом SSO браузера, затем получает свою конфигурацию из шлюза вместо Anthropic. Доступ к модели и политика следуют тем же правилам для каждой группы, что и CLI. Разработчик, который использует как CLI, так и Claude Desktop, входит в каждый отдельно; сеанс шлюза не является общим между ними.
После подключения Claude Desktop отправляет запросы модели из каждой включённой вкладки через шлюз. Он показывает вкладки Cowork и Code по умолчанию. Чтобы включить вкладку Chat также, установите chatTabEnabled на true в управляемой конфигурации Claude Desktop, или в блоке desktop политики на шлюзе, работающем Claude Code v2.1.227 или позже.
Конвейеры CI и удалённые машины
Нет потока токена сервиса для автоматических конвейеров. Вход шлюза всегда запускает поток устройства браузера, поэтому задача CI без разработчика для одобрения входа не может аутентифицироваться; настройте их непосредственно против вашего поставщика. После входа разработчика каждый сеанс Claude Code на этой машине использует сеанс шлюза, включая неинтерактивные запускиclaude -p и сеансы, запущенные Agent SDK. Claude Code применяет политику шлюза к каждому из них.
Поток устройства отделяет опрашивающий CLI от одобряющего браузера, поэтому удалённый ящик разработки без дисплея всё ещё работает: разработчик запускает /login по SSH на удалённой машине и открывает ссылку проверки в браузере на своём ноутбуке.
Что применяется к разработчикам
Эти гарантии применяются к каждому сеансу, подписанному через/login. Встроенные сеансы, которые запускает Claude Desktop, получают свою политику, как описано в Доставка политики в сеансы Claude Desktop, и пункт телеметрии говорит, куда идут их экспорты.
- Доступ к модели: запросы для моделей, которые политика не предоставляет, возвращают 400, и средство выбора
/modelфильтруется в список разрешённыхavailableModelsполитики. УстановитеenforceAvailableModels: trueв политике, чтобы опция Default разрешалась в модель внутриavailableModelsвместо встроенного значения по умолчанию Claude Code; без неё Default остаётся выбираемым и отклоняется во время запроса, если эта модель не предоставлена. - Назначение телеметрии: в сеансах, подписанных через
/login, CLI отправляет свои экспорты OTLP/HTTP в шлюз, а не в локально установленныйOTEL_EXPORTER_OTLP_ENDPOINT, если политика не называет ваш сборщик как конечную точку. Шлюз пересылает экспорты, которые он получает, в назначения вtelemetry.forward_to.- Во встроенных сеансах которые запускает Claude Desktop, CLI отправляет свои экспорты в настроенный
OTEL_EXPORTER_OTLP_ENDPOINT. CLI прикрепляет токен сеанса шлюза к этим экспортам только когда эта конечная точка указывает на сам шлюз. - Без настроенного назначения для сигнала шлюз принимает и отбрасывает его.
- Если вы уже собираете телеметрию Claude Code напрямую, добавьте ваш сборщик как назначение
forward_to, или назовите его в политике, чтобы пропустить ретрансляцию.
- Во встроенных сеансах которые запускает Claude Desktop, CLI отправляет свои экспорты в настроенный
- Учётные данные: токен шлюза — это единственное учётное данные сеанса. Профили Anthropic и любой более ранний вход claude.ai игнорируются при входе, поэтому разработчикам не нужно сначала выходить из claude.ai. Для настроенного
ANTHROPIC_API_KEY,ANTHROPIC_AUTH_TOKENилиapiKeyHelperучётного данного см. Политика администратора требует входа в Cloud gateway. - Управляемые параметры: заблокированные ключи не могут быть переопределены локально. CLI применяет политику при запуске и применяет изменения при каждом ежечасном опросе, кроме изменений, которые применяются только при следующем запуске.
- Запуск с недоступным шлюзом: подписанные сеансы выходят при запуске с ошибкой примерно через 10 секунд, а не запускаются без своих параметров.
- Запуск после завершения сеанса шлюзом: см. Применение отказа при закрытом запуске для запусков, которые открываются без входа в шлюз, и для тех, которые выходят, когда шлюз отвечает с
401. - Отключение: сеанс, чей пользователь отключён в IdP, истекает в течение
ttl_hours, когда следующее обновление не удаётся. - Выход:
/logoutудаляет учётные данные шлюза с машины разработчика.- Когда документ обнаружения шлюза объявляет
revocation_endpointна собственной схеме, хосте и порту URL шлюза,/logoutтакже отправляет сохранённые токены на эту конечную точку, чтобы шлюз мог завершить сеанс на своей стороне. Запрос является лучшим усилием, поэтому выход завершается на машине разработчика независимо от того, отвечает ли конечная точка. Отзыв требует Claude Code v2.1.275 или позже на машине разработчика. - Сервер шлюза в двоичном файле
claudeне объявляет ни один, поэтому выход из него завершает сеанс на машине разработчика только. Чтобы принудительно завершить сеансы на стороне сервера, см. Ротация секрета JWT.
- Когда документ обнаружения шлюза объявляет
Что может видеть организация
Телеметрия использования несёт идентификацию разработчика, подсчёт токенов, модель и задержку в сборщик организации. Шлюз не регистрирует и не хранит содержимое подсказки или завершения. Собирается ли более богатая телеметрия, такая как журналы и трассировки, которые могут включать команды и пути файлов, — это выбор организации для каждого назначения.Доступность и ограничения
Таблица охватывает, какие функции Claude Code работают, когда разработчики подключаются через шлюз, и что сам сервер шлюза поддерживает. Где что-то не поддерживается, столбец Notes даёт альтернативу. Шлюз доставляет значенияanthropic-beta, которые CLI отправляет каждому вышестоящему уровню, поэтому операторы не поддерживают список разрешений бета. Для Amazon Bedrock, который игнорирует заголовок, шлюз перемещает значения в поле anthropic_beta тела запроса; другие вышестоящие уровни получают заголовок как отправленный.
Следующие шаги
Быстрый старт оставляет вас с минимальной конфигурацией, работающей под Docker Compose. Чтобы пойти дальше:- Расширьте
gateway.yamlза пределы минимальной конфигурации, например, чтобы добавить RBAC для каждой группы, многоуровневую отказоустойчивость или назначения телеметрии. Справочник конфигурации охватывает каждый параметр. - Перейдите от Compose к развёртыванию в производстве на Kubernetes или Cloud Run, правильно настройте ваш IdP и проверьте модель безопасности. Руководство по развёртыванию и операциям охватывает настройку для каждого IdP, требования к образу контейнера, зонды здоровья и устранение неполадок.
- Установите ограничения расходов для отдельных разработчиков или групп, чтобы неконтролируемая рабочая нагрузка не могла потребить всё ваше обязательство. Ограничения расходов охватывает API администратора и как работает применение.
- Для полного отработанного примера на AWS с ECS Fargate или EKS, Amazon RDS и Secrets Manager см. Развёртывание на AWS.
- Для полного отработанного примера на Google Cloud с Cloud Run, Cloud SQL и Secret Manager см. Развёртывание на Google Cloud.