跳轉到主要內容
Claude 應用程式閘道部署由一個 YAML 檔案設定,按慣例稱為 gateway.yaml。該檔案定義閘道執行的所有操作:它在哪裡監聽、開發人員如何登入、推論去往何處,以及哪些原則和遙測適用。本頁是該檔案中每個選項的參考資料。若要撰寫您的第一個,請從快速入門開始,它會建立最小的工作設定並執行它;一旦您有了滿意的設定,部署指南涵蓋將其容器化並在 Kubernetes、Cloud Run 或您自己的平台上託管。 閘道在啟動時使用 claude gateway --config /path/to/gateway.yaml 讀取該檔案一次。每個選項都在啟動時根據架構進行驗證,因此格式不正確的設定會在啟動時失敗,並出現欄位級錯誤,而不是在首次使用時失敗。 本頁末尾的完整範例涵蓋每個部分。

檔案結構

五個部分是必需的。所有其他部分都是選用的,省略的部分採用其預設值。未知的鍵會導致啟動失敗,因此打字錯誤會顯示為命名錯誤,而不是被無聲地忽略的設定。 必需部分:
  • listen:繫結位址、公開 URL、TLS 終止
  • oidc:您的身分識別提供者 (IdP),包括簽發者、用戶端、宣告對應和誰可以登入
  • session:閘道鑄造的持有人令牌,包括祕密和生命週期
  • store:PostgreSQL,用於裝置授權和速率限制計數器
  • upstreams:推論去往何處,無論是 Anthropic、Amazon Bedrock、Claude Platform on AWS、Google Cloud 的 Agent Platform 或 Microsoft Foundry
選用部分:
  • admin:Admin API 驗證和支出限制的保留
  • enforcement:支出限制失敗開放或失敗關閉行為
  • modelsauto_include_builtin_models:管理員策劃的模型清單和每個上游 ID
  • managed:按 IdP 群組的受管設定原則
  • telemetry:OTLP 轉發到您的可觀測性堆疊
  • access_controllimitstimeoutsrate_limits:IP 允許/拒絕、請求大小上限、上游首位元組時間和每 IP 登入限制

祕密擴展

不要直接在 gateway.yaml 中寫入祕密,例如 client_secretjwt_secretpostgres_url。使用下列其中一種形式參考它們,閘道會在啟動時從環境變數或檔案解析該值:

必需部分

listen

listen 區塊控制閘道服務的位置:繫結位址和連接埠、外部可見的來源,以及選用的 TLS 終止。

oidc

oidc 區塊將閘道連接到您的身分識別提供者,並決定誰可以登入。它命名簽發者和 OAuth 用戶端、對應攜帶電子郵件和群組的宣告,並按電子郵件網域或群組限制登入。 OpenID Connect (OIDC) 是閘道與您的身分識別提供者一起使用的 SSO 協定;請參閱身分識別提供者設定以了解在 IdP 端註冊的內容。

session

session 區塊塑造閘道在登入後鑄造的持有人令牌:簽署它們的祕密和它們的生命週期。

store

store 區塊將閘道指向其 PostgreSQL 資料庫,該資料庫保存裝置授權和速率限制計數器。 對於本地開發,將 postgres_url 指向一次性 Postgres 容器,例如 docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres

upstreams

upstreams 是一個有序清單。閘道將推論轉發到解析所請求模型的第一個上游。在 5xx429401403404 或逾時時,它會故障轉移到下一個;其他 4xx 不會,因為這些錯誤可歸因於請求而不是上游。401403 表示閘道自己的認證對該上游失敗,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 Console 的 API 金鑰:
兩種認證形式在它們傳送的標頭中有所不同:
  • api_key:傳送 x-api-key。在 Claude Console 中輪換它並更新環境變數。
  • oauth_token:傳送 Authorization: Bearer。當您的組織發出短期令牌而不是長期 API 金鑰時使用持有人形式。持有人在啟動時讀取一次,因此透過重新掛載祕密和重新啟動來重新整理。
除了靜態金鑰或持有人,您可以使用工作負載身分識別聯合。按照工作負載身分識別聯合指南建立聯合規則,然後將您的工作負載的 OIDC JWT 掛載為檔案,例如 Kubernetes 投影服務帳戶令牌或 CI 平台的 id-token。閘道將 JWT 交換為短期持有人並自動重新整理它。令牌檔案在每次交換時重新讀取,因此輪換的投影令牌無需重新啟動即可被拾取。

Amazon Bedrock

