Saltar al contenido principal
Una implementación de la puerta de enlace de aplicaciones Claude se configura mediante un archivo YAML, convencionalmente gateway.yaml. El archivo define todo lo que hace la puerta de enlace: dónde escucha, cómo inician sesión los desarrolladores, dónde va la inferencia y qué políticas y telemetría se aplican. Esta página es la referencia para cada opción en ese archivo. Para escribir el primero, comience desde el inicio rápido, que construye una configuración mínima funcional y la ejecuta. Una vez que tenga una configuración con la que esté satisfecho, la guía de implementación cubre la containerización y el alojamiento en Kubernetes, Cloud Run o su propia plataforma. La puerta de enlace lee el archivo una vez, al iniciar, con claude gateway --config /path/to/gateway.yaml. Cada opción se valida contra un esquema al arrancar, por lo que una configuración mal formada falla al iniciar con un error a nivel de campo en lugar de en el primer uso. El ejemplo completo al final de esta página ejercita cada sección.

Estructura del archivo

Cinco secciones son requeridas. Todas las demás secciones son opcionales, y una sección omitida toma sus valores predeterminados. Las claves desconocidas fallan al arrancar, por lo que un error tipográfico aparece como un error nombrado en lugar de una configuración silenciosamente ignorada. Secciones requeridas:
  • listen: dirección de enlace, URL pública, terminación TLS
  • oidc: su proveedor de identidad (IdP), incluido emisor, cliente, mapeo de reclamaciones y quién puede iniciar sesión
  • session: los tokens portadores que emite la puerta de enlace, con secreto y duración
  • store: PostgreSQL, para concesiones de dispositivos y contadores de límite de velocidad
  • upstreams: dónde va la inferencia, ya sea Anthropic, Amazon Bedrock, Claude Platform en AWS, Agent Platform de Google Cloud o Microsoft Foundry
Secciones opcionales:
  • admin: autenticación de API de administración y retención de límites de gasto
  • enforcement: comportamiento de límite de gasto de fallo abierto o fallo cerrado
  • models y auto_include_builtin_models: lista de modelos curada por administrador e IDs por upstream
  • managed: políticas de configuración administradas por grupo de IdP
  • telemetry: reenvío OTLP a su pila de observabilidad
  • access_control, limits, timeouts, rate_limits: permitir/denegar IP, límites de tamaño de solicitud, tiempo hasta el primer byte del upstream y límites de inicio de sesión por IP

Expansión de secretos

No escriba secretos como client_secret, jwt_secret o postgres_url directamente en gateway.yaml. Haga referencia a ellos con uno de los formularios a continuación, y la puerta de enlace resuelve el valor al arrancar desde una variable de entorno o un archivo:

Secciones requeridas

listen

El bloque listen controla dónde sirve la puerta de enlace: la dirección de enlace y puerto, el origen visible externamente y la terminación TLS opcional.

oidc

El bloque oidc conecta la puerta de enlace a su proveedor de identidad y decide quién puede iniciar sesión. Nombra el emisor y cliente OAuth, mapea las reclamaciones que llevan correo electrónico y grupos, y restringe el inicio de sesión por dominio de correo electrónico o grupo. OpenID Connect (OIDC) es el protocolo SSO que la puerta de enlace utiliza con su proveedor de identidad; consulte Configuración del proveedor de identidad para saber qué registrar en el lado de IdP.

session

El bloque session forma los tokens portadores que emite la puerta de enlace después del inicio de sesión: el secreto que los firma y cuánto tiempo viven.

store

El bloque store apunta la puerta de enlace a su base de datos PostgreSQL, que contiene concesiones de dispositivos y contadores de límite de velocidad. Para desarrollo local, apunte postgres_url a un contenedor Postgres desechable, por ejemplo docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres.

upstreams

upstreams es una lista ordenada. La puerta de enlace reenvía la inferencia al primer upstream que resuelve el modelo solicitado. En 5xx, 429, 401, 403, 404, o tiempo de espera, falla al siguiente; otros 4xx no, porque esos errores son atribuibles a la solicitud en lugar del upstream. Un 401 o 403 significa que la credencial propia de la puerta de enlace falló contra ese upstream, y un 404 significa que ese upstream no sirve el modelo solicitado, por lo que un upstream posterior en la lista aún puede. La conmutación por error en 404 requiere gateway v2.1.198 o posterior. Las versiones anteriores devolvieron el primer 404 al cliente incluso cuando un upstream posterior en la lista sirvió el modelo. Múltiples upstreams del mismo proveedor deben establecer un name: distinto. Los clientes de Bedrock, Claude Platform en AWS, Agent Platform y Foundry se construyen una vez al iniciar, y sus SDK actualizan credenciales internamente, por lo que rotar credenciales en la nube no requiere un reinicio. Las claves API estáticas de Anthropic y los portadores se leen al iniciar; consulte API de Anthropic.

