Ana içeriğe geç

Bölüm 22: Transparent Proxy Yönetimi

Transparent Proxy'ye Genel Bakış

Transparent Proxy, istemci tarafında herhangi bir yapılandırma değişikliği gerektirmeden AI trafiğini denetlemeyi sağlayan çalışma modudur. Arceris, ağ katmanında HTTPS trafiğini man-in-the-middle (MITM) dinleyicisi ile keser ve güvenlik politikalarını (PII taraması, prompt injection kontrolü, erişim kuralları, MIME/OCR/DLP dosya kontrolleri) bu trafik üzerinde uygular.

Bu yaklaşım özellikle tarayıcı tabanlı AI kullanımının (ChatGPT, Claude, Gemini vb.) denetlenmesi gerektiğinde değerlidir. Son kullanıcılar Arceris'i bir proxy olarak bilerek yapılandırmaz; trafik, ağ altyapısındaki yönlendirme kurallarıyla Arceris'e yönlendirilir.

Ne Zaman Kullanılmalı?

Transparent Proxy, özellikle şu durumlarda anlamlıdır:

  • Tarayıcı tabanlı AI kullanımını denetlemek: ChatGPT, Claude, Gemini gibi servislere tarayıcıdan erişimin kontrol edilmesi gerektiğinde.
  • Son kullanıcı yapılandırması beklenemeyeceğinde: Kullanıcıların proxy ayarı yapması mümkün veya pratik olmadığında.
  • Ağ seviyesinde görünürlük ve kontrol: Kurumun tüm AI trafiğini merkezi olarak görmesi ve denetlemesi gerektiğinde.

IDE, CLI ve SDK trafiği için explicit proxy daha uygun olabilir (Bölüm 23); iki mod birlikte kullanılabilir. Sağlayıcı API hostlarına (api.anthropic.com, api.openai.com gibi) giden istemci trafiği de ağdan yönlendirildiğinde transparent proxy üzerinden denetlenir.

Transparent Proxy Ayarları

Transparent proxy ve captive portal ayarları, Settings → Proxy Runtime Overrides bölümünden yönetilir; ayarların tam listesi ve ek çalışma zamanı ayarları Bölüm 6'dadır. Bu ayarlar veritabanında saklanır ve Arceris'i yeniden başlatmaya gerek olmadan anında uygulanır.

Transparent Proxy Enabled: Toggle ile açılıp kapatılır. Etkinleştirildiğinde Arceris, HTTPS trafiğini MITM dinleyicisi ile keser. Devre dışı bırakıldığında tüm transparent proxy trafiği durur ve kullanıcılar doğrudan AI servislerine erişir.

Transparent Proxy Port: Dinleyicinin çalıştığı port numarası. Varsayılan: 443. Bu port, ağ altyapısındaki yönlendirme kurallarıyla eşleşmelidir. Farklı bir port kullanılıyorsa (ör. 8443), ağ altyapısındaki NAT/redirect kuralları da buna göre güncellenmelidir.

Intercept Domains (Dinlenen Alan Adları)

