Kolayz Anka Mimari ve Güvenlik
Bu doküman Anka'nın üretimde nerede, nasıl ve hangi güvenlik önlemleriyle çalıştığını anlatır. Üç soruya cevap verir: veri nerede duruyor, sınırı ne geçiyor, ve para nasıl doğru sayılıyor.
Bu bir mimari tarifidir, hukuki görüş değildir. KVKK bölümü hukuk birimiyle netleştirilmesi gereken noktaları işaret eder; nihai değerlendirme veri sorumlusunundur.
1. Kararların özeti
| Konu | Karar | Gerekçe |
|---|---|---|
| Kurgu | Kolayz'ın işlettiği paylaşımlı ağ geçidi | Ürün, anahtar ve fatura yönetiminin kendisidir; müşteri ortamına kurulum bu ürünü ortadan kaldırır |
| Kontrol düzlemi | Kendi yazdığımız .NET 8 servisi | Faturalama iş mantığıdır; iki ayrı muhasebe sistemini uzlaştırmaktansa tek doğruluk kaynağı |
| Veri düzlemi | LiteLLM, veritabanısız, yalnızca özel ağdan erişilir | OpenAI biçimi → Bedrock çevirisini yapar, başka hiçbir şey yapmaz |
| Çıkarım | Amazon Bedrock, varsayılan bölgeler arası profiller | Dolar başına en iyi model; AWS güvenceleri her iki yolda da aynı |
| Veri yerleşimi | Kontrol düzlemi ve duran veri eu-central-1 (Frankfurt) | AB'ye sabitli yönlendirme kurum bazında seçenek |
| İçerik | Saklanmaz, loglanmaz | Şemada içerik sütunu yok; mimari test her derlemede doğrular |
| Faturalama gerçeği | MySQL | LiteLLM'in maliyet başlığı yalnızca çapraz kontrol |
| Ortam | Tek üretim ortamı | Provalar yerelde; ikinci bir ortam para harcar ve zamanla ayrışır |
| Kolayz'ın KVKK rolü | Veri işleyen | Trafik Kolayz'ın hesabından geçer; gizlenmesi değil sözleşmeye bağlanması gerekir |
Neden müşteri ortamına kurulum değil. ClaimSense'te tam tersi seçildi: orada kurulum müşteri ortamındadır ve Kolayz veri yolunda yer almaz. Anka'da bu mümkün değil, çünkü ürünün kendisi paylaşımlı ölçüm, kota ve fatura katmanıdır — her müşteriye ayrı bir ağ geçidi kurmak ürünü ortadan kaldırır. Bunun bedeli, Kolayz'ın veri işleyen sıfatı kazanmasıdır; karşılığında müşteri hiçbir sağlayıcı hesabı açmaz.
2. İstek yolu
Bir /v1/chat/completions çağrısı sırasıyla şunlardan geçer:
- Anahtar doğrulama.
kz-anahtarı SHA-256 özetiyle sabit zamanlı aranır; kurum, limitler ve beyaz liste tek seferde okunur. Sonuç 30 saniye önbelleklenir; konsoldan yapılan iptal önbelleği anında temizler. - Kapılar (uçuş öncesi). Acil durdurma → model beyaz listesi → fiyatlandırma modu → dakikada istek → dakikada token → aylık tavan. Hepsi istek yukarı gitmeden çalışır: reddedilen istek bir jeton bile satın almaz.
- Şekillendirme. Anka adı, kurumun yönlendirme politikasına göre bir Bedrock
modeline çözülür; kimlik talimatı ve varsa görev talimatı en öne eklenir;
max_tokensmodelin tavanına kırpılır. Bu kırpma, kabul edilmiş bir isteğin en fazla ne kadar tutabileceğinin üst sınırıdır. - İletme. YARP ile LiteLLM'e; müşterinin anahtarı yukarı gitmez, LiteLLM'in ana anahtarı geri dönmez.
- Akış. Yanıt hiçbir aşamada tamponlanmaz. Her parçadaki
modelalanı Anka adıyla değiştirilir; kullanım parçası ölçüm için ayrılır, müşteri istemediyse çıkarılır. - Ölçüm (sıcak yolun dışında). Bitmiş istek sınırlı bir kuyruğa bırakılır; arka plan yazıcısı fiyatı ve maliyeti hesaplayıp kaydı yazar.
- Hata. Sağlayıcı hatası sınıflandırılır ve kendi metnimizle döner: 429 +
retry-after, içerik filtresi, zaman aşımı, kesinti. Sağlayıcının kendi cümlesi müşteriye ulaşmaz — marka sızıntısının en olası yeri budur.
Ne kadar yavaşlatıyor. Ağ geçidinin ilk parçaya eklediği gecikme yük senaryosunda ölçülür: 50 eşzamanlı akışta p95 farkı tek haneli milisaniye. Ölçüm, doğrudan kaynağa yapılan aynı isteklerle karşılaştırılarak yapılır — tamponlama yapan bir vekil de sonunda tüm baytları döndürdüğü için başka türlü görünmez.
3. Veri yerleşimi
Frankfurt'ta duran ve hiç çıkmayan: kurumlar, kullanıcılar, roller, oturumlar, API anahtarlarının özetleri, model kataloğu ve fiyat listesi, kullanım kayıtları (sayaçlar ve tutarlar), muhasebe kaydı ve bakiyeler, adil kullanım uyarıları, anomali kayıtları, mutabakat raporları, denetim kaydı.
Sınırı geçen tek şey: değerlendirilecek istem ve dönen yanıt — yani çıkarımın kendisi. Varsayılan yönlendirmede bu, Bedrock'ın bölgeler arası profillerine gidebilir. AB'ye sabitlenmiş kurumlarda Frankfurt'taki profillerde kalır.
Hiçbir yerde saklanmayan: istem ve yanıt içeriği. Kullanım kaydında model adı, temel model, token sayıları, süre, durum, istek kimliği ve iki para tutarı vardır; içerik tutabilecek bir sütun yoktur. Bunu iki test korur: şema üzerinde isim tabanlı bir mimari test, ve ölçüm yolundaki log satırlarını tarayan bir test.
4. KVKK: aktarım zinciri
Kolayz bu üründe veri işleyendir. Zincir iki halkadır: veri sorumlusu (müşteri) → Kolayz (Frankfurt) → AWS Bedrock (varsayılan yönlendirmede bölgeler arası).
Gereken belgeler:
- Aydınlatma metni — müşterinin kendi ilgili kişilerine yönelik.
- 2024 standart sözleşme mekanizması, Kurum'a bildirimiyle. Açık rızaya dayanılmamasının sebebi, rızanın geri alınabilir olması ve müşterinin kendi çalışan ya da son kullanıcı verisi için çoğu zaman geçerli bir dayanak olmamasıdır.
- DPA — Kolayz'ı veri işleyen olarak adlandıran, alt işleyen olarak AWS'i gösteren.
Riski düşüren üç yapısal unsur: içeriğin hiç saklanmaması, duran verinin tamamının Frankfurt'ta olması, ve talep eden kurumlar için AB'ye sabitli yönlendirme.
Kişisel veri içeren iş yükleri bu belgeler tamamlanmadan devreye alınmaz. Isuzu özelinde ayrıca mevcut mimari dokümanının ve KVKK notlarının revizyonu ile müşteri onayı gerekir; ClaimSense'in bugünkü kurgusu Kolayz'ı veri yolunun dışında tutmaktadır.
5. Kimlik ve marka koruması
Katalog, Anka adını bir Bedrock modeline bağlar. Bunun üç sonucu vardır ve üçü de sınanır:
- Yanıtta her zaman Anka adı döner — akışın her parçasında dahil. Müşterinin kodu temel model değiştiğinde etkilenmez.
- Kimlik talimatı her isteğin önüne eklenir ve önbelleğe uygun biçimde sabittir. Model kendini Anka olarak tanıtır, üreticisi olarak Kolayz'ı söyler, başka bir asistan olduğunu iddia etmez, yapay zekâ olduğunu inkâr etmez.
- Kimlik test paketi üç dilde 19 sorudur ve iki yönlü doğrulanmıştır: uyumlu bir yanıtın geçtiği, "ben Claude'um" diyen bir yanıtın düştüğü gösterilmiştir. Ayrıca sistem talimatını geri okutmaya çalışan bir sorusu vardır — talimat, yasakladığı markaların adını içerdiği için sızması istenmez.
Şeffaflık kararı (29 Ağustos 2026): hangi Anka adının o an hangi temel modelle karşılandığı herkese açık yayımlanır — üreticisi ve o üreticinin koşullarıyla birlikte. Üçüncü taraf model lisanslarının beklediği atıf böylece kendiliğinden karşılanır. Ad ve fiyat sabit kalır; arkasındaki model yükselebilir.
6. Ölçüm, muhasebe ve mutabakat
Her istek iki tutarla kaydedilir: müşteriye yansıyan fiyat ve Bedrock'ın bize kestiği maliyet. Faz 1'de fiyat sıfırdır, maliyet gerçektir — neyi ne kadar verdiğimizi görmek Faz 1'in amacıdır.
- Yazma sıcak yolun dışındadır. Bitmiş istek sınırlı bir kuyruğa girer, arka plan yazıcısı toplu yazar. Kuyruk dolarsa en eskisi düşer, sayılır ve alarm üretir; süreç düzgün kapanışta kuyruğu boşaltır. Kayıp yönü hep aynıdır: eksik sayarız, fazla faturalamayız.
- Fiyat yazma anında hesaplanır, isteğin gerçekleştiği andaki fiyat listesi satırıyla. Liste yalnızca eklenebilir olduğu için geçmiş istek her zaman aynı sonucu verir.
- Muhasebe kaydı değiştirilemez. Bakiye, satırların toplamıdır; bunu bir özellik testi doğrular. Hata, satır düzeltilerek değil, gerekçeli bir düzeltme satırı eklenerek giderilir.
- Aylık mutabakat. Ölçülen maliyet toplamı ile AWS Cost Explorer'ın Bedrock satırı karşılaştırılır; sapma %5'i aşarsa alarm ve e-posta. Sapmanın olağan sebebi, fiyat listesinde karşılığı olmayan bir temel modele düşen trafiktir. Bu disiplin, sabit fiyatlı abonelik satmadan önce kanıt üretme yoludur.
7. Güvenlik
- Anahtarlar: 256 bit,
kz-önekli, sunucuda yalnızca SHA-256 özeti; tek seferlik gösterim; döndürmede 24 saat ek süre, iptalde anında. - Sırlar yalnızca ortam değişkeninden. Yapılandırma dosyaları kimlik alanları boş şekilde dağıtılır ve bunu bir CI kontrolü her değişiklikte doğrular. Saklanan üçüncü taraf sırları ayrı bir koruyucudan geçer.
- LiteLLM ana anahtarı özel ağ kimliğidir; müşteri anahtarı hiçbir zaman yukarı gitmez, ana anahtar hiçbir zaman geri dönmez.
- Oturumlar: parolasız giriş (tek kullanımlık kod, isteğe bağlı TOTP), çift gönderimli CSRF kontrolü, HttpOnly çerez. Basılabilir kurtarma kodu yoktur; kaybolan doğrulayıcıyı platform yöneticisi sıfırlar ve bu denetim kaydına yazılır.
- Yetki: her uç nokta bir politika ilan eder ve rota tablosu koddaki bir testle karşılaştırılır — politikasız ya da yanlış politikalı yeni bir uç nokta derlemeyi düşürür.
- Acil durdurma üç seviyede (tüm trafik, kurum, anahtar), 5 saniyede etkili, geri alınabilir ve gerekçesiyle denetlenir.
- Denetim kaydı: fiyat, katalog, yetki, bakiye ve durdurma değiştiren her işlem, aynı işlemin içinde yazılır — biri olup diğeri olmaz.
8. Dağıtım
Tek CloudFormation yığını, eu-central-1. Şeklin iki kararı özel olarak gerekçelidir:
- NAT geçidi yok. Görevler genel alt ağda genel IP ile koşar ve Bedrock'a internet geçidinden ulaşır. NAT, neredeyse tamamı dışa giden HTTPS olan bir trafik için hesaplama gücünden pahalıya gelirdi.
- API alan adı doğrudan yük dengeleyiciye bakar, CDN'e değil. CloudFront'un kaynak
yanıt zaman aşımı 60 saniye civarında sınırlıdır; bir tamamlama dakikalarca akabilir.
CDN'i
/v1önüne koymak, akışı yalnızca üretimde bozar.
Aynı görevde iki konteyner çalışır: ağ geçidi (8080, yük dengeleyiciye kayıtlı) ve LiteLLM (4000, yalnızca görev içi geri döngü — yük dengeleyiciye kayıtlı değil, bunu bir altyapı testi doğrular). Veritabanı (MySQL 8.4) ve Redis yalıtılmış alt ağlardadır, internetten erişilemez. Arayüz S3 + CloudFront üzerinden dağıtılır.
Bedrock yetkisi model başına değil desen bazlıdır: yalnızca iki çağırma eylemi, temel model ve çıkarım profili desenlerinde. Hangi modelin sunulacağı kataloğun kararıdır; yeni bir model eklemek altyapı değişikliği gerektirmez. Statik AWS anahtarı hiçbir yerde yoktur; görev rolü kullanılır.
Göç (migration) asla dağıtımın yan etkisi olarak uygulanmaz. Her göçün elle okunabilir bir SQL karşılığı vardır ve bilinçli olarak uygulanır.
9. İzleme ve alarmlar
Panoda istek hızı, 5xx, ilk jeton gecikmesi (p50/p95), canlı harcama, ölçüm kuyruğu derinliği ve Bedrock kısıtlamaları vardır. Üç alarm kurulur:
| Alarm | Eşik | Ne anlama gelir |
|---|---|---|
| 5xx | 5 dakikada 10 | Ağ geçidi hata döndürüyor |
| Ölçüm kuyruğu | 2 dakika boyunca 5.000 | Kayıt düşme riski — bu bir faturalama olayıdır |
| Mutabakat sapması | %5 | Maliyet aritmetiği faturadan ayrıştı |
Harcama anomalileri ayrı bir yoldan işler: son bir saatteki harcaması kendi saatlik ortalamasının katlarına çıkan anahtar, kurum ya da servis etiketi konsolda listelenir. Sızmış bir anahtarın ilk görünür belirtisi budur.
Konsolda yapılan her kalıcı işlem — fiyat, katalog, yetki, bakiye, acil durdurma — yalnızca eklenebilir denetim kaydına yazılır.
10. Bilinçli olarak yapmadıklarımız
- İçerik loglama yok. Sorun ayıklamada bile istem görülmez; elde istek kimliği, sayaçlar ve hata sınıfı vardır.
- Staging ortamı yok. Prova yerelde yapılır: tam kalite kapısı, ardından gerçek bir yerel modele karşı kimlik testleri. İkinci bir ortamın maliyeti ve zamanla ayrışması, sağladığı güvenden fazla bulundu.
- LiteLLM veritabanısız. Sanal anahtar, kota ve maliyet defteri onda tutulmaz; faturalama gerçeği tek yerdedir.
- Abonelik modu kapalı. Sabit fiyat, mutabakatın maliyeti kanıtlamasından önce satılmaz; hiçbir uç nokta bir kurumu bu moda alamaz.
- WAF henüz yok. Faz 1'de davetli kayıt, anahtar başına limitler ve acil durdurma yeterli görüldü; kenar koruması dağıtım sonrası sertleştirme listesindedir.
11. Üretim durumu ve kalanlar
Yığın 7 Eylül 2026'da eu-central-1'e kuruldu ve çalışıyor.
| Tamamlandı | |
|---|---|
AWS hesabı, dağıtım rolü, cdk bootstrap |
Kolayz BT |
Alan adı sertifikaları ve DNS kayıtları (api.anka.kolayz.com, anka.kolayz.com) |
Kolayz BT |
| E-posta gönderim kimliği — SES alan adı doğrulaması, DKIM, üretimde denendi | Kolayz BT |
| Üretim dağıtımı: göçler uygulandı, katalog yüklendi, ilk yönetici tanımlandı | Kolayz BT |
| Şemanın gerçek MySQL 8.4 üzerinde doğrulanması | Kolayz geliştirme |
| Kalanlar | Kimde |
|---|---|
anka-max, anka-analyst, anka-claims için Bedrock kapasitesi — bu modellerin dakika başı token kotası hesapta sıfır, AWS talebi açık |
Kolayz BT |
| Kimlik testlerinin üretimde koşturulması | Kolayz geliştirme |
| İlk ay mutabakatının gerçek AWS faturasıyla karşılaştırılması | Kolayz finans + geliştirme |
| KVKK belgeleri ve DPA şablonu | Hukuk |
| Marka tescili (KOLAYZ, sınıf 9 ve 42) | Hukuk |