API de Anthropic

El upstream mínimo de Anthropic es una clave API de la Consola Claude:
Las dos formas de credencial difieren en el encabezado que envían:
  • api_key: envía x-api-key. Rótelo en la Consola Claude y actualice la variable env.
  • oauth_token: envía Authorization: Bearer. Use la forma de portador cuando su organización emita tokens de corta duración en lugar de claves API de larga duración. El portador se lee una vez al iniciar, así que actualice remontando el secreto e reiniciando.
En lugar de una clave estática o portador, puede usar Workload Identity Federation. Cree una regla de federación siguiendo la guía de Workload Identity Federation, luego monte el JWT de OIDC de su carga de trabajo como un archivo, como un token de cuenta de servicio proyectado de Kubernetes o un id-token de plataforma de CI. La puerta de enlace intercambia el JWT por un portador de corta duración y lo actualiza automáticamente. El archivo de token se relee en cada intercambio, por lo que los tokens proyectados rotados se recogen sin un reinicio.

Amazon Bedrock

Para la implementación de Bedrock del lado del cliente que la puerta de enlace reemplaza o enfrenta, consulte Claude Code en Amazon Bedrock. El upstream del lado de la puerta de enlace:
Un bloque auth vacío utiliza la cadena de credenciales predeterminada del SDK de AWS: variables env, ~/.aws/credentials, rol de tarea de ECS, metadatos de instancia de EC2 o IRSA en EKS. En producción, otorgue a la vaina de la puerta de enlace un rol de IAM en lugar de incrustar claves estáticas en una imagen de contenedor. Las credenciales explícitas deben ser completas: la puerta de enlace falla al arrancar cuando aws_access_key_id y aws_secret_access_key no se establecen juntos, o cuando aws_session_token se establece sin ellos. Antes de v2.1.207, un bloque auth: parcial pasó la validación.

Claude Platform en AWS

Claude Platform en AWS sirve la API de Anthropic de primera parte en infraestructura de AWS en aws-external-anthropic.<region>.api.aws. Utiliza IDs de modelo de primera parte, honra encabezados anthropic-beta tal como se envían, y sirve count_tokens, por lo que ninguna de la traducción específica de Bedrock se aplica. El proveedor anthropicAws requiere Claude Code v2.1.198 o posterior; las versiones anteriores de gateway lo rechazan al arrancar. Para la implementación del lado del cliente de la misma plataforma, consulte Claude Code en Claude Platform en AWS. El upstream del lado de la puerta de enlace:
La plataforma se ejecuta en una cuenta de AWS separada de Amazon Bedrock y firma solicitudes SigV4 para su propio nombre de servicio, aws-external-anthropic, por lo que un rol de IAM limitado a Bedrock no lo autoriza. Una clave API en auth.api_key tiene prioridad cuando también se establecen credenciales SigV4. Un bloque auth vacío utiliza la cadena de credenciales predeterminada del SDK de AWS, la misma cadena que usa el upstream Amazon Bedrock. Debido a que la plataforma resuelve IDs de modelo de primera parte, el catálogo integrado enruta a ella sin un bloque models:. Cuando cura una lista models:, clave la entrada anthropicAws: con el ID de primera parte.

Plataforma de agentes de Google Cloud

Para la configuración equivalente del lado del cliente, consulte Claude Code en Google Cloud. El upstream del lado de la puerta de enlace:
Un bloque auth vacío utiliza Credenciales predeterminadas de aplicación: GOOGLE_APPLICATION_CREDENTIALS, metadatos de GCE o Workload Identity de GKE. Los archivos de clave JSON de cuenta de servicio son compatibles pero desaconsejados; use Workload Identity o adjunte una cuenta de servicio a la instancia de GCE o Cloud Run. Establezca region: global para usar el punto final global de Agent Platform en lugar de uno regional. Google luego enruta cada solicitud a una región disponible, por lo que no rastrea la disponibilidad de modelos por región. Establecer una región específica fija cada solicitud a ella.

Microsoft Foundry

Para la implementación de Foundry del lado del cliente, consulte Claude Code en Microsoft Foundry. El upstream del lado de la puerta de enlace:
use_azure_ad: true se resuelve a través de DefaultAzureCredential: Managed Identity en AKS, ACI o App Service; la CLI de Azure; o credenciales de entorno. Las claves API funcionan pero son amplias del proyecto y no se rotan automáticamente. El punto final de Foundry se deriva de resource:; establezca el base_url opcional para anularlo para nubes soberanas como Azure Government.