對於閘道替換或前置的用戶端 Bedrock 部署,請參閱 Claude Code on Amazon Bedrock。閘道端上游:
空的 auth 區塊使用 AWS SDK 的預設認證鏈:環境變數、~/.aws/credentials、ECS 任務角色、EC2 執行個體中繼資料或 EKS 上的 IRSA。在生產環境中,給予閘道 Pod 一個 IAM 角色,而不是在容器映像中嵌入靜態金鑰。 明確認證必須完整:當 aws_access_key_idaws_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 Code on Claude Platform on AWS。閘道端上游:
該平台在與 Amazon Bedrock 不同的 AWS 帳戶中執行,並為其自己的服務名稱 aws-external-anthropic 簽署 SigV4 請求,因此 Bedrock 範圍的 IAM 角色不授權它。auth.api_key 中的 API 金鑰在同時設定 SigV4 認證時優先。空的 auth 區塊使用 AWS SDK 的預設認證鏈,與 Amazon Bedrock 上游使用的相同鏈。 因為平台解析第一方模型 ID,內建目錄無需 models: 區塊即可路由到它。當您策劃 models: 清單時,使用第一方 ID 鍵入 anthropicAws: 項目。

Google Cloud Agent Platform

對於等效的用戶端設定,請參閱 Claude Code on Google Cloud。閘道端上游:
空的 auth 區塊使用應用程式預設認證:GOOGLE_APPLICATION_CREDENTIALS、GCE 中繼資料或 GKE 工作負載身分識別。支援服務帳戶 JSON 金鑰檔案但不建議;使用工作負載身分識別或將服務帳戶附加到 GCE 或 Cloud Run 執行個體。 設定 region: global 以使用 Agent Platform 的全域端點而不是區域端點。Google 然後將每個請求路由到可用的地區,因此您不追蹤每個地區的模型可用性。設定特定地區會將每個請求固定到它。

Microsoft Foundry

對於用戶端 Foundry 部署,請參閱 Claude Code on Microsoft Foundry。閘道端上游:
use_azure_ad: true 透過 DefaultAzureCredential 解析:AKS、ACI 或 App Service 上的受管身分識別;Azure CLI;或環境認證。API 金鑰有效但是專案範圍的,不會自動輪換。Foundry 的端點衍生自 resource:;設定選用的 base_url 以覆蓋它以進行主權雲,例如 Azure Government。

多個上游

相同的提供者可以出現多次,具有不同的 name:。這涵蓋不同的地區、透過不同認證鏈的不同帳戶、佈建輸送量與隨需,以及跨提供者故障轉移。 閘道按順序嘗試上游。5xx429401403404、逾時和遺漏端點 (501) 故障轉移;其他 4xx 不會。 429 是每個上游容量,因此佈建輸送量 (PT) 耗盡會故障轉移到隨需。404 是每個上游模型可用性,因此未啟用模型的上游不會阻止清單中稍後服務它的上游。無法解析所請求模型的上游會被跳過,無需網路往返。 此範例首先路由佈建輸送量 Bedrock 配額,溢出到隨需和第二個帳戶,最後故障轉移到 Anthropic API:
在雲提供者之間或直接 Anthropic API 之間故障轉移會改變哪些協議、地理位置和其他條款管理請求。 CLI 對閘道應用相同的功能閘控,無論哪個上游服務給定請求,因此故障轉移不會傳送上游會拒絕的正文欄位。

選用部分

admin

選用。啟用 /v1/organizations/spend_limits,它鏡像 Anthropic 的公開 Admin API,以及 /v1/messages 上的每個開發人員支出強制執行。請參閱支出限制以了解如何設定和強制執行上限;本部分涵蓋打開功能和調整它的 gateway.yaml 鍵。

enforcement

enforcement 區塊控制當存放區不可用時支出限制檢查的行為。

models

models 區塊是選用的管理員策劃模型清單,在 /v1/models 提供並用於轉換每個上游的模型 ID。對於非美國 Amazon Bedrock 地區、Amazon Bedrock 佈建輸送量 ARN 和 Microsoft Foundry 部署名稱是必需的。

managed

managed 區塊定義基於 IdP 群組或電子郵件網域的角色型存取原則。原則按順序評估;選擇第一個相符項,然後合併到下面描述的 match: {} 全部捕捉基礎上。它們按使用者在 GET /managed/settings 提供,具有 ETag/304 快取。
match: {} 全部捕捉,按慣例列在最後,被視為基礎層。每個其他原則從全部捕捉繼承它不設定的任何鍵,因此每個角色項目只需要列出與組織預設不同的內容。合併規則取決於鍵類型:
  • 允許清單availableModelspermissions.allow。特定原則的清單完全替換基礎的。
  • 拒絕清單和掛鉤陣列permissions.denypermissions.askdisabledMcpjsonServersdeniedMcpServersblockedMarketplaces 和每個 hooks 事件類型陣列。這些採用基礎和原則的聯合,因此組織範圍的拒絕或稽核掛鉤無法被每個角色覆蓋意外刪除。
  • 記錄類型鍵envmodelOverridesskillOverrides。這些淺合併,因此每個角色 env 區塊覆蓋它設定的鍵並從基礎繼承其餘的。
