Claude 앱 게이트웨이는 개발자의 Claude Code 클라이언트와 모델 제공자 사이에 위치하는 자체 호스팅 서비스입니다. 개발자는 API 키나 클라우드 자격증명을 보유하는 대신 회사 ID 제공자(IdP)로 로그인합니다. 게이트웨이는 업스트림 자격증명을 보유하고, IdP 그룹별로 모델 액세스 및 관리 설정을 적용하며, 사용 현황 텔레메트리를 자신의 관찰성 스택으로 전달합니다.
이는
claude 바이너리에 포함되어 있으므로, 노트북에서 Claude Code를 실행하는 동일한 실행 파일이 claude gateway --config gateway.yaml로 게이트웨이 서버를 실행합니다.
이 페이지는 다음을 다룹니다:
- Claude 앱 게이트웨이를 사용하는 이유, 자체 실행보다 추가되는 것, 그리고 다른 것이 더 적합한 경우
- 전제조건이 포함된 빠른 시작으로 게이트웨이를 0에서 로그인한 개발자까지 진행
- 개발자 연결, 관리 설정을 통해 게이트웨이 URL 설정 포함
- 가용성 및 제한사항 - 게이트웨이를 통해 작동하는 Claude Code 기능 및 서버가 지원하는 것 포함
Claude 앱 게이트웨이를 사용하는 이유
게이트웨이 개요는 게이트웨이가 무엇을 하는지, 왜 하나를 실행하는지 다룹니다. Claude 앱 게이트웨이는 Anthropic의 자체 게이트웨이로,claude 바이너리에 내장되어 있고 각 Claude Code 릴리스와 함께 테스트되므로, Claude Code가 보내는 헤더와 요청 필드를 운영자가 별도의 허용 목록을 유지하지 않고도 전달합니다. 배포되면 다음을 제공합니다:
- 자격증명: 업스트림 API 키 또는 클라우드 자격증명은 인프라에만 존재합니다. 개발자는 회사 SSO로 인증하고 단기 베어러 토큰을 받으므로, 오프보딩은 IdP에서 발생합니다. 사용자를 프로비저닝 해제하면 게이트웨이 액세스는 기본값인 1시간 내에 세션 수명 내에 만료됩니다.
- 액세스 제어: IdP 그룹은 모델 허용 목록 및 관리 설정 정책에 매핑됩니다. 게이트웨이는 모델 액세스를 서버 측에서 적용하여 부여되지 않은 모델에 대한 요청을 거부하고, 각 그룹의 관리 설정 정책을 선택하며, CLI는 관리 설정 계층에서 이를 적용합니다. 다른 팀은 다른 모델, 도구, 권한을 얻고, 개발자는 정책이 잠근 것을 재정의할 수 없습니다.
- 설정 전달: 게이트웨이는 관리 설정을 로그인한 클라이언트에 자체적으로 전달하여 claude.ai 관리 콘솔의 서버 관리 설정을 대체합니다.
- 텔레메트리: Datadog, Splunk 또는 ClickHouse와 같은 각 구성된 대상은 기본적으로 토큰 수, 모델, 사용자 ID 및 지연 시간이 포함된 OpenTelemetry Protocol (OTLP) 메트릭을 받으며, 로그 및 추적은 대상별 옵트인입니다.
- 업스트림 라우팅: 클라이언트는 Anthropic Messages API를 게이트웨이에 말하고, 게이트웨이는 Amazon Bedrock, AWS의 Claude Platform, Google Cloud의 Agent Platform, Microsoft Foundry 또는 Anthropic API 중 각 업스트림에 대해 변환하며, 그들 사이에 장애 조치가 있습니다. 개발자가 알아차리거나 재구성하지 않고도 지역, 제공자 또는 장애 조치 순서를 변경할 수 있습니다.
게이트웨이의 자체 데이터 평면은 Anthropic API가 구성된 업스트림이 아닌 한 Anthropic 인프라에 아무것도 보내지 않습니다. 텔레메트리, 감사 로그, 관리 설정 및 개발자의 IdP 신원이 어디로 가는지 제어하고, 게이트웨이는 이 중 어느 것도 Anthropic에 보내지 않습니다. 나머지 트래픽의 경우 CLI 프로세스가 보낼 수 있는 것과 이를 닫는 방법은 규정 준수 태세를 참조하세요.
다른 게이트웨이 구현
이미 필요를 충족하는 LLM 게이트웨이 또는 API 게이트웨이를 실행 중인 경우, 계속 사용하세요; 다른 LLM 게이트웨이는 Claude Code를 이에 대해 구성하는 것을 다룹니다. 게이트웨이 프로토콜 참조는 Claude Code가 모든 게이트웨이에서 기대하는 계약을 문서화합니다: 호출하는 엔드포인트, 전달할 헤더 및 본문 필드, 그리고 제거될 때 작동하지 않는 것입니다. 실행 중인 Claude 앱 게이트웨이는GET /protocol에서 해당 계약의 상위 집합을 제공하며, SSO 로그인, 관리 설정 전달 및 텔레메트리를 위한 Claude 앱 게이트웨이 특정 엔드포인트를 추가합니다. 배포된 게이트웨이(예: 아래 빠른 시작이 생성하는 것)에서 curl https://claude-gateway.internal.example.com/protocol로 가져옵니다. 프로토콜의 주요 변경사항은 미리 공지되지만, 무한 역호환성은 보장되지 않습니다.
빠른 시작
이 빠른 시작은 최소 경로를 안내합니다: IdP에서 OAuth 클라이언트를 등록하고,gateway.yaml을 작성하고, Docker Compose로 게이트웨이를 Postgres와 함께 실행하고, 엔드 투 엔드 로그인을 확인합니다. Amazon Bedrock 업스트림을 사용합니다; Claude Platform on AWS, Google Cloud의 Agent Platform, Microsoft Foundry 및 Anthropic API는 구성 참조에 표시된 대로 upstreams 블록을 교체하여 동등하게 지원됩니다. 끝에서 개발자가 /login할 수 있는 게이트웨이가 있습니다.
개인 네트워크에 배포하세요. Claude Code는 주소가 개인인 게이트웨이에만 연결합니다. 이는 신뢰할 수 있는 게이트웨이가 개발자 머신에서 명령을 실행하는 설정을 푸시할 수 있기 때문에 보안 가드입니다. 게이트웨이를 내부 로드 밸런서 또는 VPN 뒤에 놓고 개인 IP로만 확인되는 호스트명을 제공하세요.Anthropic이 운영하는 공개 게이트웨이 엔드포인트는 예외입니다:
/login은 https://를 통해 이들을 허용합니다. 이들은 Anthropic 자체가 운영하는 작은 고정 게이트웨이 세트입니다; 이들은 선택하거나 구성할 수 있는 배포 옵션이 아닙니다. 목록은 Claude Code에 컴파일되므로 구성이 호스트명을 추가할 수 없고 호스팅하는 게이트웨이는 면제 대상이 될 수 없습니다. v2.1.206 이전에는 /login이 다른 공개 주소처럼 이러한 엔드포인트를 거부했습니다.필수 조건
시작하기 전에 다음을 준비하세요:
게이트웨이 서버는 네이티브
claude 바이너리가 필요합니다; Claude Code 설치에 설명된 대로 고정된 릴리스를 다운로드하세요. 서버는 Claude Code가 Node 아래에서 실행될 때 사용 불가능한 런타임 기능을 사용합니다. 부팅 시 requires the native binary가 표시되면 독립형 설치 방법 중 하나로 전환하세요.
단계
1
IdP에서 OAuth 클라이언트 등록
게이트웨이의 호스트명을 먼저 결정하세요. 리다이렉트 URI가 일치해야 하기 때문입니다. 새 OIDC 웹 애플리케이션을 만들고 리다이렉트 URI를
https://claude-gateway.<your-domain>/oauth/callback으로 설정하세요. 여기서 호스트는 3단계에서 listen.public_url로 설정하는 동일한 값입니다. client_id 및 client_secret을 기록하세요. IdP별 지침은 ID 제공자 설정에 있습니다.2
PostgreSQL 데이터베이스 프로비저닝
가장 작은 관리 계층을 포함한 모든 Postgres 14 이상이 작동합니다. 게이트웨이는 부팅 시 자체 스키마 마이그레이션을 실행하므로 데이터베이스 사용자는
CREATE TABLE 권한이 필요합니다. 보안 정책이 애플리케이션 역할의 DDL을 금지하는 경우, 대신 스키마를 미리 만드세요; store를 참조하세요.3
gateway.yaml 작성
비밀은 이 구성은 기본 Bedrock 모델 카탈로그로 작동하는 로그인 루프에 충분합니다. 실행되면
${ENV_VAR} 확장을 통해 읽혀지므로 파일 자체는 버전 제어에 있을 수 있습니다. /login이 공개 주소를 거부하기 때문에 개인 IP로 확인되는 public_url 호스트명을 사용하세요. 최소 구성에는 5개 섹션이 있고, 다른 모든 필드는 기본값을 가집니다:gateway.yaml
managed.policies를 통해 그룹별 RBAC 및 관리 설정을 추가하고, telemetry를 통해 텔레메트리 팬아웃을 추가하고, models를 통해 다중 업스트림 장애 조치, 프로비저닝된 처리량 ARN 또는 미국 이외 지역을 추가하세요.Bedrock 업스트림은
bedrock:InvokeModel 및 bedrock:InvokeModelWithResponseStream을 inference-profile/us.anthropic.* ARN과 기본 foundation-model/anthropic.* ARN 모두에 가진 AWS 주체가 필요하며, Bedrock 콘솔에서 원하는 Claude 모델에 대해 모델 액세스가 활성화되어야 합니다. EKS의 IRSA, ECS 작업 역할 또는 EC2 인스턴스 프로필보다는 정적 키를 사용하여 자격증명을 제공하세요. upstreams 참조는 전체 IAM 세부사항, 클라우드 간 자격증명 매트릭스, 다른 제공자의 auth 블록을 가집니다.4
실행
이미지 요구사항을 충족하는 게이트웨이는 구성을 읽고, IdP에 대해 OIDC 검색을 실행하고, Postgres 스키마 마이그레이션을 적용하고, 업스트림 클라이언트를 빌드하고, 수신 대기를 시작하는 단일 Linux 바이너리입니다. 부팅은 구성, Postgres 연결(5초 타임아웃), OIDC 검색 및 업스트림 클라이언트 구성에 대해 실패 폐쇄됩니다. 이 중 하나가 도달 불가능하거나 잘못 구성된 경우, 게이트웨이는 저하된 상태에서 트래픽을 제공하는 대신 오류로 종료됩니다.성공적인 부팅은 Bedrock 및 Agent Platform 인스턴스 자격증명이 부팅 시가 아닌 첫 요청에서 확인되기 때문에 추론 경로를 검증하지 않습니다.부팅 시퀀스에 대해 stderr를 감시하세요. 로그 라인은 부팅이
claude 바이너리 주위에 컨테이너 이미지를 빌드한 다음 Postgres와 함께 실행하세요:docker-compose.yaml
[gateway] <timestamp> <level> <message> 형식을 사용하고, 감사 이벤트는 evt 필드가 있는 단일 라인 JSON이며, 시작 배너(아래 생략됨)는 마이그레이션과 수신 대기 라인 사이에 인쇄됩니다. 순서대로 다음을 볼 수 있습니다:claude gateway listening on 라인 전에 종료되면, stderr의 마지막 라인이 문제를 이름 지정합니다:- 도달 불가능한 Postgres
- DDL 권한이 없는 Postgres 역할
- 도달 불가능하거나 유효하지 않은 OIDC 검색 문서
- 잘못된 필드 경로가 있는 구성 스키마 위반
claude gateway --config gateway.yaml로 바이너리를 직접 실행하세요. public_url을 수신 대기 원본으로 설정하고 listen을 루프백 또는 클러스터 내부 주소에 바인드하세요.5
인증 표면 확인
세 가지 확인은 게이트웨이가 개발자에게 전달하기 전에 실제 사용자를 인증할 수 있음을 확인합니다.예제는 게이트웨이의 공개 URL을 사용합니다; 수신 대기가 없는 로컬 Compose 설정의 경우, 처음 두 확인에서 응답은 셋째, 브라우저 다리를 테스트하세요. 브라우저에서
http://localhost:8080을 대체하세요. 세 번째 확인은 verification_uri_complete를 열며, 이는 public_url에서 빌드되므로, 로컬 Compose의 경우 gateway.yaml에서 public_url: http://localhost:8080을 설정하고, 게이트웨이가 IdP redirect_uri를 public_url에서 빌드하기 때문에 1단계의 OAuth 클라이언트에 두 번째 리다이렉트 URI로 http://localhost:8080/oauth/callback을 추가하세요. 확인 링크는 로컬 브라우저에서 열립니다.Windows PowerShell에서 curl.exe를 실행하세요; 일반 curl은 Invoke-WebRequest의 별칭이며 이 플래그를 거부합니다.먼저 검색 문서를 가져오세요. 이는 게이트웨이가 작동 중이고, 구성이 유효하며, 모든 부팅 확인이 통과했음을 확인합니다:response_types_supported 및 scopes_supported와 같은 추가 필드를 포함합니다.둘째, 장치 인증을 요청하세요. 이는 장치 로그인 흐름이 작동하고 Postgres가 도달 가능하고 쓰기 가능함을 확인합니다:verification_uri_complete를 열고 코드를 확인하세요. IdP의 로그인 페이지로 리다이렉트되어야 하고, 로그인 후 게이트웨이로 돌아와 로그인 확인을 받아야 합니다.첫 번째 실패한 확인을 사용하여 문제를 찾으세요:- 첫 번째 확인 실패: 부팅이 완료되지 않음; stderr 확인
- 두 번째 확인 실패: Postgres가 게이트웨이에서 도달 불가능하거나 역할이 쓸 수 없음; 연결 문자열 및 권한 확인
- 세 번째 확인이 IdP에 도달하지 않음: IdP의 리다이렉트 URI가
https://<gateway>/oauth/callback과 정확히 일치하는지 확인 - 세 번째 확인이 IdP에 도달하지만 오류로 반송됨: 게이트웨이의 감사 로그를 읽으세요. 이는
email domain not allowed와 같은 이유로 모든 인증 거부를 기록합니다.
6
개발자 로그인
이 마지막 단계는 서버가 아닌 개발자 머신에서 발생합니다. 해당 머신의 관리 설정 파일에서
forceLoginMethod를 "gateway"로 설정하고 forceLoginGatewayUrl을 게이트웨이의 public_url로 설정한 다음 /login을 실행하고, Cloud gateway 화면에서 Enter를 누르고, 브라우저 로그인을 완료하세요. 아래 게이트웨이 URL 설정은 규모에 따라 두 키를 배포하는 것을 다룹니다.개발자 연결
개발자는 자신의 노트북에서 한 번의 브라우저 로그인으로 회사 업무 계정을 사용하여 연결합니다. 요청이 조직의 업스트림 자격증명을 사용하여 게이트웨이를 통해 모델로 가기 때문에 claude.ai 계정, API 키 또는 구독이 필요하지 않습니다. 연결은 MDM을 통해 푸시하는 클라이언트 측 관리 설정에 의해 구동되므로, 개발자 측에는 수동 설정이 없습니다; 이 섹션은 관리자가 구성하는 것을 다룹니다. CLI는 첫 연결 시 게이트웨이의 TLS 리프 인증서를 지문 처리하고 호스트명별로 고정합니다. 예상 SHA-256 지문을 게이트웨이 URL과 함께 게시하여 개발자가 비교할 것이 있도록 하세요.openssl x509 -noout -fingerprint -sha256 -in cert.pem으로 인증서 파일에서 지문을 가져오세요; /login 프롬프트는 다이제스트의 처음 16자를 구분 기호 없이 소문자 16진수로 표시합니다.
인증서가 회전하면 모든 개발자가 신뢰 프롬프트를 다시 보므로, 회전을 계획된 이벤트로 취급하고 지문을 다시 게시하세요.
로그인하면, 모델 선택기는 개발자의 availableModels 허용 목록의 모델을 표시하고, 관리 설정은 시작 시 적용되고 매시간 새로 고쳐지며, 텔레메트리는 수집기로 라우팅됩니다. 세션은 ttl_hours 만료 전에 자동으로 새로 고쳐지고, IdP 프로비저닝 해제 후 새로 고침 실패는 다시 로그인을 프롬프트합니다.
게이트웨이 URL 설정
MDM을 통해 또는 디스크에 직접 배포하는 OS별 관리 설정 파일에서 두 키를 모두 설정하면,/login은 URL이 채워진 Cloud gateway 화면에서 직접 열립니다:
forceLoginGatewayUrl은 개발자의 자신의 설정 파일에서 무시됩니다. forceLoginMethod만, URL 없이, 개발자를 “IT 관리자에게 문의하세요” 메시지에 남깁니다. 두 키 모두 게이트웨이의 managed.policies[].cli 블록이 아닌 머신으로 푸시하는 파일에 속하며, 이는 이미 연결된 클라이언트에만 도달합니다.
CI 파이프라인 및 원격 머신
무인 파이프라인을 위한 서비스 토큰 흐름이 없습니다. 게이트웨이 로그인은 항상 브라우저 장치 흐름을 실행하므로, 로그인을 승인할 개발자가 없는 CI 작업은 인증할 수 없습니다; 제공자에 대해 직접 구성하세요. 개발자가 로그인하면, 해당 머신의 모든 Claude Code 호출은 게이트웨이 세션을 사용하며, 비대화형claude -p 실행 및 Agent SDK에서 시작된 세션을 포함하고, 게이트웨이 정책은 모두에 적용됩니다.
장치 흐름은 폴링 CLI를 승인하는 브라우저에서 분리하므로, 디스플레이가 없는 원격 개발 상자도 작동합니다: 개발자는 원격 머신에서 SSH를 통해 /login을 실행하고 노트북의 브라우저에서 확인 링크를 엽니다.
개발자에게 적용되는 것
이러한 보장은 모든 로그인한 게이트웨이 세션에 적용됩니다.- 모델 액세스: 정책이 부여하지 않는 모델에 대한 요청은 400을 반환하고,
/model선택기는 정책의availableModels허용 목록으로 필터링됩니다. 정책에서enforceAvailableModels: true를 설정하여 Default 옵션이availableModels내의 모델로 확인되도록 하세요. 없으면 Default는 선택 가능하게 유지되고 해당 모델이 부여되지 않으면 요청 시 거부됩니다. - 텔레메트리 대상: 텔레메트리 전달이 구성되면, OTLP 내보내기 엔드포인트는 게이트웨이에 고정되고, 게이트웨이 푸시 구성은 로컬로 설정된
OTEL_*변수를 재정의합니다. - 자격증명: 게이트웨이 토큰은 세션의 유일한 자격증명입니다.
ANTHROPIC_AUTH_TOKEN,ANTHROPIC_API_KEY,apiKeyHelper및 이전 claude.ai 로그인은 로그인 중에 무시되므로, 개발자는 먼저 claude.ai에서 로그아웃할 필요가 없습니다. - 관리 설정: 잠긴 키는 로컬로 재정의될 수 없습니다. CLI는 시작 시 정책을 적용하고 각 시간별 폴에서 적용합니다.
- 시작: 로그인한 세션은 게이트웨이가 도달 불가능할 때 약 10초 후 시작 시 오류로 종료되며, 설정 없이 시작하는 대신입니다.
- 프로비저닝 해제: 사용자가 IdP에서 비활성화된 세션은 다음 새로 고침이 실패할 때
ttl_hours내에 만료됩니다.
조직이 볼 수 있는 것
사용 현황 텔레메트리는 개발자의 신원, 토큰 수, 모델 및 지연 시간을 조직의 수집기로 전달합니다. 게이트웨이는 프롬프트 또는 완료 콘텐츠를 기록하거나 저장하지 않습니다. 명령 및 파일 경로를 포함할 수 있는 로그 및 추적과 같은 더 풍부한 텔레메트리를 수집할지 여부는 조직의 대상별 선택입니다.가용성 및 제한사항
표는 개발자가 게이트웨이를 통해 연결할 때 작동하는 Claude Code 기능과 게이트웨이 서버 자체가 지원하는 것을 다룹니다. 지원되지 않는 경우, Notes 열은 대안을 제공합니다. 게이트웨이는 CLI가 모든 업스트림으로 보내는anthropic-beta 값을 전달하므로, 운영자는 베타 허용 목록을 유지하지 않습니다. Amazon Bedrock의 경우 헤더를 무시하므로, 게이트웨이는 값을 요청 본문의 anthropic_beta 필드로 이동합니다; 다른 업스트림은 보낸 대로 헤더를 받습니다. CLI의 게이트웨이 세션 베타 집합은 자사 전용 베타 및 확장 캐시 TTL 베타를 생략하므로, 아래 해당 행은 사용 불가능으로 표시됩니다.
다음 단계
빠른 시작은 Docker Compose에서 실행되는 최소 구성을 남깁니다. 더 나아가려면:- 예를 들어 그룹별 RBAC, 다중 업스트림 장애 조치 또는 텔레메트리 대상을 추가하여
gateway.yaml을 최소 구성 이상으로 확장하세요. 구성 참조는 모든 옵션을 다룹니다. - Compose에서 Kubernetes 또는 Cloud Run의 프로덕션 배포로 이동하고, IdP를 올바르게 설정하고, 보안 모델을 검토하세요. 배포 및 운영 가이드는 IdP별 설정, 컨테이너 이미지 요구사항, 상태 프로브 및 문제 해결을 다룹니다.
- 개별 개발자 또는 그룹에 지출 상한을 설정하여 폭주 워크로드가 전체 약정을 소비할 수 없도록 하세요. 지출 제한은 관리 API 및 적용 방식을 다룹니다.
- Google Cloud의 완전한 작동 예제(Cloud Run, Cloud SQL 및 Secret Manager 포함)는 Google Cloud에 배포를 참조하세요.