Múltiples upstreams

El mismo proveedor puede aparecer más de una vez con un name: distinto. Esto cubre diferentes regiones, diferentes cuentas a través de diferentes cadenas de credenciales, rendimiento aprovisionado versus bajo demanda, y conmutación por error entre proveedores. La puerta de enlace intenta upstreams en orden. 5xx, 429, 401, 403, 404, tiempos de espera y punto final faltante (501) conmutan por error; otros 4xx no. 429 es capacidad por upstream, por lo que el agotamiento de rendimiento aprovisionado (PT) conmuta por error a bajo demanda. 404 es disponibilidad de modelo por upstream, por lo que un upstream que no ha habilitado un modelo no bloquea un upstream posterior que lo sirve. Un upstream que no puede resolver el modelo solicitado se omite sin un viaje de red. Este ejemplo enruta una asignación de rendimiento aprovisionado de Bedrock primero, desborda a bajo demanda y una segunda cuenta, y vuelve a la API de Anthropic al final:
La conmutación por error entre proveedores en la nube, o a la API de Anthropic directo, cambia qué acuerdo, geografía y otros términos rigen la solicitud. El CLI aplica el mismo control de características a puertas de enlace independientemente de cuál upstream sirva una solicitud dada, por lo que la conmutación por error no envía un campo de cuerpo que un upstream rechazaría.

Secciones opcionales

admin

Opcional. Habilita /v1/organizations/spend_limits, que refleja la API de administración pública de Anthropic, y cumplimiento de gasto por desarrollador en /v1/messages. Consulte Límites de gasto para saber cómo se establecen y aplican los límites; esta sección cubre las claves gateway.yaml que activan la función y la ajustan.

enforcement

El bloque enforcement controla cómo se comportan las verificaciones de límite de gasto cuando el almacén no está disponible.

models

El bloque models es una lista de modelos curada por administrador opcional, servida en /v1/models y utilizada para traducir IDs de modelo por upstream. Es necesario para regiones de Bedrock no estadounidenses, ARN de rendimiento aprovisionado de Bedrock y nombres de implementación de Foundry.

managed

El bloque managed define políticas de acceso basadas en roles clave en grupos de IdP o dominio de correo electrónico. Las políticas se evalúan en orden; se selecciona la primera coincidencia, luego se fusiona en la base de captura match: {} descrita a continuación. Se sirven por usuario en GET /managed/settings con almacenamiento en caché de ETag/304.
Una captura match: {}, convencionalmente listada al final, se trata como una capa base. Cada otra política hereda cualquier clave que no establezca de la captura, por lo que las entradas por rol solo necesitan listar lo que difiere del predeterminado de la organización. Las reglas de fusión dependen del tipo de clave:
  • Listas de permitidos: availableModels y permissions.allow. La lista de una política específica reemplaza completamente la de la base.
  • Listas de denegación y matrices de hooks: permissions.deny, permissions.ask, disabledMcpjsonServers, deniedMcpServers, blockedMarketplaces y cada matriz de tipo de evento hooks. Estos toman la unión de base y política, por lo que un gancho de denegación o auditoría en toda la organización no puede ser accidentalmente eliminado por una anulación por rol.
  • Claves de tipo registro: env, modelOverrides y skillOverrides. Estos se fusionan superficialmente, por lo que un bloque env por rol anula las claves que establece y hereda el resto de la base.
availableModels también se aplica del lado del servidor en /v1/messages, por lo que un modelo denegado devuelve 400 independientemente de lo que envíe el cliente. Un usuario autenticado que no coincida con ninguna política obtiene los valores predeterminados de la puerta de enlace, lo que significa cada modelo en el catálogo y sin configuración administrada. Agregue una captura match: {} al final si desea una política predeterminada garantizada.
La puerta de enlace no mantiene su propio directorio de usuarios. Autoriza cada solicitud desde el token de IdP del usuario, leyendo la membresía del grupo de la reclamación groups del token y evaluando políticas contra ella. No hay un registro para enumerar y no hay cuentas para crear previamente, y por lo tanto no hay punto final SCIM, porque no hay nada para que SCIM sincronice.Ejecute la gestión del ciclo de vida del usuario y grupo en la fuente de verdad, que es el aprovisionamiento SCIM nativo de su IdP o una plataforma de gobernanza de identidad dedicada. La membresía y desaprovisionamiento gobernados allí fluyen a la puerta de enlace automáticamente a través del token. Si desea el aprovisionamiento SCIM de las propias cuentas de Claude, esa es una capacidad de Claude para empresas.Se aplican dos relojes de propagación:
  • Contenido de política: editar una política e implementar nuevamente llega a clientes conectados en su próxima encuesta de configuración administrada, dentro de una hora
  • Membresía de grupo: cambiar la membresía de grupo de un usuario cambia qué política los coincide. Esto entra en vigor en la siguiente acuñación de sesión, lo que significa la siguiente actualización silenciosa, limitada por session.ttl_hours.