Transparent proxy'nin hangi AI hostlarını dinleyeceği, sunucu tarafında tanımlı bir host listesiyle belirlenir; bu liste destek ekibi tarafından yönetilir. Dağıtımla gelen varsayılan liste:

  • claude.ai — Claude web arayüzü
  • chatgpt.com — ChatGPT web arayüzü (Codex aracı yüzü de aynı hostu kullanır)
  • chat.openai.com — ChatGPT'nin eski web hostu (güncel istemcilerde görünmese de varsayılan listede kalır)
  • gemini.google.com — Gemini web arayüzü
  • push.clients6.google.com — Gemini dosya yükleme CDN'i
  • geminiweb-pa.clients6.google.com — Gemini'nin yeni web istemcisinin prompt'u gönderdiği WebChannel hostu (v1.3.1'de varsayılan listeye eklendi)
  • api.anthropic.com — Anthropic API
  • api.openai.com — OpenAI API
  • generativelanguage.googleapis.com — Google Generative AI API (Gemini CLI ve SDK'lar)
  • copilot-proxy.githubusercontent.com — GitHub Copilot
  • oaiusercontent.com — ChatGPT dosya yükleme CDN'i (bölge bazlı *.oaiusercontent.com alt hostlarını da kapsar)

Bu liste, kurumun denetlemek istediği servislere göre genişletilebilir veya daraltılabilir; özel bir liste kullanan kurulumlarda güncelleme destek ekibi tarafından yapılır. İki davranış notu:

Özel liste varsayılanın yerine geçer. Kurum için sunucu tarafında tanımlı özel bir host listesi varsa varsayılan liste tamamen devre dışı kalır; eski kurulumdan taşınan bir liste, sonradan varsayılana eklenen hostları içermez. Örneğin DNS/hosts/NAT yönlendirmesiyle (kayıtlı ajan olmadan) çalışan ve özel liste kullanan kurulumlarda, Gemini'nin WebChannel hostu geminiweb-pa.clients6.google.com'un kapsama alınması gerekir; alınmazsa Gemini'nin yeni istemcisinde yazılan prompt hiçbir kontrolden geçmez — özel listenin güncellenmesi destek ekibi tarafından yapılır. Kayıtlı cihazlarda PAC listesi sunucudan otomatik geldiği için bu kurulumlarda ek işlem gerekmez (Bölüm 13).

Yükleme CDN'leri yük taşır. Bir AI arayüzünü dinlemek, dosya yüklemelerini otomatik olarak kapsamaz: tarayıcılar ekleri sohbet sunucusundan bağımsız origin'lere gönderir (Gemini push.clients6.google.com, ChatGPT *.oaiusercontent.com). Bu companion hostlar listeden çıkarılırsa MIME, OCR ve DLP dosya kontrolleri hiçbir hata vermeden devre dışı kalır (Bölüm 18, Bölüm 19, Bölüm 20).

Captive Portal

Captive Portal, kimliği doğrulanmamış tarayıcı trafiğini otomatik olarak bir giriş akışına yönlendiren mekanizmadır. Transparent proxy ile birlikte çalışır.

Captive Portal Enabled: Toggle ile açılıp kapatılır. Etkinleştirildiğinde, Arceris'e gelen ve kimliği doğrulanmamış tarayıcı istekleri otomatik olarak giriş sayfasına yönlendirilir. Kullanıcılar AI servislerine erişmeden önce kimlik doğrulaması yapmak zorunda kalır.

Captive Portal Login URL: Kullanıcıların yönlendirileceği giriş sayfasının URL'si. Örnek: https://login.corp.com. LDAP tabanlı kimlik doğrulama sayfaları bu alanda belirlenir. Arceris'in kendi yerleşik LDAP login sayfası kullanılacaksa boş bırakılabilir.

Captive Portal Branding: Giriş sayfasının görünümü özelleştirilebilir: - Title: Captive portal başlığı. Varsayılan: "Arceris Access". En fazla 40 karakter. - Subtitle: Captive portal alt başlığı. Varsayılan: "Captive Portal". En fazla 60 karakter. - Logo: Kurum logosu yüklenebilir. Logo, captive portal giriş sayfasında gösterilir.

Branding ayarları Settings → Branding bölümünden yapılır ve anında uygulanır.

Giriş sayfası, AI sağlayıcısının kendi origin'i üzerinde arceris-captive (varsayılan) yolundan sunulur; bu yol Proxy Runtime Overrides ayarlarından değiştirilebilir. Kayıtlı cihazlarda otomatik giriş v1.3.0'tan itibaren varsayılan olarak açıktır: arceris-dev ile kaydedilmiş makinelerde kullanıcı captive portal yerine doğrulanmış cihaz kimliğiyle sessizce oturum açar (Bölüm 13).

Captive Portal Akışı

  1. Kullanıcı tarayıcıda bir AI servisine (ör. chatgpt.com) erişmek ister.
  2. İstek ağ altyapısı tarafından Arceris'e yönlendirilir.
  3. Arceris, kullanıcının kimlik doğrulama durumunu kontrol eder.
  4. Kimliği doğrulanmamışsa, kullanıcı captive portal giriş sayfasına yönlendirilir.
  5. Kullanıcı LDAP kimlik bilgileriyle giriş yapar.
  6. Başarılı girişten sonra kullanıcı orijinal AI servisine yönlendirilir.
  7. Artık tüm AI trafiği Arceris üzerinden denetlenir ve güvenlik politikaları uygulanır.

İstemci Tarafı CA Güven Dağıtımı

Transparent interception kullanan kurumlarda en kritik operasyon konularından biri istemci tarafı CA sertifika güven dağıtımıdır. Arceris, HTTPS trafiğini kesip tekrar şifrelemek için kendi CA sertifikasını kullanır. Bu CA sertifikası, kurumdaki tüm istemci cihazlara (bilgisayarlar, mobil cihazlar) "güvenilir kök sertifika" olarak dağıtılmalıdır.

Güven dağıtımı yapılmazsa: - Tarayıcılarda sertifika uyarısı görünür ve kullanıcılar güvenlik hatası alır. - Bazı uygulamalar bağlantıyı tamamen reddeder. - Denetim akışı düzgün çalışmaz.

Dağıtım yöntemleri: - GPO (Group Policy Object): Active Directory ortamında CA sertifikası tüm bilgisayarlara otomatik olarak dağıtılabilir. Bu en ölçeklenebilir yöntemdir. - MDM (Mobile Device Management): Mobil cihazlarda sertifika dağıtımı için kullanılır. - Manuel kurulum: Küçük ortamlarda her cihaza el ile yüklenebilir. Önerilmez.

CA, kurulum sırasında scripts/ca_setup.sh betiğiyle oluşturulur ve certs/ca.crt / certs/ca.key dosyalarında tutulur. Kurum kendi kök CA'sını kullanmak isterse mevcut CA'yı Settings → Certificates → Şeffaf CA bölümünden yükleyebilir; panel zincirin SPKI pin'lerini de hesaplayıp listeler (Bölüm 6). Ajan MSI kurulumunda pinler (PINS) belirtilmişse Arceris CA'sı istemcilere otomatik kurulur.

Sertifika önbelleği: Arceris, dinlenen her host için CA'sıyla imzaladığı site sertifikalarını önbelleğe alır. Bir site sertifikası 48 saat geçerlidir, süresi dolmadan 24 saat önce yenilenir ve verilme anından bir saat öncesinden itibaren geçerli kabul edilir; böylece bir saate kadar olan istemci saat kayması tolere edilir. Gateway hostu uyku, askı, anlık görüntüden geri yükleme veya taşıma sonrasında önbellekte geçersiz kalan sertifikayı kendiliğinden yeniden düzenler; kullanıcılar sertifika tarihi hatası (NET::ERR_CERT_DATE_INVALID) görmez. Sertifika yaşam döngüsü işlerinin tamamı Bölüm 32'de ele alınır.

Runtime Enable/Disable Davranışı

Transparent proxy ve captive portal ayarları çalışma zamanında açılıp kapatılabilir (yeniden başlatma gerektirmez). Ancak bu değişikliklerin canlı sistem üzerindeki etkisi dikkatle değerlendirilmelidir:

  • Transparent proxy kapatıldığında: Tüm transparent trafiği denetimsiz olarak doğrudan AI servislerine gider. Güvenlik politikaları (PII, prompt guard, erişim kuralları) bu trafik üzerinde uygulanmaz.
  • Captive portal kapatıldığında: Kimliği doğrulanmamış kullanıcılar da AI servislerine erişebilir. Yalnızca proxy token ile kimlik doğrulama yapılıyorsa bu sorun yaratmayabilir.
  • Transparent proxy açıldığında: Ağ altyapısının trafiği Arceris'e yönlendirdiğinden emin olunmalıdır.

Bu tür değişiklikler yalnızca teknik seçenek değil; canlı trafik davranışını doğrudan etkileyen operasyon kararlarıdır. Planlı bakım penceresinde yapılması önerilir.

Ağ Altyapısı Gereksinimleri

Transparent proxy'nin çalışması için ağ altyapısının trafiği Arceris'e yönlendirmesi gerekir. Bu genellikle şu yöntemlerle yapılır:

  • DNS hijacking: AI servislerinin DNS kayıtları Arceris'in IP adresine yönlendirilir.
  • Policy-based routing (PBR): Belirli hedef IP/port kombinasyonlarına giden trafik Arceris'e yönlendirilir.
  • hosts/NAT yönlendirme: Çıkış noktasında host bazlı adres eşlemesi veya NAT kurallarıyla trafik Arceris'e çevrilir.
  • WCCP (Web Cache Communication Protocol): Ağ cihazlarının trafiği proxy'ye yönlendirmesi için kullanılır.

Ağ yönlendirme kuralları, dinlenen host listesindeki tüm alan adlarını kapsamalıdır. Eksik bir alan adı, o servisin denetim dışı kalmasına neden olur.

Yük dengeleyici ve iletilen başlıklar: Transparent proxy (:443) isteğin geldiği adresi her zaman TCP yuvasından okur; X-Forwarded-For gibi istemci tarafından yazılabilecek başlıklar hiçbir koşulda kabul edilmez — bu başlıklar Arceris'in sonlandırdığı TLS'in içinde taşındığı için güvenilir değildir. Bunun sonucu olarak :443 önüne yalnızca L4 pass-through yük dengeleyici konulmalıdır; L7 proxy her istemciyi kendi adresinde gösterir ve oturumların IP bazlı kaydını bozar. Explicit proxy tarafında iletilen başlıklar farklı kurallarla değerlendirilir (Bölüm 23).

Tarayıcı ve API Akışlarında Denetim Kapsamı

Transparent proxy üzerinden gelen trafik, hangi yüzeyden gelirse gelsin aynı politika motoruna girer: PII, Prompt Guard, güvenlik konusu ve sınıflandırıcı-model kontrolleri, Kurumsal Veri Denetçisi, DLP (Bölüm 20), path filter (Bölüm 17) ve dosya kontrolleri (Bölüm 18, Bölüm 19). Sağlayıcıların gerçek istemci akışları (WebSocket bağlantıları, streaming yanıtlar, chunked transfer encoding, ikili protobuf gövdeler, WebChannel) özel işlem gerektirir ve Arceris bu akışları ölçülmüş trafik üzerinden destekler. Kapsamın ne kadarının denetlendiği, aşağıdaki davranışlarla belirlenir.

Sıkıştırılmış ve Okunamayan Prompt Gövdeleri

  • Sıkıştırma: İstem gövdesi Content-Encoding: gzip veya zstd ile gönderildiğinde (ör. Codex zstd kullanır) gövde önce açılır, denetlenir ve sıkıştırılmamış olarak iletilir. Gateway'in okuyamadığı bir kodlama (ör. br) reddedilir ve kayda geçer.
  • Toplu ve yeni API yüzeyleri: Anthropic Message Batches API isteklerinin her öğesi tek bir istek gibi denetlenir; blok ve maske kuralları öğelere de uygulanır. OpenAI Responses API istekleri de aynı şekilde denetlenir.
  • Okunamayan gövdeler: Bir sağlayıcının yeni istemcisi, gateway'in okuyamadığı bir formatta mesaj gönderirse PII, Prompt Guard, güvenlik konusu, DLP ve içerik moderasyonu o mesajda çalışamaz. Varsayılan davranışta mesaj iletilir ve denetim kaydına "taranmadı" satırı düşer; Settings → Runtime içindeki Okunamayan Prompt'ları Engelle ayarı açıksa bu mesajlar reddedilir (fail-closed). Bir sağlayıcının format değişikliğinin, gateway güncellenene kadar tüm kullanıcıları engelleyebileceği göz önünde bulundurulmalıdır.
  • Oturum açmadan ChatGPT kullanımı: ChatGPT'nin giriş yapılmadan gönderdiği mesajlar da denetlenir; form tarayıcının yazdığı biçimde okunur (noktalı virgül ya da bozuk kaçış dizisi içeren formlar dahil) ve metni güvenle okunamayan bir mesaj her durumda reddedilir.

API Hostlarında Tur Bazlı Değerlendirme

API istemcileri (Claude Code, Codex, Copilot, SDK'lar) her turda konuşmanın tamamını yeniden gönderir. Kurumsal Veri Denetçisi, güvenlik konusu ve sınıflandırıcı-model kontrolleri, transparent proxy'nin API hostlarında (api.anthropic.com, api.openai.com, Gemini API, Copilot, Codex) yalnızca güncel turu değerlendirir: kullanıcının yeni yazdığı metin, bu turun araç sonuçları ve bu turun ekleri. Geçmiş bir turun veya geçmiş bir ekin ihlali oturumu kilitlemez; eskiden geçmiş içerikteki bir ihlal, istemci aynı içeriği her turda yeniden gönderdiği için sonraki tüm turları engelliyordu. Tarayıcı sohbetleri (claude.ai, chatgpt.com, gemini.google.com) değişmez — gövdelerinde yalnızca yeni mesaj taşınır. Gemini'nin tek turluk isteklerinde role alanı bulunmadığından bu isteklerin ekleri de denetçiye ulaşır.

Tarayıcı Dosya Yüklemeleri

Tarayıcılar ekleri sohbet sunucusundan bağımsız origin'lere yükler; Arceris bu yüklemeleri dosya kontrollerine (MIME — Bölüm 18, dosya metadata'sı, OCR — Bölüm 19, DLP dosya taraması — Bölüm 20) ve ekli dosya metnini yargılayan PII kurallarına taşır:

  • Google (Gemini web ve google-genai SDK): Yüklemeler Google'ın resumable protokolüyle yapılır ve ilk veri adımı dosyanın kendisi olarak yargılanır — tarayıcı yolunda hem baytlar hem de yükleme başlangıcında bildirilen dosya türü. Aynı yüklemenin ilk parçası yargılanmışsa devam chunk'ları atlanır.
  • ChatGPT: Bölge bazlı *.oaiusercontent.com hostlarına tek istekte yapılan dosya PUT'ları dosya olarak yargılanır; baytları gateway'e hiç gelmeyen bir yükleme talebi denetim kaydına "taranmadı" satırı olarak yazılır.
  • claude.ai: Yeni web istemcisinin ikili protobuf (Connect-RPC) gövdesindeki ekler ve satır içi dosyalar dosya kontrollerine ulaşır; okunamayan ikili ek de kayda geçer.

Yanıt Tarafı

Yanıt Taraması Block modunda bile tarayıcı proxy'si temiz bir JSON yanıtını reddetmez: Gemini'nin web yanıtları, akış kullanmayan claude.ai ve API yanıtları ile sağlayıcının kendi JSON hataları (ör. hız limiti) yalnızca bir kurala denk geldiklerinde reddedilir. Yanıt tarafı kontrolleri, Bölüm 6'daki Yanıt Taraması ayarlarıyla yönetilir.

Gemini WebChannel İstemcisi

Gemini'nin yeni web istemcisi sayfayı gemini.google.com'dan yükler; ancak yazılan prompt'u Google'ın WebChannel protokolüyle ayrı bir hosta (geminiweb-pa.clients6.google.com) gönderir. Bu host v1.3.1'e kadar hiçbir kapsam listesinde değildi ve yeni istemcide yazılan tüm prompt'lar denetimsiz geçiyordu. Host artık taranır: gövde çözümlenir, prompt aynı Gemini denetim zincirinden geçirilir, politikaya ait sistem prompt'u bu hosta da enjekte edilir ve okunamayan bir gövde asla "temiz" olarak iletilmez. Host, dağıtımın varsayılan dinleme listesindedir; sunucu tarafında özel listesi olan kurulumlar için bkz. "Intercept Domains".

Kullanıcı Bloğu Nasıl Görür?

Tarayıcı arayüzlerinin hiçbiri (Gemini, ChatGPT, claude.ai) HTML 403 blok sayfasını göstermez: blok gerçek ve denetlenmiş olsa da kullanıcı "internet bağlantınızı kontrol edin" hatası, sessizce kaybolan bir mesaj ya da genel bir hata görür. Bu yüzden blok geri bildirimi iki kanaldan biriyle sunulur; kanal, bildirim dili ve bildirim metni Settings → Runtime → Blok Bildirimi (Deny UX) bölümünden seçilir (Bölüm 6):

  • HTTP 403 blok sayfası (varsayılan): Bloklanan isteğe Arceris blok sayfasıyla yanıt verilir. API istemcileri sağlayıcının kendi hata zarfını alır; üç web arayüzünde kullanıcı herhangi bir politika mesajı görmez.
  • Sağlayıcı bildirimi: Kullanıcının prompt'u içeriksiz bir bildirim isteğiyle değiştirilerek iletilir; bildirim metni (neden, ne yapılmalı, referans numarası) sağlayıcı arayüzünde modelin cevabı olarak görünür. Kullanıcının yazdığı hiçbir içerik gateway'den çıkmaz. Bildirim gerçek bir model turudur; bu kanaldaki blok, 403 sayfasından belirgin biçimde geç görünür — karar gecikmesi İstek Olayları'ndaki Karar alanından okunabilir (Bölüm 25).

Modelin bildirimi yankılamayacağı varsayılır: kullanıcının okuduğu cevap, gateway tarafından bildirim metniyle yeniden yazınır (Gemini'de uzun yanıt gövdeleri çerçeve çerçeve işlenerek). Yeniden yazım teknik bir nedenle mümkün olmazsa blok 403 sayfasına düşer ve durumu bir denetim kaydına yazılır. claude.ai ve ChatGPT'de istemci engellenen turu sunucudan yeniden okuduğunda, kullanıcının kendi yazdığı metin kendi balonunda ve yanında bildirimle geri gösterilir. v1.3.1'den itibaren sağlayıcı bildirimi Gemini'nin WebChannel istemcisinde de çalışır; başarısız olursa 403 kalır.

Blok referans numarası her yüzeyde tek kimliktir: blok sayfasında, bildirimde, X-Arceris-Request-ID yanıt başlığında ve denetim kaydında aynı değer görünür; bu numara Denetim Kaydı ve İstek Olayları aramasına yapıştırıldığında ilgili satır bulunur (Bölüm 25).

Sağlayıcı Bazlı Sınırlar

Tüm sağlayıcılar transparent kullanımda aynı görünürlüğü sunmaz. Sağlayıcılar certificate pinning kullanabilir, özel WebSocket protokolleri gerektirebilir veya — Gemini WebChannel örneğindeki gibi — yeni istemci sürümleriyle prompt'u yeni bir hosta taşıyabilir. Gemini'nin tarayıcı desteği kısmi kalır; kapsam, sağlayıcının istemci değişiklikleriyle zaman içinde değişebilir.

Bu nedenle:

  • Yeni bir AI servisi dinleme listesine eklenmeden önce gerçek istemciyle uyumluluk testi yapılmalıdır.
  • Tarayıcı tabanlı denetim, gerçek kullanıcı akışları üzerinden doğrulanmalıdır; dosya yükleme, uzun prompt gönderme ve streaming yanıt alma senaryoları birlikte test edilmelidir.
  • Denetim dışı kalan trafik Shadow AI sayfasında gözlemlenir; yönetilmeyen bir hostun görünmesi, kapsam listesinin eksik olduğunun işaretidir.

Transparent Proxy, istemci tarafında görünür bir yapılandırma değişikliği olmadan AI trafiğini denetler ve tarayıcı tabanlı kullanımın yoğun olduğu kurumsal ortamlarda en güçlü katmanlardan biridir. Geliştirici araçları ve CLI trafiği için explicit proxy ile birlikte kullanılması önerilir (Bölüm 23).