gateway.yaml yang dibaca gateway saat boot, lihat Referensi Konfigurasi.
Penyebaran produksi mengikuti empat langkah secara berurutan, dan bagian di bawah cocok dengan mereka. Dua yang pertama adalah tempat Anda membuat pilihan; dua yang kedua adalah materi referensi untuk dikonsultasikan setelah berjalan.
- Siapkan penyedia identitas Anda: daftarkan klien OAuth dan periksa catatan per-IdP untuk Okta, Entra, dan Google
- Sebarkan gateway: bangun gambar kontainer yang disematkan dan jalankan di Kubernetes, Cloud Run, atau platform Anda sendiri. Bagian ini juga mencakup keputusan biaya, bypass, gateway-ganda, dan serverless
- Siapkan operasi: log, probe kesehatan, perilaku pemadaman, rotasi rahasia, dan peningkatan. Referensi untuk ketika Anda menghubungkan pemantauan dan runbook
- Tinjau postur keamanan: aliran data ke mana, model ancaman, dan jawaban kepatuhan. Referensi untuk tinjauan keamanan
Sebarkan di jaringan pribadi Anda. Claude Code hanya terhubung ke gateway yang alamatnya pribadi. Ini adalah penjaga keamanan, karena gateway yang dipercaya dapat mendorong pengaturan yang menjalankan perintah pada mesin pengembang. Letakkan gateway yang Anda sebarkan di belakang penyeimbang beban internal atau VPN dan berikan nama host yang hanya diselesaikan ke IP pribadi. Jika jaringan internal Anda bernomor dari ruang IPv4 publik yang dimiliki organisasi Anda, lihat Izinkan gateway pada ruang alamat publik yang Anda miliki.
Penyiapan penyedia identitas
Daftarkan aplikasi web OAuth/OpenID Connect (OIDC) rahasia dengan URI pengalihan tunggal,https://<gateway>/oauth/callback, dan tetapkan ke pengguna atau grup yang harus memiliki akses gateway.
IdP apa pun yang sesuai dengan OIDC berfungsi: Okta, Microsoft Entra ID, Google Workspace, Keycloak, Dex, PingFederate, dan lainnya. IdP harus memenuhi tiga persyaratan:
- Melayani
/.well-known/openid-configuration, melalui HTTPS dalam produksi; gateway menerimahttp://issuer, dan issuer loopback juga memerlukanCLAUDE_GATEWAY_ALLOW_LOOPBACK=1 - Mendukung aliran kode otorisasi. PKCE (Proof Key for Code Exchange) aktif secara default; nonaktifkan dengan
oidc.use_pkce: falseuntuk IdP yang tidak mendukungnya - Mengembalikan
emaildan secara opsionalgroupsdalam id_token, atau melayaninya dari endpoint userinfo denganoidc.userinfo_fallback: true
oidc.ca_cert_pem.
Beberapa penyedia menangani klaim email dan grup secara berbeda:
- Okta: server otorisasi org di
https://example.okta.commengembalikan id_token tipis yang menghilangkanemaildangroups, jadi aturoidc.userinfo_fallback: truekapan pun Anda menggunakannya sebagaiissuer. Server otorisasi khusus sepertihttps://example.okta.com/oauth2/defaultyang menyertakanemaildan secara opsionalgroupsdalam id_token memancarkannya secara langsung dan tidak memerlukan fallback. Okta memancarkangroupshanya ketika scopegroupsdiminta dalamoidc.scopesdan filter klaim grup aplikasi memungkinkannya;userinfo_fallbacktidak dapat mengisi klaim yang IdP tidak diminta. - Microsoft Entra ID:
issuer=https://login.microsoftonline.com/<tenant-id>/v2.0. Entra memancarkan Object ID grup daripada nama, jadi gunakan GUID dalammanaged.policies.match.groups, atau gunakan App Roles untuk nama yang dapat dibaca manusia. Jika penyewa Anda memancarkan peran di bawahrolesbukangroups, aturoidc.groups_claim: roles. - Google Workspace:
issuer=https://accounts.google.com. id_token Google tidak membawa grup. Untuk menggunakanallowed_groupsberbasis grup ataumanaged.policiesdengan Google sebagai IdP, konfigurasikanoidc.google_groups, yang mencari grup setiap pengguna melalui Admin SDK Directory API menggunakan akun layanan dengan delegasi di seluruh domain. Tanpa itu, gunakanoidc.allowed_email_domainsuntuk gating keanggotaan danmanaged.policies.match.email_domainuntuk penugasan kebijakan. Google juga mengabaikan scopeoffline_accessstandar. Untuk token refresh, aturoidc.scopes: [openid, profile, email]danoidc.extra_auth_params: { access_type: offline, prompt: consent }.
Penyebaran
Gateway adalah satu biner Linux stateless yang berkoordinasi melalui Postgres, jadi sebarkan dengan cara Anda menyebarkan layanan stateless lainnya di lingkungan Anda. Simpan di dalam jaringan Anda, di mana pengembang dan IdP Anda dapat menjangkaunya melalui HTTPS, dan perlakukan seperti layanan lainnya yang menyimpan kredensial produksi. Beberapa keputusan membentuk penyebaran di luar tempat berjalan:- Biaya: tidak ada lisensi terpisah atau biaya per-kursi. Gateway adalah bagian dari biner
claude, jadi Anda membayar untuk inferensi melalui komitmen yang ada, ditambah komputasi yang dijalankannya. - Bypass: gateway tidak memberlakukan bahwa satu-satunya rute ke model melaluinya. Pengembang dengan kredensial mereka sendiri masih dapat memanggil penyedia secara langsung, jadi menutup jalur itu adalah keputusan kebijakan jaringan, misalnya memblokir egress ke
api.anthropic.comkecuali dari gateway. Memblokir egress itu juga merusak pemeriksaan keamanan domain WebFetch, yang memanggilapi.anthropic.comdari mesin setiap pengembang. AturskipWebFetchPreflight: truedalam kebijakan terkelola untuk menonaktifkannya. - Multiple gateways: setiap adalah penyebaran terpisah dengan konfigurasinya sendiri, dan CLI menyimpan kepercayaan dan kredensial per nama host gateway, jadi tim dapat menggunakan gateway yang berbeda tanpa konflik. Untuk melayani beberapa issuer OIDC, jalankan instance terpisah.
- Serverless: Cloud Run berfungsi jika Anda mengatur
min-instances: 1untuk menghindari penemuan OIDC dingin. Lambda dan Cloud Functions tidak berfungsi, karena gateway adalah server HTTP yang berjalan lama.
listen.trusted_proxies ke rentang sumber proxy sehingga gateway membaca IP klien dari X-Forwarded-For. Gateway menghormati header hanya ketika peer TCP dipercaya. Contoh yang dikerjakan Google Cloud dan AWS memiliki nilai konkret per topologi. Tanpa proxy terpercaya, setiap permintaan tampak berasal dari IP proxy, yang meruntuhkan batas laju per-IP menjadi satu bucket bersama dan mencatat IP proxy dalam acara audit.
Jangan alihkan permintaan ke endpoint otorisasi perangkat dan token gateway, misalnya dengan penulisan ulang HTTP-ke-HTTPS atau kanonikalisasi host di ingress. Claude Code tidak mengikuti pengalihan pada permintaan tersebut, jadi aturan ingress yang mengalihkannya merusak sign-in dan penyegaran token.
Berikan proxy waktu tunggu idle yang lebih lama dari interval keepalive gateway, yang bergantung pada upstream:
- Pada setiap upstream kecuali
provider: anthropic, gateway menulis SSEpingsetelah aliran diam selama sekitar 15 detik. - Pada
provider: anthropic, gateway melewatkan respons tanpa perubahan, termasuk ping API Anthropic sendiri.
Gambar kontainer
Bangun gambar Anda sendiri di sekitar binerclaude asli dari rilis Claude Code standar:
- Unduh build Linux untuk arsitektur gambar Anda dari rilis yang disematkan; lihat Instal versi spesifik untuk URL unduhan.
- Verifikasi terhadap
manifest.jsonyang ditandatangani GPG rilis seperti yang dijelaskan dalam Integritas biner dan penandatanganan kode. - Salin ke konteks build.
- Gambar berbasis glibc: build glibc hanya memiliki dependensi dinamis perpustakaan glibc. Gambar berbasis Musl memerlukan build
linux-x64-muslataulinux-arm64-muslditambah paket tambahan; lihat Penyiapan Alpine Linux. - Direktori status yang dapat ditulis: gateway berjalan sebagai pengguna apa pun, tetapi gambar minimal tidak memiliki rumah yang dapat ditulis. Atur
CLAUDE_CONFIG_DIRke jalur yang dapat ditulis seperti/tmp/.claude. - Perintah kontainer:
claude gateway --config /etc/claude/gateway.yaml, dengan file konfigurasi dipasang hanya-baca dan rahasia disuplai sebagai variabel lingkungan; gateway mendengarkan dilisten.port, default8080.
Kubernetes
Jalankan gateway sebagai Deployment, seperti layanan stateless apa pun:- Pasang konfigurasi dari ConfigMap dan rahasia dari Secret; referensikan rahasia dalam YAML melalui
${file:/path/to/secret}atau sebagai variabel lingkungan - Hentikan TLS di Ingress dan atur
listen.public_urlke nama host Ingress - Arahkan probe kesiapan ke
GET /readyzdan probe liveness keGET /healthz
upstreams memiliki detail penyiapan per-platform. Untuk pasangan lintas cloud, seperti upstream Amazon Bedrock di GKE, atur kredensial eksplisit dalam blok auth upstream sebagai gantinya.
Cloud Run
Konfigurasikan layanan sebagai berikut:- Biarkan
listen.portpada default8080, yang cocok denganPORTdefault Cloud Run, atau aturport: ${PORT} - Atur
public_urlke asal yang dapat dijangkau secara eksternal. Untuk produksi ini biasanya nama host penyeimbang beban internal, karena/loginmenolak alamat publik dan URL*.run.appdiselesaikan ke satu, jadi URL Cloud Run saja hanya berfungsi untuk uji cobacurlatau browser. Pengecualiannya adalah jaringan di mana*.run.appdiselesaikan secara pribadi melalui Private Service Connect dan zona pribadi Cloud DNS; dalam topologi itu URL Cloud Run adalahpublic_urlyang valid. Contoh yang dikerjakan Google Cloud mencakup keduanya. - Pasang konfigurasi sebagai volume rahasia
- Atur
min-instances: 1untuk menghindari penemuan OIDC dingin pada permintaan pertama
Dorong URL gateway ke mesin pengembang
Setelah gateway melayani, dorongforceLoginMethod, forceLoginGatewayUrl, dan parentSettingsBehavior: "merge" ke mesin setiap pengembang melalui pengaturan terkelola, melalui MDM atau dengan menulis managed-settings.json per-OS secara langsung. Tanpa ini, /login menampilkan pemilih akun standar tanpa opsi gateway.
Setelah Anda menyebarkan kunci, Claude Code berhenti menggunakan kunci API sisa atau login claude.ai di mesin, jadi rencanakan push bersama dengan instruksi sign-in Anda. Kebijakan administrator memerlukan sign-in gateway Cloud menjelaskan pesan yang dilihat pengembang.
Lihat di mana setiap mekanisme menyimpan kebijakan untuk jalur file, dan Pengaturan terkelola sisi klien untuk setara bootstrapUrl Claude Desktop.
Peluncuran besar
Sign-in dibatasi laju per alamat IP klien, dan default cocok untuk tim kecil. Setiap alamat mendapatkan 30 awal sign-in dan 10 pengajuan kode setiap 10 menit. Peluncuran ke ribuan pengembang dapat mencapai batas tersebut pada pagi pertama, karena salah satu dari dua alasan:- Gateway tidak dapat melihat melewati penyeimbang beban Anda. Tanpa
listen.trusted_proxies, setiap pengembang tampak berasal dari alamat penyeimbang beban dan berbagi satu batas. Atur sebelum apa pun. Gateway mencatat peringatan pertama kali mengabaikan headerX-Forwarded-For. - Banyak pengembang berbagi beberapa alamat egress NAT atau VPN. Mereka berbagi batas alamat tersebut bahkan ketika
trusted_proxiesbenar. Naikkanrate_limitsagar sesuai.
max, bagi pengembang dengan alamat egress yang mereka bagikan. Perkirakan berapa banyak dari mereka yang sign-in dalam satu periode window_seconds, yang default 10 menit. Kemudian gandakan untuk mencakup percobaan ulang dan pengembang yang sign-in ke Claude Code dan Claude Desktop.
Sebagai contoh, 10.000 pengembang di belakang 4 alamat egress sign-in secara merata selama satu jam. Itu adalah 2.500 pengembang per alamat dan sekitar 420 dari mereka dalam setiap 10 menit, yang Anda gandakan dan bulatkan ke 1.000. Contoh di bawah menetapkan kedua batas ke 1.000:
device_verify adalah apa yang menghentikan seseorang dari menebak kode sign-in pengembang lain, jadi naikkan hanya sejauh perkiraan Anda membutuhkan. Bahkan pada batas ini, kode adalah 8 karakter dari alfabet 20 karakter dan kedaluwarsa setelah 10 menit, jadi menebak tetap tidak praktis; lihat Ketahanan brute-force kode pengguna.
Ketika IdP Anda mengeluarkan token refresh, Claude Code memperbarui sesi secara diam-diam, jadi Anda dapat mengembalikan batas setelah peluncuran. Tanpa token refresh, pengembang sign-in lagi setiap session.ttl_hours. Ukur kedua batas untuk laju stabil itu juga dan biarkan mereka naik.
Ketika batas tercapai, Claude Code v2.1.274 atau lebih baru menampilkan The gateway is limiting sign-in attempts right now. Gateway pada v2.1.274 atau lebih baru menampilkan Too many attempts came from your network address pada halaman verifikasi, dengan pengaturan untuk diperiksa. Ini juga menulis baris log sign-in refused yang menamai pengaturan untuk diubah.
Operasi
Setelah gateway melayani lalu lintas, operasi sehari-hari membaca lognya, menyelidiki kesehatannya, dan memutar rahasianya sesuai jadwal Anda. Subbagian mencakup masing-masing, ditambah apa yang disimpan Postgres dan bagaimana upgrade dan rollback berperilaku.Log
Gateway menulis dua aliran ke stderr, keduanya ramah JSON:-
Acara audit: JSON satu baris per acara yang relevan dengan keamanan. Pipa stderr ke agregator log Anda.
Acara yang dipancarkan termasuk
config.load,session.mint,session.refresh,device.authorize,device.verify,device.callback,auth.denied,access.denied,access.public_client,inference,managed.serve,desktop_bootstrap.serve,desktop_bootstrap.denied,spend.blocked,admin.denied,admin.limit.upsert, danadmin.limit.delete. Bidang bervariasi menurut acara:- Acara mint dan refresh yang berhasil membawa
sub,email,client_ip, dan hasilnya auth.denieddanaccess.deniedmembawa alasan dan IP klien, ditambah jalur permintaan untukauth.denied, karena tidak ada identitas pengguna yang ada pada penolakan tersebut. Dua alasanaccess.deniedmengubah apa yang dibawa acara:xff_unparseable: acara juga membawa entriX-Forwarded-Foryang tidak dapat dibacaclient_ip_unknown: acara tidak membawa IP klien, karena koneksi tidak memiliki alamat peer sementara daftaraccess_controlditetapkan
access.public_clientmembawa IP klien dari permintaan pertama per proses yang tiba dari alamat publik sementaraaccess_control.allow_cidrskosong. Gateway melayani permintaan seperti biasa; acara menandakan bahwa gateway mungkin dapat dijangkau dari internet publik. Lihat referensiaccess_controluntuk apa yang dihitung sebagai publik dan untuk daftar izin yang direkomendasikan.inferencemencatat upstream mana yang melayani permintaan dan status responsdesktop_bootstrap.deniedmencatat pengambilan bootstrap Claude Desktop yang ditolak dengan alasan (not_configured,policy_not_opted_in, atauno_policy_matched) dan identitas penggunaadmin.deniedmencatat upaya autentikasi admin-API yang ditolak dengan IP klien, metode, jalur, dan alasan, tanpa materi kunci yang disajikan:invalid_keyketikax-api-keydisajikan tetapi tidak cocok dengan kunci yang dikonfigurasi,bearer_rejectedketika hanya headerAuthorizationyang disajikan dan tidak memverifikasi sebagai sesi gateway diadmin.admin_groups, atauno_credentialsketika tidak ada header yang disajikan
- Acara mint dan refresh yang berhasil membawa
-
Log operasional: baris yang dapat dibaca manusia dengan awalan
[gateway]untuk boot, peringatan, dan kesalahan upstream. Variabel lingkunganCLAUDE_GATEWAY_LOG_LEVELmengontrol verbositas dan menerimadebug,info,warn, atauerror, denganinfosebagai default. Padadebug, setiap sign-in dan refresh juga mencatat nama, bukan nilai, dari klaim dalam id_token, ditambah nama klaim userinfo ketikauserinfo_fallbackmenyediakan apa pun, sehingga Anda dapat mendiagnosis pengaturanemail_claimdangroups_claimtanpa mencatat PII. Ini tidak mempengaruhi acara audit, yang selalu dipancarkan.
Kesehatan
Gateway melayaniGET /healthz sebagai probe liveness dan GET /readyz sebagai probe kesiapan. /readyz memverifikasi toko dapat dijangkau. Jika Anda menetapkan store.readiness_grace_seconds, /readyz terus melaporkan siap selama hingga banyak detik setelah toko berhenti menjawab.
Kedua endpoint dikecualikan dari access_control.allow_cidrs, jadi probe terus bekerja pada pendengar yang terkunci.
Dokumen penemuan OAuth di /.well-known/oauth-authorization-server juga mengembalikan 200 hanya setelah pemuatan konfigurasi, penemuan OIDC, konstruksi klien upstream, dan migrasi Postgres semua berhasil, jadi berfungsi ganda sebagai pemeriksaan boot end-to-end.
Permintaan upstream bersamaan
Secara default, setiap replika gateway mengirim paling banyak 256 permintaan upstream pada waktu yang sama. Respons streaming dihitung terhadap batas sampai aliran berakhir. Permintaan yang tiba sementara replika berada di batas menunggu di dalam gateway untuk slot gratis. Pengembang melihat respons yang lambat dimulai atau tampak hang. Pada upstreamprovider: anthropic, permintaan yang menunggu lebih lama dari timeouts.upstream_ttfb_ms menyerah pada upstream itu, dan gagal dengan 502 ketika tidak ada upstream yang melayaninya kemudian.
Baris log startup yang berisi upstream requests: menunjukkan batas yang berlaku. Sementara replika memiliki lebih banyak permintaan terbuka daripada batas, itu juga mencatat peringatan yang berisi client requests are open, paling banyak sekali per menit.
Untuk melayani lebih banyak permintaan sekaligus, Anda memiliki dua opsi:
- Tambahkan replika.
- Naikkan batas pada setiap replika. Atur variabel lingkungan
BUN_CONFIG_MAX_HTTP_REQUESTSpada kontainer gateway ke angka bulat dari 1 hingga 65535, kemudian mulai ulang kontainer.
client requests are open.
Perilaku pemadaman
Jika Postgres turun, gateway itu sendiri terus melayani pengembang yang masuk dan masuk baru gagal. Apakah pengembang benar-benar terus bekerja tergantung pada bagaimana orchestrator Anda menangani kesiapan:- Sesi yang ada: token pembawa memvalidasi secara lokal dengan rahasia JWT, penyegaran sesi tidak menyentuh toko, dan proses gateway masih dapat melayani inferensi
- Masuk baru: gagal sampai Postgres pulih, karena aliran perangkat dan penghitung batas lajunya tinggal di Postgres
- Penegakan batas pengeluaran: gagal terbuka secara default selama pemadaman, jadi inferensi masih mengalir; balikkan ke gagal tertutup jika Anda lebih suka memblokir daripada menjalankan tanpa meter
- Kesiapan: secara default
/readyzmelaporkan tidak siap segera setelah Postgres tidak dapat dijangkau, jadi setiap replika gagal pemeriksaan kesiapannya sekaligus. Di mana lalu lintas hanya mencapai replika yang lulus pemeriksaan, semua lalu lintas, termasuk inferensi yang masih dapat dilayani gateway, gagal sampai Postgres pulih. Probe liveness di/healthzterus lulus sepanjang waktu.
ttl_hours dan masuk baru gagal. Penyegaran sesi mendapat jawaban coba-lagi dan berjalan setelah IdP kembali. Atur ttl_hours yang lebih lama jika IdP Anda memiliki jendela pemeliharaan yang sering.
Periode grace kesiapan
Untuk menjaga pengembang yang masuk tetap bekerja melalui pemadaman Postgres yang singkat seperti failover database, aturstore.readiness_grace_seconds lebih lama dari waktu yang diperlukan failover, misalnya 300. Dengan batas pengeluaran aktif dan perilaku gagal-terbuka default, permintaan melalui replika yang tetap siap tidak diukur sampai Postgres pulih, jadi simpan nilai serendah yang mencakup failover Anda. Jika Anda menetapkan enforcement.fail_closed_on_error: true, gateway menolak inferensi pengembang yang masuk dengan pesan 429 spend limit unavailable sampai Postgres pulih, bahkan sementara replika masih lulus pemeriksaan kesiapan mereka.
Pengaturan memerlukan Claude Code v2.1.282 atau lebih baru pada server gateway. Gateway yang lebih awal menolak untuk memulai ketika menemukan kunci, jadi upgrade setiap replika sebelum Anda menambahkannya. Upgrade mencakup rollback.
Jika Anda menunjukkan probe kesiapan ke /healthz sebagai gantinya, replika juga terus lulus melalui pemadaman, tetapi /healthz tidak pernah melaporkan tidak siap, jadi replika yang koneksi Postgres-nya tidak pulih terus lulus juga.
Rotasi rahasia JWT
Putar rahasia penandatanganan dalam tiga langkah sehingga sesi yang ada tetap valid:- Hasilkan rahasia baru. Tambahkan ke depan array
session.jwt_secret. - Gulung penyebaran. Token baru menandatangani dengan rahasia baru; token lama masih memverifikasi.
- Setelah
ttl_hoursditambah margin, hapus rahasia lama dan gulung lagi.
ttl_hours.
Postgres
Gateway menyimpan lima tabel data ditambah tabel_migrations, semuanya dibuat oleh migrasi waktu boot-nya:
Loop 30 detik mengakhiri baris
kv melewati TTL mereka, dan sapuan per jam memberlakukan jendela retensi pada tabel pengeluaran, jadi tidak ada yang tumbuh tanpa batas. Tanpa batas pengeluaran yang dikonfigurasi, hanya kv yang ditulis. Gateway menerapkan migrasi skema sendiri saat boot dan pada setiap upgrade, jadi peran database-nya memerlukan hak untuk membuat dan mengubah tabel. Arahkan ke database atau skema yang didedikasikan untuk gateway untuk menjaga hibah tetap sempit.
Dengan batas pengeluaran digunakan, database yang hilang berarti pelacakan pengeluaran dan batas yang hilang, bukan hanya login ulang pengembang, jadi jalankan backup reguler. Untuk menghapus satu pengembang yang pergi segera daripada menunggu retensi, jalankan DELETE FROM principal_emails WHERE principal = '<sub>' secara langsung; itu menghapus satu-satunya tabel yang menyimpan email, nama, dan grup mereka. Baris spend dan admin_audit mereferensikan hanya sub OIDC pseudonim.
Upgrade
Replika tidak memiliki status, jadi restart bergulir tidak kehilangan status gateway. Gateway menjalankan migrasi skema saat boot, yang berarti menyebarkan biner baru secara otomatis memigrasikan database. Replika bersamaan menserialisasi pada kunci advisory Postgres, jadi hanya satu yang menerapkan setiap migrasi. Ketika orchestrator Anda menghentikan replika denganSIGTERM, seperti dalam restart bergulir atau scale-in, gateway berhenti menerima koneksi baru dan membiarkan permintaan dan aliran yang sudah dalam penerbangan selesai sebelum keluar. Itu menunggu hingga 25 detik, disebut jendela drain, kemudian menutup apa pun yang masih terbuka. SIGINT, seperti Ctrl+C di terminal, memulai drain yang sama, dan sinyal kedua selama drain menutup permintaan terbuka dan keluar langsung. Draining memerlukan gateway v2.1.274 atau lebih baru.
Generasi panjang dapat streaming selama berapa menit. Pada Kubernetes dan Amazon ECS, naikkan keduanya bersama-sama untuk memberikan aliran tersebut lebih banyak waktu:
- Jendela drain: atur variabel lingkungan
CLAUDE_GATEWAY_DRAIN_TIMEOUT_MSpada kontainer gateway ke angka bulat positif milidetik, seperti120000. Gateway mengabaikan nilai dalam bentuk apa pun, seperti120s, dan menyimpan default 25 detik - Periode grace orchestrator Anda:
terminationGracePeriodSecondspada Kubernetes, ataustopTimeoutpada Amazon ECS
preStop apa pun juga, karena periode grace mulai menghitung sebelum hook berjalan daripada ketika gateway menerima SIGTERM.
Platform Anda juga dapat membatasi berapa lama drain dapat berjalan:
- Amazon ECS on Fargate:
stopTimeoutmemungkinkan paling banyak 120 detik - Cloud Run: menghentikan instance 10 detik setelah
SIGTERM, jadi aliran terbuka mendapat paling banyak 10 detik di sana, apa pun jendela drain-nya
drain window over after, menghitung permintaan yang dipotongnya, dan menamai kedua pengaturan untuk dinaikkan.
Migrasi adalah append-only, jadi rollback ke biner sebelumnya yang mengetahui lebih sedikit migrasi aman; itu mengabaikan baris ekstra. Rollback juga memvalidasi ulang YAML terhadap skema biner yang lebih lama, jadi konfigurasi yang mengadopsi kunci yang diperkenalkan oleh rilis yang lebih baru gagal boot pada yang lebih lama. Hapus kunci baru sebelum rollback.
Karena Anda menyematkan versi gateway dalam gambar Anda sendiri, perbaikan dalam rilis Claude Code baru, termasuk perbaikan keamanan, mencapai penyebaran Anda hanya ketika Anda memperbarui pin dan menyebarkan ulang. Sertakan gateway dalam kadence patching yang sama yang Anda gunakan untuk layanan lain yang menyimpan kredensial produksi.
Keamanan
Bagian ini menjawab pertanyaan yang ditanyakan tinjauan keamanan: aliran data apa melalui gateway dan ke mana perginya, serangan mana yang dipertahankan desain, dan jawaban mana yang termasuk dalam kuesioner kepatuhan.Aliran data
Ringkasan model ancaman
Gateway duduk di dalam perimeter jaringan Anda, tetapi laptop pengembang individual tidak diperlakukan sebagai terpercaya. Desain memperhitungkan ini dalam tiga cara:- Pengembang menyimpan JWT berumur pendek bukan kunci upstream mentah. Leg CLI-ke-gateway menggunakan hibah perangkat RFC 8628, dan pertukaran kode otorisasi gateway dengan IdP menjalankan PKCE dalam konfigurasi default, jadi kode otorisasi IdP yang disadap tidak berguna.
- Halaman verifikasi perangkat memberlakukan POST asal-sama dan batas laju per-IP per RFC 8628 §5.1. Lihat Resistansi brute-force kode pengguna.
-
Permintaan gateway ke IdP Anda, kolektor OTLP Anda, dan upstream
provider: anthropicmelalui penjaga server-side request forgery (SSRF) yang menyelesaikan DNS, memblokir alamat link-lokal dan cloud-metadata ditambah loopback secara default, dan menyematkan koneksi ke IP yang diselesaikan, jadi URL yang dipengaruhi operator tidak dapat dialihkan ke endpoint metadata cloud. Rentang pribadi RFC 1918 secara sengaja diizinkan, karena IdP dan kolektor OTLP biasanya tinggal di IP pribadi. Untuk penyedia lainnya, gateway menolakbase_urlyang menamai salah satu alamat tersebut atau nama host metadata saat memuat konfigurasi, dan SDK penyedia kemudian terhubung tanpa pemeriksaan DNS. Jika Anda mengaktifkan egress hanya-proxy, pemeriksaan alamat itu berpindah ke proxy forward Anda: gateway menyerahkan nama host dan daftar izin proxy harus menolak tujuan tersebut. AturCLAUDE_GATEWAY_ALLOW_LOOPBACK=1dalam lingkungan gateway hanya ketika sesuatu yang harus dijangkau gateway secara sah tinggal di loopback, seperti IdP pengembangan lokal atau kolektor OTLP sidecar dilocalhost. Variabel ini melonggarkan blok loopback untuk setiap URL yang dikonfigurasi operator dan juga melewati peringatan waktu boot yang memeriksa apakah pod dapat menjangkau endpoint metadata cloud, jadi lebih baik memberikan kolektor alamat internal sendiri.
- Host gateway yang dikompromikan: host menyimpan kredensial upstream dan mendistribusikan pengaturan terkelola ke setiap pengembang yang terhubung, jadi kontrol atas konfigurasi gateway sebanding dengan kontrol atas MDM Anda. Dialog persetujuan CLI untuk pengaturan yang mampu shell membatasi perubahan diam-diam tetapi tidak menggantikan keamanan host.
- Penyedia OIDC yang berbahaya: penyedia menandatangani id_token yang dipercaya gateway, jadi dapat menegaskan identitas apa pun. Penyaringan dan pengamanan IdP Anda adalah tanggung jawab Anda.
Resistansi brute-force kode pengguna
user_code yang diketik pengembang ke halaman verifikasi /device adalah 8 karakter yang diambil dari alfabet 20 karakter, yang menghasilkan 20⁸ atau sekitar 2,56×10¹⁰ kombinasi, dan berakhir setelah 10 menit.
Gateway menerapkan batas laju per-IP pada endpoint hibah perangkat, dapat dikonfigurasi melalui rate_limits. Naikkan batas jika banyak pengembang masuk dari alamat NAT korporat bersama tunggal. Peluncuran besar menunjukkan cara mengukurnya. Batas hanya berlaku pada aliran masuk, bukan pada inferensi.
Postur kepatuhan
- Residensi data: bidang data sendiri gateway mengirim tidak ada ke Anthropic kecuali API Anthropic adalah upstream yang dikonfigurasi; ketika itu, perjanjian penanganan data yang ada berlaku untuk jalur inferensi. Telemetri, audit, identitas, dan pengaturan hanya pergi ke tujuan yang Anda konfigurasikan.
- Lalu lintas proses host: proses host adalah Claude Code CLI.
claude gatewayberjalan di bawah aturan pihak ketiga yang sama seperti Amazon Bedrock dan penyebaran Agent Platform Google Cloud dan mengirim tidak ada ke Anthropic. Sebelum v2.1.227, proses host mengirim telemetri startup seperti versi produk dan platform, yang pengaturanCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1dalam lingkungan kontainer mematikan. Rilis tersebut juga mengirim satu permintaanHEADsaat boot, tanpa body atau kredensial, ke/api/hellodihttps://api.anthropic.com, atau diANTHROPIC_BASE_URLketika lingkungan menetapkannya, kecuali lingkungan juga menetapkan variabel proxy sepertiHTTPS_PROXYatau sertifikat klien mTLS. Mereka mengabaikan respons, jadi memblokir permintaan itu di firewall egress tidak mempengaruhi gateway. - Analitik klien: CLI menonaktifkan analitik penggunaan sendiri dan pelaporan kesalahan saat masuk ke gateway. Sebelum masuk pertama kali, CLI masih mengirim acara startup ke Anthropic, termasuk pada mesin yang pengaturan terkelola memaksa masuk gateway. Untuk menjaga itu juga, berikan
DISABLE_TELEMETRYdalam pengaturan terkelola sisi klien yang sama yang memaksa masuk gateway. - Pelaporan kesalahan: CLI mematikan pelaporan kesalahan kapan pun permintaan model perginya ke endpoint apa pun selain API pihak pertama Anthropic, seperti Amazon Bedrock atau
ANTHROPIC_BASE_URLkustom. - Mesin klien: CLI pengembang masih mengirim pemeriksaan nama host WebFetch dan pemeriksaan versi ke Anthropic kecuali
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1danskipWebFetchPreflight: truediatur. Lihat penggunaan data. - Peringkat survei: saat masuk ke gateway, CLI menonaktifkan unggahan peringkat terikat Anthropic bersama dengan aliran analitik, jadi tidak mengirim peringkat ke Anthropic.
- Berbagi transkrip: memilih Ya pada prompt berbagi transkrip survei menulis file lokal di bawah
~/.claude/feedback-bundles/bukan mengunggah ke Anthropic. - Pembaruan klien: pemeriksaan pembaruan terpisah dari lalu lintas gateway. Sematkan versi melalui distribusi Anda sendiri dan atur
DISABLE_UPDATESjika laptop tidak boleh mengambil rilis.DISABLE_AUTOUPDATERmenghentikan hanya pembaruan latar belakang sementaraclaude updatemasih berfungsi. - TLS: layani
public_urlmelalui HTTPS dalam produksi, baik dari pendengar gateway sendiri melaluilisten.tlsatau dari ingress yang menghentikan TLS di depan replika HTTP biasa, denganlisten.public_urldiatur dalam kedua kasus. Gateway tidak menolak HTTP biasa. IdP harus melayani HTTPS dalam produksi, dan Postgres mendukung?sslmode=require. AturStrict-Transport-Securitydi ingress Anda. - Pengungkapan kerentanan: ikuti Melaporkan masalah keamanan
Troubleshooting
Untuk pertanyaan dan umpan balik, gunakan dukungan Claude Code, atau buka masalah di repositori GitHub Claude Code. Saat melaporkan masalah, sertakan:- Masalah gateway: stderr gateway untuk jendela yang relevan,
gateway.yamlAnda dengan rahasia diedit, versi gateway, ditampilkan di halaman pendaratan di/dan dalam header responsx-cc-gateway-versiondi/managed/settings, dan apa yang berubah baru-baru ini - Masalah login: pengembang menjalankan
claude --debug-file ./claude-debug.txt, mereproduksi, dan mengirim file itu ditambah log audit gateway untuk jendela yang sama - Masalah inferensi: model yang diminta, upstream yang dikonfigurasi, dan log audit gateway untuk permintaan, yang mencatat upstream mana yang melayaninya dan status respons
Pesan
Cloud gateway sign-in was not completed menamai nama host gateway. Ketika Claude Code memiliki sidik jari yang di-pin dan yang disajikan, pesan juga menampilkan 16 karakter pertama dari masing-masing.
Jika Claude Code melaporkan couldn't load your organization's managed settings setelah masuk gateway, Claude Code menamai alasannya, memulai ulang di tempat, dan melanjutkan percakapan. Jika Claude Code tidak dapat memulai ulang, misalnya dalam sesi latar belakang, Claude Code mengakhiri sesi dan menyimpan masuk.
Terkait
- Gambaran umum gateway aplikasi Claude: quickstart dan koneksi pengembang
- Referensi konfigurasi: setiap opsi
gateway.yaml