Qué va en cli

Cada valor cli es un documento completo de managed-settings.json de Claude Code, el mismo esquema que implementaría a través de MDM o /etc/claude-code/managed-settings.json, expresado aquí como YAML. El CLI aplica el documento entregado en el nivel administrado, por encima de la configuración de usuario y proyecto. La puerta de enlace valida cada documento contra el esquema de configuración del CLI al arrancar, por lo que una clave de nivel superior no reconocida o una clave reconocida con un valor mal formado falla al arrancar con un error que nombra cada clave ofensiva. Las partes deliberadamente abiertas del esquema aún aceptan valores arbitrarios, porque clientes más nuevos pueden reconocer entradas que el esquema de la puerta de enlace no. Estas claves abiertas son env, pluginConfigs y claves anidadas bajo permissions. Debido a que la validación utiliza el esquema incluido con la versión instalada de la puerta de enlace, poner una clave de configuración de nivel superior introducida por una versión más nueva de Claude Code en la configuración administrada requiere actualizar primero la puerta de enlace. Pruebe una nueva política en un cliente antes de implementarla ampliamente. La referencia de clave completa está en Configuración de Claude Code. Las claves que los operadores alcanzan primero:
Debido a que estas configuraciones llegan a través de la red, el CLI muestra a cada desarrollador un diálogo de aprobación de seguridad de una sola vez antes de aplicar cualquier cosa que pueda ejecutar un comando de shell o alterar dónde va el tráfico. El diálogo cubre:
  • hooks
  • Variables env que no están en la lista segura integrada del CLI
  • Configuración de ejecución de shell como apiKeyHelper y statusLine
  • Contenido de CLAUDE.md administrado
La lista segura determina qué variables env se aplican sin aprobación:
  • En la lista segura: variables de actualización automática y nombre de modelo
  • No en la lista segura: variables de proxy, variables de URL base y OTEL_EXPORTER_OTLP_ENDPOINT
La configuración de telemetría de la puerta de enlace empuja OTEL_EXPORTER_OTLP_ENDPOINT, por lo que establecer telemetry.forward_to desencadena el diálogo en cada cliente interactivo. Las ejecuciones no interactivas con la bandera -p omiten el diálogo y aplican configuración sin aprobación. El diálogo protege la máquina del desarrollador de una puerta de enlace comprometida u hostil, no la organización del desarrollador, por lo que el salto -p es intencional en lugar de una brecha. Si un desarrollador rechaza, Claude Code sale en lugar de aplicar la política. Empujar un nuevo gancho o variable env no segura a una política amplia significa un mensaje de aprobación en el próximo inicio de cada desarrollador coincidente. La clave cli se nombró settings en versiones anteriores. Ese deletreo aún se acepta como alias, pero las nuevas implementaciones deben usar cli.

Precedencia con otras fuentes administradas

Si un dispositivo también tiene un managed-settings.json local o una política entregada por MDM, las fuentes administradas no se fusionan. La fuente de mayor prioridad proporciona toda la configuración de política, clasificada en este orden con mayor prioridad primero:
  1. El asistente de política
  2. Configuración entregada por puerta de enlace
  3. MDM, a través del registro HKLM en Windows o un plist en macOS
  4. El archivo managed-settings.json
  5. El registro HKCU, solo en Windows
Los hosts de incrustación pueden suministrar política a través de la opción managedSettings del SDK. Se ignora de forma predeterminada y se aplica solo cuando una fuente administrada se adhiere con parentSettingsBehavior: "merge", filtrada para que pueda endurecer la política pero no aflojarla. La excepción es un pequeño conjunto de claves entre fuentes, honradas cuando cualquier fuente de administrador las establece; el nivel HKCU escribible por el usuario se excluye:
  • sandbox.network.allowManagedDomainsOnly y sandbox.filesystem.allowManagedReadPathsOnly: cuando se bloquean, las listas de permitidos correspondientes se unen en todas las fuentes
  • allowAllClaudeAiMcps: anulación de solo permitir para la lista de permitidos del servidor MCP de claude.ai
  • sandbox.bwrapPath y sandbox.socatPath: rutas del sistema de archivos a los binarios auxiliares de sandbox
