Geleneksel trafik kuralları genellikle host, path, method ve header üzerinden karar verir. Ancak modern API trafiğinde asıl karar değeri çoğu zaman JSON body içindedir. Kullanıcının rolü, tenant kimliği, işlem tipi, tutar bilgisi, ürün kodu veya GraphQL operasyon adı URL'de görünmeyebilir.
Bu durumda operatör iki kötü seçenekle karşılaşır. Ya uygulama koduna ek yönlendirme ve güvenlik mantığı yazılır, ya da ADC yalnız header/path seviyesinde kör kalır. Her iki yaklaşım da modern API güvenliği için yetersizdir.
JWT kullanan servislerde benzer problem token içinde yaşanır. Header'da yalnız Authorization değeri görünür; fakat karar için gereken rol, grup, tenant veya scope bilgisi JWT payload içinde saklıdır. Bu alanlar okunamıyorsa trafik politikası kimlik bağlamını kullanamaz.
Doğru yaklaşım, JSON gövdesi ve JWT içeriğini ifade dilinin doğal parçası haline getirmektir. JSONPath sorguları trafik koşulu, güvenlik kuralı, log zenginleştirme ve veri maskeleme aksiyonlarıyla aynı yerde kullanılmalıdır.
TR7 JSON İşleme ve Path Sorgulamaları bu modeli sunar: JSONQUERY, JWTHEADER ve JWTPAYLOAD fonksiyonlarıyla API içeriğini ADC ve WAAP kararlarına bağlar.
TR7, JSON içeriğini FX ifade motoru üzerinden okuyarak trafik kuralı, güvenlik kontrolü, log zenginleştirme ve response düzenleme süreçlerine taşır.
JSONQUERY, JSONPath ifadesiyle request veya response gövdesindeki belirli alanları hedefler. Bu alanlar trafik koşulu, ACL veya log değeri olarak kullanılabilir.
JWT içindeki header ve payload alanları JSONPath mantığıyla okunabilir. Rol, scope, tenant veya kullanıcı bilgisi trafik kararına dahil edilebilir.
Body içindeki değerler path veya header kadar doğal bir koşul haline gelir. Örneğin `$.tenant_id`, `$.user.role` veya `$.operationName` değerine göre aksiyon seçilebilir.
Hassas JSON alanları response tarafında maskelenebilir veya değiştirilebilir. Böylece veri sızıntısı önleme, yalnız log tarafında değil kullanıcıya dönen body üzerinde de uygulanabilir.
JSON İşleme ve Path Sorgulamaları, JSON body ve JWT içeriğini TR7'nin kural, güvenlik, log ve maskeleme katmanlarına bağlar.
JSONQUERY, body içindeki nested JSON alanlarını doğrudan sorgulamak için kullanılır. `$.user.role`, `$.items[0].sku` veya `$.payment.amount` gibi alanlar kural koşulunda değerlendirilebilir. Operatör URL veya header'a yansımayan karar verisini kullanabilir. Bu, API trafiğini gerçek içerik bağlamıyla yönetmeyi sağlar.
TR7, JSON'dan okunan alanı trafik kuralının koşulu olarak kullanabilir. Örneğin `tenant_id` değerine göre farklı kurum servisi havuzuna yönlendirme yapılabilir. `role` değeri uygun değilse istek reddedilebilir. Böylece uygulama kodu değiştirilmeden body-aware trafik politikası kurulur.
JWTPAYLOAD fonksiyonu token içindeki claim alanlarını okuyabilir. Kullanıcı rolü, grup, scope, tenant veya uygulama kimliği bu şekilde trafik kararına dahil edilir. Bu, Authorization header'ın yalnız ham token olarak görülmesini engeller. TR7 token içeriğini policy sinyaline dönüştürür.
JWTHEADER fonksiyonu token header alanlarını okuyabilir. Algoritma, key id veya token tipi gibi metadata kontrolleri yapılabilir. Bu bilgi güvenlik kuralı, log veya conditional access senaryolarında kullanılabilir. Token sadece geçiş verisi değil, denetlenebilir bir nesne olur.
Bazı uygulamalar JSON benzeri veri yapılarını özel header alanlarında taşır. TR7 bu alanları da ifade motoru içinde parse edilebilir sinyal olarak kullanabilir. Böylece yalnız body değil, header içindeki yapılandırılmış veri de kurallara dahil olur. Legacy entegrasyonlarda bu esneklik önemlidir.
API Gateway senaryolarında body içindeki `operation`, `tenant`, `region` veya `product` değeri yönlendirme sinyali olabilir. TR7 bu alanlara göre farklı kurum servisi havuzlarına trafik aktarabilir. Bu, tek endpoint altında çoklu uygulama veya tenant ayrımı yapılmasını sağlar. Uygulama koduna routing mantığı gömmek gerekmez.
Log satırlarına JSON body veya JWT içinden seçilen alanlar eklenebilir. Örneğin kullanıcı email'i, tenant kimliği, işlem tipi veya risk skoru logda ayrı alan olarak görünebilir. Bu, SIEM korelasyonunu güçlendirir. Ham body loglamak yerine yalnız gerekli alanlar alınarak veri minimizasyonu da sağlanabilir.
TR7, response body üzerinde mask veya replace aksiyonlarıyla JSON içindeki hassas değerleri koruyabilir. Kart numarası, kimlik numarası, hasta ID'si, e-posta veya benzer alanlar regex ya da path temelli hedeflenebilir. Bu, uygulama ekibinden kod değişikliği beklemeden veri sızıntısı riskini azaltır. Hassas veri maskeleme sayfasıyla birlikte katmanlı çalışır.
JSON body içindeki izin verilen veya zorunlu alanlar güvenlik politikasına bağlanabilir. Bilinmeyen alanlar, eksik zorunlu parametreler veya aşırı nested yapılar bloklanabilir. Bu, API schema drift ve injection yüzeyini azaltır. JSON içerik denetimi negative security imzalarının ötesine geçer.
Çok derin veya çok fazla anahtar içeren JSON payload'lar uygulama ve parser kaynaklarını tüketebilir. TR7, JSON nesting depth ve key count gibi limitleri güvenlik politikası olarak uygulayabilir. Bu, API DoS ve beklenmedik body yapılarının etkisini azaltır. Limitler endpoint hassasiyetine göre ayarlanabilir.
JSON parse edilemiyorsa istek güvenilir API body olarak kabul edilmez. TR7 malformed JSON durumunda isteği kurum servisine iletmeden reddedebilir veya loglayabilir. Bu, uygulama katmanında beklenmedik parse hatalarını azaltır. Aynı zamanda saldırı ve hatalı istemci ayrımı için görünürlük sağlar.
JSONQUERY sonucu string, regex, map, list, IP veya hash fonksiyonlarıyla birlikte kullanılabilir. Örneğin JSON'dan tenant alınır, map tablosunda aranır, sonuç yönlendirme veya blok kararına dönüşür. Bu, JSON sorgusunu tek başına yardımcı fonksiyon değil, politika motorunun parçası yapar. Karmaşık API kararları görsel kural editöründe ifade edilebilir.
JSON operasyonları; body buffering, parse hatası, JWT alanları, log minimizasyonu, response düzenleme ve performans sınırlarıyla birlikte işletilir.
JSON sorgusu için body'nin okunabilir hale gelmesi gerekir. Bu nedenle body-aware kurallar, header-only kurallara göre daha fazla işlem gerektirir. Sadece gerçekten ihtiyaç duyulan endpoint'lerde kullanılmalıdır.
JSON parse edilemiyorsa politika reddetme, loglama veya farklı aksiyon üretebilir. API endpoint'i JSON bekliyorsa malformed payload kurum servisine gönderilmemelidir. Bu davranış endpoint güvenliğini artırır.
JWT içeriğini okumak ile token doğrulamak aynı şey değildir. JWT claim değerleri trafik kararında kullanılacaksa imza doğrulama ve güven kaynağı politikası ayrıca değerlendirilmelidir. Aksi halde saldırgan sahte claim üretebilir.
Tüm JSON body'yi loglamak yerine yalnız gerekli alanları çıkarmak daha güvenlidir. Tenant, operation veya status gibi alanlar loglanabilir; hassas alanlar maskelenmelidir. Bu yaklaşım SIEM görünürlüğü ile veri korumayı dengeler.
Response JSON maskeleme body üzerinde işlem yaptığı için boyut ve içerik tipi önemlidir. Çok büyük response'larda performans ve bellek etkisi planlanmalıdır. Hassas veri koruması için doğru endpoint ve alan hedeflemesi yapılmalıdır.
JSON parse ve path sorgusu header kontrolüne göre daha maliyetlidir. Aynı request içinde birden fazla JSON sorgusu kullanılacaksa sonuçların yeniden kullanımı önemlidir. Kurallar gereksiz tekrar parse oluşturmayacak şekilde tasarlanmalıdır.
SaaS API tek endpoint üzerinden çoklu tenant trafiği alabilir. TR7 `$.tenant_id` alanını okuyarak trafiği doğru kurum servisi havuzuna yönlendirebilir.
Authorization token içindeki rol veya scope değeri okunabilir. Admin path'lerine yalnız belirli claim değerine sahip kullanıcıların erişmesi sağlanabilir.
API response içinde dönen kart, kimlik veya kullanıcı verisi maskelenebilir. TR7, uygulama kodu değişmeden hassas alanların dışarı açık görünmesini azaltır.
JSON bekleyen endpoint malformed body aldığında TR7 isteği erken reddedebilir. Bu, uygulama parse hatalarını ve saldırı yüzeyini azaltır.
Ham body loglamak yerine yalnız `operationName`, `tenant`, `userId` gibi alanlar çıkarılabilir. SIEM korelasyonu güçlenir, veri minimizasyonu korunur.
JSONQUERY, JWTHEADER ve JWTPAYLOAD ile JSON body ve JWT alanları kural koşuluna, log alanına ve maskeleme aksiyonuna dönüşür. Kendi servislerinizle canlı bir kurulumda gezdirelim.