gateway.yaml)로 구성됩니다. 이 파일은 게이트웨이가 수행하는 모든 작업을 정의합니다: 어디서 수신 대기하는지, 개발자가 어떻게 로그인하는지, 추론이 어디로 가는지, 어떤 정책과 텔레메트리가 적용되는지입니다. 이 페이지는 해당 파일의 모든 옵션에 대한 참조입니다.
첫 번째 파일을 작성하려면 빠른 시작에서 시작하세요. 이 페이지는 최소한의 작동 구성을 구축하고 실행합니다. 만족스러운 구성이 있으면 배포 가이드에서 Kubernetes, Cloud Run 또는 자신의 플랫폼에서 컨테이너화 및 호스팅하는 방법을 다룹니다.
게이트웨이는 claude gateway --config /path/to/gateway.yaml을 사용하여 시작 시 파일을 한 번 읽습니다. 모든 옵션은 부팅 시 스키마에 대해 검증되므로 잘못된 구성은 첫 사용 시가 아니라 필드 수준 오류로 시작 시 실패합니다.
이 페이지 끝의 완전한 예제는 모든 섹션을 다룹니다.
파일 구조
5개 섹션이 필수입니다. 다른 모든 섹션은 선택 사항이며, 생략된 섹션은 기본값을 사용합니다. 알 수 없는 키는 부팅을 실패하므로 오타는 자동으로 무시되는 설정이 아니라 명명된 오류로 표시됩니다. 필수 섹션:listen: 바인드 주소, 공개 URL, TLS 종료oidc: ID 공급자(IdP), 발급자, 클라이언트, 클레임 매핑 및 로그인 가능 사용자 포함session: 게이트웨이가 발급하는 베어러 토큰, 비밀 및 수명 포함store: 장치 권한 부여 및 속도 제한 카운터용 PostgreSQLupstreams: 추론이 가는 위치, Anthropic, Amazon Bedrock, Claude Platform on AWS, Google Cloud의 Agent Platform 또는 Microsoft Foundry 여부
admin: 관리자 API 인증 및 지출 한도 보유enforcement: 지출 한도 실패 개방 또는 실패 폐쇄 동작models및auto_include_builtin_models: 관리자 선별 모델 목록 및 업스트림별 IDmanaged: IdP 그룹별 관리형 설정 정책telemetry: 관찰성 스택으로의 OTLP 전달access_control,limits,timeouts,rate_limits: IP 허용/거부, 요청 크기 제한, 업스트림 첫 바이트까지의 시간 및 IP당 로그인 한도
비밀 확장
client_secret, jwt_secret 또는 postgres_url과 같은 비밀을 gateway.yaml에 직접 작성하지 마세요. 아래 형식 중 하나로 참조하면 게이트웨이가 부팅 시 환경 변수 또는 파일에서 값을 확인합니다:
필수 섹션
listen
listen 블록은 게이트웨이가 제공하는 위치를 제어합니다: 바인드 주소 및 포트, 외부에서 보이는 원본 및 선택적 TLS 종료.
oidc
oidc 블록은 게이트웨이를 ID 공급자에 연결하고 로그인할 수 있는 사용자를 결정합니다. 발급자 및 OAuth 클라이언트의 이름을 지정하고, 이메일 및 그룹을 전달하는 클레임을 매핑하며, 이메일 도메인 또는 그룹별로 로그인을 제한합니다.
OpenID Connect(OIDC)는 게이트웨이가 ID 공급자와 함께 사용하는 SSO 프로토콜입니다. IdP 측에서 등록할 내용은 ID 공급자 설정을 참조하세요.
session
session 블록은 로그인 후 게이트웨이가 발급하는 베어러 토큰의 형태를 결정합니다: 서명하는 비밀과 수명.
store
store 블록은 게이트웨이를 PostgreSQL 데이터베이스로 지정합니다. 이 데이터베이스는 장치 권한 부여 및 속도 제한 카운터를 보유합니다.
로컬 개발의 경우
postgres_url을 일회용 Postgres 컨테이너로 지정합니다(예: docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres).
upstreams
upstreams는 정렬된 목록입니다. 게이트웨이는 요청된 모델을 확인하는 첫 번째 업스트림으로 추론을 전달합니다. 5xx, 429, 401, 403, 404 또는 시간 초과 시 다음으로 장애 조치합니다. 다른 4xx는 그렇지 않습니다. 이러한 오류는 업스트림이 아닌 요청에 기인하기 때문입니다. 401 또는 403은 게이트웨이 자신의 자격증명이 해당 업스트림에 대해 실패했음을 의미하고, 404는 해당 업스트림이 요청된 모델을 제공하지 않음을 의미하므로 목록의 나중 업스트림이 여전히 제공할 수 있습니다.
404에서의 장애 조치는 게이트웨이 v2.1.198 이상이 필요합니다. 이전 릴리스는 목록의 나중 업스트림이 모델을 제공했을 때도 첫 번째 404를 클라이언트에 반환했습니다.
동일한 공급자의 여러 업스트림은 고유한 name:을 설정해야 합니다.
Amazon Bedrock, Claude Platform on AWS, Google Cloud의 Agent Platform 및 Microsoft Foundry 클라이언트는 시작 시 한 번 구축되며 SDK는 자격증명을 내부적으로 새로 고치므로 클라우드 자격증명을 회전해도 재시작이 필요하지 않습니다. 정적 Anthropic API 키 및 베어러는 시작 시 읽혀집니다. Anthropic API를 참조하세요.
Anthropic API
최소 Anthropic 업스트림은 Claude 콘솔의 API 키입니다:api_key:x-api-key를 보냅니다. Claude 콘솔에서 회전하고 환경 변수를 업데이트합니다.oauth_token:Authorization: Bearer를 보냅니다. 조직이 장기 API 키 대신 단기 토큰을 발급할 때 베어러 형식을 사용합니다. 베어러는 시작 시 한 번 읽혀지므로 비밀을 다시 마운트하고 재시작하여 새로 고칩니다.
Amazon Bedrock
게이트웨이가 대체하거나 앞에 있는 클라이언트 측 Bedrock 배포의 경우 Amazon Bedrock의 Claude Code를 참조하세요. 게이트웨이 측 업스트림:auth 블록은 AWS SDK의 기본 자격증명 체인을 사용합니다: 환경 변수, ~/.aws/credentials, ECS 작업 역할, EC2 인스턴스 메타데이터 또는 EKS의 IRSA. 프로덕션에서는 컨테이너 이미지에 정적 키를 포함하는 대신 게이트웨이 포드에 IAM 역할을 제공합니다.
명시적 자격증명은 완전해야 합니다: 게이트웨이는 aws_access_key_id 및 aws_secret_access_key가 함께 설정되지 않거나 aws_session_token이 이들 없이 설정된 경우 부팅 시 실패합니다. v2.1.207 이전에는 부분 auth: 블록이 검증을 통과했습니다.
Claude Platform on AWS
Claude Platform on AWS는aws-external-anthropic.<region>.api.aws에서 AWS 인프라의 퍼스트파티 Anthropic API를 제공합니다. 퍼스트파티 모델 ID를 사용하고, 전송된 대로 anthropic-beta 헤더를 준수하며, count_tokens를 제공하므로 Bedrock 특정 변환이 적용되지 않습니다. anthropicAws 공급자는 Claude Code v2.1.198 이상이 필요합니다. 이전 게이트웨이 릴리스는 부팅 시 이를 거부합니다.
동일한 플랫폼의 클라이언트 측 배포의 경우 Claude Platform on AWS의 Claude Code를 참조하세요. 게이트웨이 측 업스트림:
aws-external-anthropic에 대해 SigV4 요청에 서명하므로 Bedrock 범위의 IAM 역할이 이를 인증하지 않습니다. auth.api_key의 API 키는 SigV4 자격증명도 설정된 경우 우선합니다. 빈 auth 블록은 AWS SDK의 기본 자격증명 체인을 사용합니다. 이는 Amazon Bedrock 업스트림이 사용하는 동일한 체인입니다.
플랫폼이 퍼스트파티 모델 ID를 확인하므로 기본 제공 카탈로그는
models: 블록 없이 이로 라우팅합니다. models: 목록을 큐레이션할 때 항목을 anthropicAws:로 퍼스트파티 ID로 키합니다.
Google Cloud Agent Platform
동등한 클라이언트 측 설정의 경우 Google Cloud의 Claude Code를 참조하세요. 게이트웨이 측 업스트림:auth 블록은 Application Default Credentials를 사용합니다: GOOGLE_APPLICATION_CREDENTIALS, GCE 메타데이터 또는 GKE Workload Identity. 서비스 계정 JSON 키 파일은 지원되지만 권장되지 않습니다. Workload Identity를 사용하거나 GCE 또는 Cloud Run 인스턴스에 서비스 계정을 연결합니다.
region: global을 설정하여 지역 엔드포인트 대신 Google Cloud의 Agent Platform의 글로벌 엔드포인트를 사용합니다. Google은 각 요청을 사용 가능한 지역으로 라우팅하므로 지역별 모델 가용성을 추적하지 않습니다. 특정 지역을 설정하면 모든 요청이 해당 지역에 고정됩니다.
Microsoft Foundry
클라이언트 측 Foundry 배포의 경우 Microsoft Foundry의 Claude Code를 참조하세요. 게이트웨이 측 업스트림:use_azure_ad: true는 DefaultAzureCredential을 통해 확인합니다: AKS, ACI 또는 App Service의 Managed Identity, Azure CLI 또는 환경 자격증명. API 키는 작동하지만 프로젝트 전체이며 자동으로 회전하지 않습니다. Foundry의 엔드포인트는 resource:에서 파생됩니다. Azure Government와 같은 소주권 클라우드에 대해 선택적 base_url을 설정하여 재정의합니다.
여러 업스트림
동일한 공급자는 고유한name:으로 두 번 이상 나타날 수 있습니다. 이는 다양한 지역, 다양한 자격증명 체인을 통한 다양한 계정, 프로비저닝된 처리량 대 온디맨드 및 교차 공급자 장애 조치를 다룹니다.
게이트웨이는 순서대로 업스트림을 시도합니다. 5xx, 429, 401, 403, 404, 시간 초과 및 누락된 엔드포인트(501)는 장애 조치합니다. 다른 4xx는 그렇지 않습니다. 429는 업스트림별 용량이므로 프로비저닝된 처리량(PT) 소진은 온디맨드로 장애 조치합니다. 404는 업스트림별 모델 가용성이므로 모델을 활성화하지 않은 업스트림은 해당 모델을 제공하는 나중 업스트림을 차단하지 않습니다. 요청된 모델을 확인할 수 없는 업스트림은 네트워크 왕복 없이 건너뜁니다.
이 예제는 프로비저닝된 처리량 Bedrock 할당을 먼저 라우팅하고, 온디맨드 및 두 번째 계정으로 오버플로우하며, 마지막으로 Anthropic API로 장애 조치합니다:
클라우드 공급자 간 또는 직접 Anthropic API로 장애 조치하면 요청을 관리하는 계약, 지역 및 기타 약관이 변경됩니다.
CLI는 어느 업스트림이 주어진 요청을 제공하는지와 무관하게 게이트웨이에 동일한 기능 게이팅을 적용하므로 장애 조치는 업스트림이 거부할 본문 필드를 보내지 않습니다.
선택 사항 섹션
admin
선택 사항. Anthropic의 공개 관리자 API를 미러링하는 /v1/organizations/spend_limits를 활성화하고 /v1/messages에서 개발자별 지출 적용을 활성화합니다. 한도가 설정되고 적용되는 방법은 지출 한도를 참조하세요. 이 섹션은 기능을 켜고 조정하는 gateway.yaml 키를 다룹니다.
enforcement
enforcement 블록은 저장소를 사용할 수 없을 때 지출 한도 확인이 어떻게 동작하는지 제어합니다.
models
models 블록은 선택적 관리자 선별 모델 목록이며 /v1/models에서 제공되고 업스트림별 모델 ID를 변환하는 데 사용됩니다. US가 아닌 Amazon Bedrock 지역, Amazon Bedrock 프로비저닝된 처리량 ARN 및 Microsoft Foundry 배포 이름에 필수입니다.
managed
managed 블록은 IdP 그룹 또는 이메일 도메인을 기반으로 하는 역할 기반 액세스 정책을 정의합니다. 정책은 순서대로 평가됩니다. 첫 번째 일치가 선택되고 아래에 설명된 match: {} 캐치올 기본에 병합됩니다. 사용자별로 GET /managed/settings에서 ETag/304 캐싱으로 제공됩니다.
match: {} 캐치올(관례상 마지막에 나열됨)은 기본 계층으로 처리됩니다. 모든 다른 정책은 설정하지 않은 모든 키를 캐치올에서 상속하므로 역할별 항목은 조직 기본값과 다른 것만 나열하면 됩니다. 병합 규칙은 키 유형에 따라 다릅니다:
- 허용 목록:
availableModels및permissions.allow. 특정 정책의 목록은 기본값을 완전히 대체합니다. - 거부 목록 및 후크 배열:
permissions.deny,permissions.ask,disabledMcpjsonServers,deniedMcpServers,blockedMarketplaces및 모든hooks이벤트 유형 배열. 이들은 기본값과 정책의 합집합을 사용하므로 조직 전체 거부 또는 감사 후크는 역할별 재정의로 실수로 삭제될 수 없습니다. - 레코드 유형 키:
env,modelOverrides및skillOverrides. 이들은 얕게 병합되므로 역할별env블록은 설정하는 키를 재정의하고 나머지는 기본값에서 상속합니다.
availableModels는 또한 /v1/messages에서 서버 측으로 적용되므로 거부된 모델은 클라이언트가 보내는 것과 무관하게 400을 반환합니다.
정책과 일치하지 않는 인증된 사용자는 게이트웨이의 기본값을 가져옵니다. 이는 카탈로그의 모든 모델과 관리형 설정이 없음을 의미합니다. 보장된 기본 정책을 원하면 마지막에
match: {} 캐치올을 추가합니다.
게이트웨이는 자신의 사용자 디렉토리를 유지하지 않습니다. 사용자의 IdP 토큰에서 각 요청을 승인하고 토큰의
groups 클레임에서 그룹 멤버십을 읽으며 이에 대해 정책을 평가합니다. 열거할 명단이 없고 사전 생성할 계정이 없으므로 SCIM 엔드포인트가 없습니다. 동기화할 것이 없기 때문입니다.사용자 및 그룹 수명 주기 관리를 진실의 원본(IdP의 기본 SCIM 프로비저닝 또는 전용 ID 거버넌스 플랫폼)에서 실행합니다. 거기서 관리되는 멤버십 및 프로비저닝 해제는 토큰을 통해 게이트웨이에 자동으로 흐릅니다. Claude 계정 자체의 SCIM 프로비저닝을 원하면 이는 Claude for Enterprise 기능입니다.두 가지 전파 시계가 적용됩니다:- 정책 내용: 정책을 편집하고 재배포하면 연결된 클라이언트가 다음 관리형 설정 폴링 시 1시간 이내에 도달합니다.
- 그룹 멤버십: 사용자의 그룹 멤버십을 변경하면 어떤 정책이 일치하는지 변경됩니다. 이는 다음 세션 재발급 시(다음 자동 새로 고침 의미)에 적용되며
session.ttl_hours로 제한됩니다.
cli에 들어가는 것
각 cli 값은 완전한 Claude Code managed-settings.json 문서이며, MDM 또는 /etc/claude-code/managed-settings.json을 통해 배포할 동일한 스키마이며, 여기서는 YAML로 표현됩니다. CLI는 관리형 계층에서 전달된 문서를 적용합니다. 사용자 및 프로젝트 설정 위에 있습니다.
게이트웨이는 부팅 시 각 문서를 CLI의 설정 스키마에 대해 검증하므로 인식되지 않는 최상위 키 또는 인식되지만 잘못된 형식의 값이 있는 키는 모든 위반 키의 이름을 지정하는 오류로 부팅을 실패합니다. 의도적으로 개방된 스키마 부분은 여전히 임의의 값을 허용합니다. 더 새로운 클라이언트가 게이트웨이의 스키마가 인식하지 못하는 항목을 인식할 수 있기 때문입니다. 이러한 개방 키는 env, pluginConfigs 및 permissions 아래에 중첩된 키입니다.
검증이 게이트웨이의 설치된 버전과 함께 번들된 스키마를 사용하므로 더 새로운 Claude Code 릴리스에서 도입된 최상위 설정 키를 관리형 구성에 넣으려면 먼저 게이트웨이를 업그레이드해야 합니다. 한 클라이언트에서 새 정책을 연기 테스트한 후 롤아웃합니다.
전체 키 참조는 Claude Code 설정에 있습니다. 운영자가 먼저 도달하는 키:
이러한 설정은 네트워크를 통해 도착하므로 CLI는 각 개발자에게 셸 명령을 실행하거나 트래픽이 가는 위치를 변경할 수 있는 모든 것을 적용하기 전에 일회성 보안 승인 대화를 표시합니다. 대화는 다음을 다룹니다:
hooks- CLI의 기본 제공 안전 목록에 없는
env변수 apiKeyHelper및statusLine과 같은 셸 실행 설정- 관리형 CLAUDE.md 내용
env 변수가 승인 없이 적용되는지 결정합니다:
- 안전 목록에 있음: 자동 업데이트 및 모델 이름 변수
- 안전 목록에 없음: 프록시 변수, 기본 URL 변수 및
OTEL_EXPORTER_OTLP_ENDPOINT
OTEL_EXPORTER_OTLP_ENDPOINT를 푸시하므로 telemetry.forward_to를 설정하면 각 대화형 클라이언트에서 대화를 트리거합니다. 대화는 조직으로부터 개발자를 보호하지 않고 손상되거나 적대적인 게이트웨이로부터 개발자의 머신을 보호합니다.
-p 플래그를 사용한 비대화형 실행은 대화를 표시할 수 없습니다. 해당 실행에 대해서만 푸시된 설정을 적용하고 승인된 것으로 기록하지 않으므로 개발자의 다음 대화형 세션은 여전히 대화를 표시합니다. v2.1.207 이전에는 비대화형 실행이 설정을 승인된 것으로 저장했고 이후 대화형 세션은 이에 대한 대화를 표시하지 않았습니다.
개발자가 거부하면 Claude Code는 정책을 적용하지 않고 종료됩니다. 새 후크 또는 비안전 env 변수를 광범위한 정책에 푸시하면 일치하는 모든 개발자의 다음 시작 시 승인 프롬프트가 표시됩니다.
cli 키는 이전 릴리스에서 settings로 명명되었습니다. 해당 철자는 여전히 별칭으로 허용되지만 새 배포는 cli를 사용해야 합니다.
다른 관리형 소스와의 우선순위
장치에 로컬managed-settings.json 또는 MDM 전달 정책도 있으면 관리형 소스는 병합되지 않습니다. 가장 높은 우선순위 소스는 모든 정책 설정을 제공하며 다음 순서로 순위가 지정됩니다(가장 높은 우선순위 먼저):
- 정책 도우미
- 게이트웨이 전달 설정
- MDM, Windows의 HKLM 레지스트리 또는 macOS의 plist를 통해
managed-settings.json파일- HKCU 레지스트리(Windows만 해당)
managedSettings 옵션을 통해 정책을 제공할 수 있습니다. 기본적으로 무시되며 관리형 소스가 parentSettingsBehavior: "merge"로 옵트인할 때만 적용되며, 정책을 강화할 수 있지만 완화할 수 없도록 필터링됩니다.
예외는 모든 관리형 소스가 설정할 때 적용되는 작은 키 집합입니다. 사용자 쓰기 가능 HKCU 계층은 제외됩니다:
sandbox.network.allowManagedDomainsOnly및sandbox.filesystem.allowManagedReadPathsOnly: 잠금 시 해당 허용 목록은 소스 전체에서 합집합됩니다.allowAllClaudeAiMcps: claude.ai MCP 서버 허용 목록에 대한 허용 전용 재정의sandbox.bwrapPath및sandbox.socatPath: 샌드박스 도우미 바이너리의 파일 시스템 경로forceRemoteSettingsRefresh: 원격 관리형 설정이 새로 가져올 때까지 시작을 차단하므로 키가 없는 캐시된 원격 페이로드가 가장 높은 우선순위 소스인 경우에도 MDM 또는 파일 정책이 적용됩니다.
allowManagedPermissionRulesOnly 및 disableBypassPermissionsMode는 교차 소스가 아니므로 승리한 소스의 값만 적용됩니다. 설정 페이지의 동일한 규칙은 설정 우선순위를 참조하세요.
게이트웨이 정책은 비대화형 claude -p 실행 및 Agent SDK에서 생성된 세션을 포함하여 머신의 모든 Claude Code 호출에 적용됩니다. 게이트웨이가 시작 시 도달할 수 없으면 서명된 세션은 정책 없이 실행하지 않고 오류로 종료됩니다.
telemetry
CLI는 OpenTelemetry Protocol(OTLP) over HTTP 메트릭, 로그 및 활성화 시 추적을 게이트웨이로 보내며, 게이트웨이는 각 구성된 대상으로 그대로 중계합니다. CLI가 내보내는 메트릭 및 이벤트는 사용 모니터링을 참조하세요.
CLI는 각 내보내기에 게이트웨이 발급 JWT에서 읽은 인증된 사용자의 ID를 스탬프합니다: user.id, user.email 및 user.groups 속성. 개발자별 비용 및 사용 귀속은 개발자 측 구성 없이 작동합니다.
telemetry.forward_to를 listen.public_url과 함께 구성하면 켜집니다. 게이트웨이는 /managed/settings를 통해 모든 연결된 클라이언트에 5개의 환경 변수를 푸시합니다:
CLAUDE_CODE_ENABLE_TELEMETRY=1OTEL_METRICS_EXPORTER=otlpOTEL_LOGS_EXPORTER=otlpOTEL_TRACES_EXPORTER=otlpOTEL_EXPORTER_OTLP_ENDPOINT=<public_url>
OTEL_* 변수를 재정의합니다.
추적은 추가로 각 클라이언트에서 CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1이 필요합니다. 게이트웨이는 해당 변수를 푸시하지 않으므로 관리형 정책의 env 블록을 통해 설정합니다. CLI의 안전 목록에 없으므로 정책을 통해 전달하는 것은 푸시된 OTLP 엔드포인트가 이미 트리거하는 동일한 보안 승인 대화로 다룹니다.
Protobuf 및 JSON OTLP 인코딩 모두 중계되며 모든 OpenTelemetry 호환 백엔드가 대상으로 작동합니다.
HTTP 조정
4개의 선택적 최상위 블록access_control, limits, timeouts 및 rate_limits는 HTTP 표면을 조정합니다. 기본값은 대부분의 배포에 적합합니다.
완전한 예제
이 전체 참조 구성은 모든 핵심 섹션을 다룹니다. HTTP 조정 블록은 기본값을 유지합니다. 복사하고 필요하지 않은 것을 삭제하고 값을 채웁니다. 빠른 시작의 구성은 이것의 최소 버전입니다.gateway.yaml
클라이언트 측 관리형 설정
위의 모든 것은 게이트웨이 서버를 구성합니다. 개발자 머신을 지정하는 것은 각 장치에서 Claude Code의 관리형 설정을 통해 별도로 구성됩니다. 게이트웨이는 클라이언트가 게이트웨이가 어디에 있는지 알려주는 키를 푸시할 수 없습니다. CLI의 경우 OS별managed-settings.json에서 두 키를 모두 설정합니다:
forceLoginGatewayUrl 및 forceLoginMethod의 "gateway" 값은 관리자 제어 관리형 계층에서만 적용됩니다. 개발자가 자신의 ~/.claude/settings.json에서 설정하는 것은 효과가 없습니다.
관련
- Claude 앱 게이트웨이 개요: 빠른 시작 및 개발자 연결
- 배포 가이드: IdP 설정, 컨테이너 이미지, Kubernetes 및 Cloud Run, 운영
- 지출 한도: 개발자별 한도 및 관리자 API