allowManagedPermissionRulesOnly y disableBypassPermissionsMode no son entre fuentes, por lo que solo se aplica el valor de la fuente ganadora. Las políticas de puerta de enlace se aplican a cada invocación de Claude Code en la máquina, incluidas ejecuciones no interactivas claude -p y sesiones generadas por el SDK del agente. Si la puerta de enlace es inaccesible al iniciar, las sesiones firmadas salen con un error en lugar de ejecutarse sin su política.
mcpServers dentro de un bloque cli de política se rechaza al arrancar la puerta de enlace. La distribución de MCP por grupo no está disponible; implemente servidores MCP a través del managed-mcp.json basado en archivos en cada dispositivo o permita que los desarrolladores los agreguen localmente.

telemetry

El CLI envía métricas, registros y, cuando está habilitado, trazas del Protocolo OpenTelemetry (OTLP) sobre HTTP a la puerta de enlace, que las retransmite textualmente a cada destino configurado. Consulte Monitoreo de uso para las métricas y eventos que emite el CLI. El CLI marca cada exportación con la identidad del usuario autenticado, leída del JWT emitido por la puerta de enlace: los atributos user.id, user.email y user.groups. La atribución de costo y uso por desarrollador funciona sin configuración del lado del desarrollador.
Cada destino se adhiere a metrics, logs y traces independientemente, y el predeterminado es solo métricas. Las señales difieren en sensibilidad:
  • Métricas: contadores agregados como conteos de tokens, conteos de solicitudes y latencia
  • Registros y trazas: pueden llevar comandos bash completos, entradas de herramientas y rutas de archivos, cubriendo cualquier cosa que Claude Code haga en la máquina de un desarrollador
Habilite registros y trazas solo en destinos con los controles de acceso y la política de retención que los datos justifiquen.
La telemetría está desactivada en el CLI de forma predeterminada. Configurar telemetry.forward_to junto con listen.public_url la activa. La puerta de enlace empuja cinco variables env a cada cliente conectado a través de /managed/settings:
  • CLAUDE_CODE_ENABLE_TELEMETRY=1
  • OTEL_METRICS_EXPORTER=otlp
  • OTEL_LOGS_EXPORTER=otlp
  • OTEL_TRACES_EXPORTER=otlp
  • OTEL_EXPORTER_OTLP_ENDPOINT=<public_url>
El punto final empujado se construye a partir de la URL pública, por lo que las métricas y registros no necesitan configuración OTEL de desarrolladores o políticas. La configuración empujada se aplica en el nivel administrado, anulando variables OTEL_* que un desarrollador establece localmente. Las trazas además requieren CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1 en cada cliente. La puerta de enlace no empuja esa variable, así que establézcala a través del bloque env de una política administrada. No está en la lista segura del CLI, por lo que entregarla a través de una política está cubierta por el mismo diálogo de aprobación de seguridad que el punto final OTLP empujado ya desencadena. Tanto las codificaciones OTLP de protobuf como JSON se retransmiten, y cualquier backend compatible con OpenTelemetry funciona como destino.

Ajuste de HTTP

Cuatro bloques opcionales de nivel superior, access_control, limits, timeouts y rate_limits, ajustan la superficie HTTP. Los valores predeterminados se adaptan a la mayoría de implementaciones.

Ejemplo completo

Esta configuración de referencia completa ejercita cada sección principal; los bloques ajuste de HTTP mantienen sus valores predeterminados. Cópiela, elimine lo que no necesite y complete sus valores. La configuración en el Inicio rápido es una versión mínima de esta.
gateway.yaml

Configuración administrada del lado del cliente

Todo lo anterior configura el servidor de puerta de enlace. Apuntar máquinas de desarrollador a él se configura por separado, en cada dispositivo, a través de la configuración administrada de Claude Code. La puerta de enlace no puede empujar estas claves por sí misma, porque son lo que le dice al cliente dónde está la puerta de enlace. Para el CLI, establezca ambas claves en el managed-settings.json por SO:
Implemente ese archivo en cada dispositivo, típicamente a través de su plataforma MDM. La ruta del archivo difiere por plataforma: forceLoginGatewayUrl y el valor "gateway" de forceLoginMethod se honran solo desde el nivel administrado controlado por administrador. Un desarrollador que los establezca en su propio ~/.claude/settings.json no tiene efecto.