availableModels 也在 /v1/messages 伺服器端強制執行,因此被拒絕的模型返回 400,無論用戶端傳送什麼。 未符合任何原則的已驗證使用者獲得閘道的預設值,這意味著目錄中的每個模型和沒有受管設定。如果您想要保證的預設原則,請在最後新增 match: {} 全部捕捉。
閘道保持沒有自己的使用者目錄。它從使用者的 IdP 令牌授權每個請求,從令牌的 groups 宣告讀取群組成員資格,並根據它評估原則。沒有要列舉的名冊,沒有要預先建立的帳戶,因此沒有 SCIM 端點,因為沒有什麼可供 SCIM 同步到。在真實來源(您的 IdP 的原生 SCIM 佈建或專用身分識別治理平台)執行使用者和群組生命週期管理。那裡管理的成員資格和取消佈建透過令牌自動流入閘道。如果您想要 Claude 帳戶本身的 SCIM 佈建,那是 Claude for Enterprise 功能。兩個傳播時鐘適用:
  • 原則內容:編輯原則並重新部署在連接的用戶端的下一個受管設定輪詢時到達,在一小時內
  • 群組成員資格:變更使用者的群組成員資格會變更哪個原則符合他們。這在下一個工作階段重新鑄造時生效,意味著下一個無聲重新整理,受 session.ttl_hours 限制。

cli 中的內容

每個 cli 值是完整的 Claude Code managed-settings.json 文件,與您透過 MDM 或 /etc/claude-code/managed-settings.json 部署的相同架構,在此表示為 YAML。CLI 在受管層應用傳遞的文件,在使用者和專案設定之上。 閘道在啟動時根據 CLI 的設定架構驗證每個文件,因此無法識別的頂層鍵或具有格式不正確值的識別鍵會在啟動時失敗,並出現命名每個違規鍵的錯誤。架構的故意開放部分仍然接受任意值,因為較新的用戶端可能識別閘道的架構不識別的項目。這些開放鍵是 envpluginConfigspermissions 下嵌套的鍵。 因為驗證使用與閘道的已安裝版本捆綁的架構,將較新 Claude Code 版本引入的頂層設定鍵放入受管設定需要首先升級閘道。在將新原則推出到一個用戶端之前進行煙霧測試。 完整的鍵參考在 Claude Code 設定 中。操作員首先尋求的鍵:
因為這些設定透過網路到達,CLI 在應用任何可以執行 shell 命令或改變流量去往何處的內容之前,向每個開發人員顯示一次性安全批准對話。對話涵蓋:
  • hooks
  • env 變數不在 CLI 的內建安全清單上
  • shell 執行設定,例如 apiKeyHelperstatusLine
  • 受管 CLAUDE.md 內容
安全清單決定哪些 env 變數無需批准即可應用:
  • 在安全清單上:自動更新和模型名稱變數
  • 不在安全清單上:代理變數、基礎 URL 變數和 OTEL_EXPORTER_OTLP_ENDPOINT
閘道的遙測設定推送 OTEL_EXPORTER_OTLP_ENDPOINT,因此設定 telemetry.forward_to 在每個互動式用戶端上觸發對話。使用 -p 旗標的非互動式執行無法顯示對話。它僅為該執行應用推送的設定,不將其記錄為已批准,因此開發人員的下一個互動式工作階段仍然顯示對話。在 v2.1.207 之前,非互動式執行將設定儲存為已批准,沒有後來的互動式工作階段為它們顯示對話。 如果開發人員拒絕,Claude Code 退出而不是應用原則。將新掛鉤或非安全環境變數推送到廣泛原則因此意味著每個符合開發人員下一次啟動時的批准提示。 cli 鍵在較早版本中被命名為 settings。該拼寫仍然被接受為別名,但新部署應使用 cli

與其他受管來源的優先順序

如果裝置也有本地 managed-settings.json 或 MDM 傳遞的原則,受管來源不合併。最高優先順序來源提供所有原則設定,按此順序排列,最高優先順序優先:
  1. 原則幫助程式
  2. 閘道傳遞的設定
  3. MDM,透過 Windows 上的 HKLM 登錄或 macOS 上的 plist
  4. managed-settings.json 檔案
  5. HKCU 登錄,僅在 Windows 上
嵌入主機可以透過 SDK managedSettings 選項提供原則。預設情況下它被忽略,僅當受管來源使用 parentSettingsBehavior: "merge" 選擇加入時適用,經過篩選以便它可以收緊原則但不能放鬆它。 例外是一小組跨來源鍵,在任何管理來源設定它們時被尊重;使用者可寫 HKCU 層被排除:
  • sandbox.network.allowManagedDomainsOnlysandbox.filesystem.allowManagedReadPathsOnly:當鎖定時,對應的允許清單跨來源聯合
  • allowAllClaudeAiMcps:claude.ai MCP 伺服器允許清單的僅允許覆蓋
  • sandbox.bwrapPathsandbox.socatPath沙箱幫助程式二進位檔的檔案系統路徑
  • forceRemoteSettingsRefresh:阻止啟動直到遠端受管設定被新鮮擷取,因此設定它的 MDM 或檔案原則即使缺少該鍵的最高優先順序來源是快取遠端承載也被尊重
allowManagedPermissionRulesOnlydisableBypassPermissionsMode 不是跨來源的,因此僅獲勝來源的值適用。請參閱設定優先順序以了解設定頁面上的相同規則。 閘道原則適用於機器上的每個 Claude Code 呼叫,包括非互動式 claude -p 執行和由 Agent SDK 生成的工作階段。如果閘道在啟動時無法到達,已登入的工作階段退出並出現錯誤,而不是在沒有其原則的情況下執行。
原則的 cli 區塊內的 mcpServers 在閘道啟動時被拒絕。不提供每個群組 MCP 發佈;透過每個裝置上的檔案型 managed-mcp.json 部署 MCP 伺服器或讓開發人員在本地新增它們。

telemetry

CLI 透過 HTTP 指標、日誌和(啟用時)追蹤傳送 OpenTelemetry Protocol (OTLP) 到閘道,閘道逐字將它們轉發到每個設定的目的地。請參閱監控使用以了解 CLI 發出的指標和事件。 CLI 使用從閘道簽發的 JWT 讀取的已驗證使用者的身分識別戳記每個匯出:user.iduser.emailuser.groups 屬性。每個開發人員的成本和使用歸因因此無需開發人員端設定即可運作。
每個目的地獨立選擇加入 metricslogstraces,預設僅指標。信號在敏感性上有所不同:
  • 指標:聚合計數器,例如令牌計數、請求計數和延遲
  • 日誌和追蹤:可以攜帶完整的 bash 命令、工具輸入和檔案路徑,涵蓋 Claude Code 在開發人員機器上執行的任何操作
僅在具有該資料保證的存取控制和保留原則的目的地上啟用日誌和追蹤。
遙測在 CLI 中預設關閉。將 telemetry.forward_tolisten.public_url 一起設定會打開它。閘道透過 /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>
推送的端點是從公開 URL 建立的,因此指標和日誌不需要開發人員或原則的 OTEL 設定。推送的設定在受管層應用,覆蓋開發人員在本地設定的 OTEL_* 變數。 追蹤另外需要每個用戶端上的 CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1。閘道不推送該變數,因此透過受管原則的 env 區塊設定它。它不在 CLI 的安全清單上,因此透過原則傳遞它由推送的 OTLP 端點已經觸發的相同安全批准對話涵蓋。 protobuf 和 JSON OTLP 編碼都被轉發,任何 OpenTelemetry 相容後端都可作為目的地。

HTTP 調整

四個選用的頂層區塊 access_controllimitstimeoutsrate_limits 調整 HTTP 表面。預設值適合大多數部署。

完整範例

此完整參考設定涵蓋每個核心部分;HTTP 調整區塊保持其預設值。複製它,刪除您不需要的內容,並填入您的值。快速入門中的設定是此的最小版本。
gateway.yaml

用戶端受管設定

上面的所有內容設定閘道伺服器。將開發人員機器指向它在每個裝置上單獨設定,透過 Claude Code 的受管設定。閘道無法自己推送這些鍵,因為它們是告訴用戶端閘道在哪裡的內容。 對於 CLI,在每個 OS managed-settings.json 中設定兩個鍵:
將該檔案部署到每個裝置,通常透過您的 MDM 平台。檔案路徑因平台而異: forceLoginGatewayUrlforceLoginMethod"gateway" 值僅從管理員控制的受管層被尊重。開發人員在自己的 ~/.claude/settings.json 中設定它們無效。