Ana içeriğe atla
Bu doküman spesifik bir politikanın detaylı kullanımını anlatır. Eğer Apinizer politika yapısını ilk kez kullanıyorsanız veya politikaların genel çalışma prensiplerini öğrenmek istiyorsanız, öncelikle Politika Nedir? sayfasını okumanızı öneririz.

Genel Bakış

Amacı Nedir?

  • API Proxy (API Vekil Sunucusu) çağrılarında gelen isteklerin başlık, parametre ve gövde içeriklerini tarayarak kötü amaçlı ifadelerin sisteminize ulaşmasını engeller.
  • Hassas veya kişisel verilerin backend sistemlerine iletilmeden önce anonimleştirilmesini ya da tamamen çıkarılmasını sağlar.
  • Regülasyon uyumluluğu için isteklerdeki politikaya aykırı içerikleri tespit edip merkezi şekilde yönetilebilir hale getirir.
  • Önceden tanımlı filtre kurallarıyla tutarlı bir güvenlik katmanı oluşturarak manual hataları azaltır.

Çalışma Prensibi

  1. İstek Gelişi: API Gateway’e gelen her HTTP/HTTPS isteği için, istemin kaynak IP adresi tespit edilir.
  2. Politika Kontrolü: İçerik Filtresi politikası aktif ise, sistem aşağıdaki sırayla kontrol yapar:
    • Condition (koşul) tanımlı mı? Varsa koşul sağlanıyor mu?
    • Politika aktif mi (active=true)?
    • Variable kullanılıyor mu yoksa Apinizer default mı?
  3. İçerik İnceleme Kuralları: Tanımlı her filtre kuralı için header, parametre ve gövde alanları regex tabanlı taranır; gövde için isteğe bağlı XPath veya JSONPath ile hedef alan izole edilir.
  4. Karar Verme:
    • Eşleşme Var: BLOCK seçilmişse istek 403 yanıtıyla sonlandırılır; DELETE seçilmişse eşleşen değer başlıktan, parametreden veya gövdeden çıkarılarak akış devam eder.
    • Eşleşme Yok: İstek orijinal biçimiyle bir sonraki politikaya iletilir.
  5. Hata İşleme: Politika kuralına uymayan istekler için özelleştirilebilir HTTP durum kodu ve hata mesajı döndürülür.

Özellikler ve Yetenekler

Temel Özellikler

  • Regex Tabanlı Kural Motoru: Kural ifadeleri ile başlık, parametre veya gövdede geçen şüpheli içerikler yakalanır ve işlendiği alanlardan kaldırılır ya da engellenir.
  • Çoklu Uygulama Alanı Seçimi: Aynı kuralın header, query parametresi ve gövde üzerinde eş zamanlı uygulanmasını destekleyerek tutarlı koruma sağlar.
  • İçerik Yolu Hedefleme: Gövde kontrollerinde XPath veya JSONPath ile belirli node/alanlar seçilebilir, böylece hedefe yönelik filtreleme yapılır.
  • Aktif/Pasif Durum Kontrolü: Politikanın aktif veya pasif durumunu kolayca değiştirme (active/passive toggle). Pasif durumda politika uygulanmaz ancak yapılandırması saklanır.
  • Koşul Bazlı Uygulama: Query Builder ile karmaşık koşullar oluşturarak politikanın ne zaman uygulanacağını belirleme (örn: sadece belirli endpoint’lere veya header değerlerine göre).

İleri Düzey Özellikler

  • Ön Tanımlı Kural Kütüphanesi: Hazır filtre kuralları listesinden seçim yaparak doğrulanmış regex ifadelerini politikaya hızla ekleme.
  • İçerik Dönüşüm Testi: XPath/JSONPath ifadelerini Test Transformation modalı ile canlı veride doğrulama ve gerektiğinde iyileştirme.
  • Kural Düzeyinde Eylem Seçimi: Her kural için BLOCK veya DELETE kararı belirlenerek farklı alanlara farklı davranış atama.
  • Export/Import Özelliği: Politika yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Development, Test, Production) import etme. Versiyon kontrolü ve yedekleme imkanı.
  • Policy Group ve Proxy Group Desteği: Birden fazla politikayı Policy Group içinde yönetme. Proxy Group’lara toplu politika atama. Merkezi güncelleme ve deploy işlemleri.
  • Deploy ve Versiyonlama: Politika değişikliklerini canlı ortama deploy etme. Hangi API Proxy’lerde kullanıldığını görme (Policy Usage). Proxy Group ve Policy Group kullanım raporları.

Kullanım Senaryoları

SenaryoDurumÇözüm (Politika Uygulaması)Beklenen Davranış / Sonuç
SQL Injection EngellemeParametrelerde union select gibi kalıplar görülebilirruleValue = (?i)union.+select, paramActive = true, action = BLOCKKural eşleştiğinde istek 403 ile reddedilir ve backend korunur
Kredi Kartı MaskesiJSON gövdesinde kart numarası taşınıyorJSONPath $..cardNumber, regex \\b\\d{12,19}\\b, action = DELETEKart numarası gövdeden çıkarılır, istek kalan verilerle devam eder
Zararlı Header TemizliğiX-Forwarded-For başlığında yasak IP listesi varheaderActive = true, regex yasak blok, action = DELETEHeader silinir, kayıt altına alınır
XML Script EngellemeXML isteğinde <script> tag’i gönderiliyorXPath ile ilgili node seçilir, regex <script> ve altı, action = BLOCKİstek anında bloklanır ve özel hata mesajı döner
DLP - Kimlik Numarasıİstek gövdesinde TC kimlik numarası paylaşılıyorJSONPath $..identityNo, regex \\b\\d{11}\\b, action = DELETEKimlik numarası çıkarılır; loglarda temizlenmiş içerik görünür
Bot İzi KaldırmatrackingId parametresi sistemler arası taşınmasınParametre seçimi, regex .+, action = DELETEParametre tamamen silinir, backend gereksiz veriyi görmez
Coğrafi Kısıtlı MesajBelirli coğrafyadan gelen isteklerde hassas alan temizlensinCondition ile ülke bazlı koşul, gövde yolu seçimi, action = DELETESadece koşulu sağlayan isteklerde alan kaldırılır

Politika Parametrelerini Yapılandırma

Bu adımda, kullanıcı yeni bir politika oluşturabilir ya da mevcut politika parametrelerini yapılandırarak erişim kurallarını belirleyebilir.

Yeni İçerik Filtresi Politikası Oluşturma

İçerik Filtresi Politikası Yapılandırma

Yapılandırma Adımları

AdımAçıklama / İşlem
Adım 1: Oluşturma Sayfasına Gitme- Sol menüden Development → Global Settings → Global Policies → Content Filtering bölümüne gidin.
- Sağ üstteki [+ Create] butonuna tıklayın.
Adım 2: Temel Bilgileri GirmePolicy Status (Politika Durumu): Aktif/Pasif durumu gösterir. Yeni politikalar varsayılan olarak aktiftir.

Name (İsim) Zorunlu:
Örnek: Production_ContentFilter
- Benzersiz isim girin, boşlukla başlamaz.
- Sistem otomatik kontrol eder. Yeşil tik: kullanılabilir. Kırmızı çarpı: mevcut isim.

Description (Açıklama):
Örnek: “Giriş isteklerinden hassas veriyi temizler.”
- Maks. 1000 karakter.
- Politikanın amacını açıklayın.
Adım 3: Filtre Kuralı Tanımlama- Rule Name: İnsan tarafından okunabilir kural adı belirleyin.
- Rule Expression: Regex ifadesini girin veya hazır listeden seçin.
- Apply On: Header, Parameter ve Body seçeneklerini işaretleyerek kuralın etki alanını belirleyin.
Adım 4: Gövde İçeriği Hedefini Belirleme- Body seçiliyse ilgili XPath veya JSONPath’i tanımlayın.
- XML/JSON radyo butonları ile içerik tipini seçin.
- Code editor içinde yolu düzenleyin.
Adım 5: Eylem ve Test Seçimi- BLOCK ile isteği sonlandırın, DELETE ile içeriği temizleyin.
- Gerekirse [Choose] ile hazır kural seçin.
- [Test Data Transformation] ile XPath/JSONPath ifadesini doğrulayın.
Adım 6: Koşul Tanımlama (İsteğe Bağlı)- Condition sekmesine geçin.
- Koşullar, politikanın hangi durumda aktif olacağını belirler.

Örnekler:
- Ortam bazlı: Header = X-Environment, Operator = Equals, Value = production
- API Key bazlı: Header = X-API-Key, Starts With = PROD-
- Endpoint bazlı: Path = /api/admin/*

Koşul tanımlamazsa politika her zaman aktif

Adım 7: Hata Mesajı Özelleştirme (İsteğe Bağlı)- Error Message Customization sekmesine gidin.
- Erişim reddedildiğinde dönecek mesajı özelleştirin.

Varsayılan:
{ "statusCode": 403, "message": "[Default hata mesajı]" }

Özel:
{ "statusCode": 403, "errorCode": "[CUSTOM_ERROR_CODE]", "message": "[Özel mesaj]" }
Adım 8: Kaydetme- Sağ üstteki [Save] butonuna tıklayın.

Kontrol Listesi:
- Benzersiz isim
- Zorunlu alanlar dolu
- En az bir filtre kuralı mevcut

Sonuç:
- Politika listeye eklenir.
- API’lere bağlanabilir.
- Global politikaysa otomatik uygulanır.
Koşullar ve Hata Mesajı Özelleştirme panellerinin açıklaması için Politika Nedir? sayfasındaki Koşullar ve Hata Mesajı Özelleştirme (Error Message Customization) bölümlerini inceleyebilirsiniz.

Politikayı Silme

Bu politikanın silme adımları ve kullanımdayken uygulanacak işlemler için Politika Nedir? sayfasındaki Politikayı Silme bölümüne bakabilirsiniz.

Politikayı Dışa/İçe Aktarma

Bu politikanın dışa aktarma (Export) adımları ve kullanılabilecek seçenekler için Politika Nedir? sayfasındaki Politikayı Dışa/İçe Aktarma bölümüne bakabilirsiniz.

Politikayı API’ye Bağlama

Bu politikanın API’lere nasıl bağlanacağına ilişkin süreç için Politika Yönetimi sayfasındaki Politikayı API’ye Bağlama bölümüne bakabilirsiniz.

İleri Düzey Özellikler

ÖzellikAçıklama ve Kullanım Adımları
Regex Şablon Yönetimi- Politika düzenleme ekranında kural listesine gidin.
- [Choose] bağlantısıyla hazır regex’i seçin veya manuel girin.
- Kaydetmeden önce test edip onaylayın.
XPath/JSONPath Doğrulama- Body seçeneğini aktif edin ve içerik tipini belirleyin.
- Code editor’de yolu tanımlayın.
- [Test Data Transformation] ile ifadenin doğru değer döndürdüğünü doğrulayın.
Kural Bazlı Eylem Ayrımı- Her kural için BLOCK veya DELETE seçeneğini belirleyin.
- Bloklanan kurallar için hata mesajını Error Message sekmesinden özelleştirin.
- Delete seçeneği kullanılan kuralların log’larını gözden geçirin.

Best Practices

Yapılması Gerekenler ve En İyi Uygulamalar

KategoriAçıklama / Öneriler
Regex YönetimiKötü: Tüm saldırıları tek bir geniş regex ile yakalamaya çalışmak.
İyi: Saldırı tipine göre ayrı regex’ler tanımlamak.
En İyi: Hazır şablonları baz alıp proje ihtiyaçlarına göre küçük eklemeler yapmak.
İçerik Yolu TanımlarıKötü: Gövdeyi tamamen hedef almak.
İyi: Kritik alanlar için XPath/JSONPath belirlemek.
En İyi: Hem path hem regex kullanıp minimum kapsamda maksimum koruma sağlamak.
Eylem SeçimiKötü: Her kuralı BLOCK yapmak ve hatalı pozitiflerde istekleri kesmek.
İyi: Silinebilir alanlar için DELETE, riskli durumlar için BLOCK seçmek.
En İyi: Delete sonrası log izleme ve gerektiğinde blok moduna geçiş planlamak.
Ön İzleme ve TestKötü: Üretime almadan test yapmamak.
İyi: Geliştirme ortamında test verileriyle denemek.
En İyi: Test Transformation aracı ve pre-prod trafik shadowing ile doğrulama yapmak.
Politika KoşullarıKötü: Politikayı her isteğe uygulamak.
İyi: Ortam veya endpoint bazlı koşullar tanımlamak.
En İyi: Riskli endpoint’ler için dar kapsamlı koşullar, düşük riskli alanlar için hafif kurallar belirlemek.

Güvenlik En İyi Uygulamaları

Güvenlik AlanıAçıklama / Uyarılar
DLP KorumasıHassas veri (kimlik, kart, IBAN) regex’lerini düzenli olarak güncelleyin ve Delete modunda saklayın.
Header SağlamlığıZincir proxy’lerde gelen başlıklarda güvenilmeyen değerleri filtreleyin, delete sonrası loglayın.
Regex PerformansıReDoS’a yol açabilecek kompleks regex’lerden kaçının; gerekirse atomic gruplar kullanın.
Hata Mesajı İçeriğiBlock durumunda dönen mesajlarda iç yapıyı ifşa etmeyin; genel ama takip edilebilir kodlar kullanın.
Log Hijyenini KorumaDelete edilen içerikleri loglamayın; anonimleştirilmiş maskeleri tercih edin.

Kaçınılması Gerekenler

KategoriAçıklama / Uyarılar
Aşırı Genel RegexNeden kaçınılmalı: Yanlış pozitiflere yol açarak meşru trafiği durdurur.
Alternatif: Spesifik saldırı imzaları kullanın.
Path TanımlamamakNeden kaçınılmalı: Tüm gövdeyi silme riskini artırır.
Alternatif: XPath/JSONPath ile noktasal alanı hedefleyin.
Koşulsuz Global UygulamaNeden kaçınılmalı: Düşük riskli endpointlerde gereksiz yük oluşturur.
Alternatif: Query Builder ile hedefli koşullar tanımlayın.
Test Etmeden DeployNeden kaçınılmalı: Üretimde blokaj veya veri kaybı yaşanır.
Alternatif: Test aracında regex/path kombinasyonunu doğrulayın.

Performans İpuçları

KriterÖneri / Etki
Regex KarmaşıklığıÖneri: Non-greedy desenler ve sınırlı lookaround kullanın.
Etki: CPU kullanımını azaltır, throughput artar.
Kural SayısıÖneri: Kuralları risk seviyesine göre gruplandırın, gereksiz kopyaları temizleyin.
Etki: İstek başına değerlendirme süresi kısalır.
Body İşlemeÖneri: Mümkün olduğunca path ile alt içerikleri seçin.
Etki: Büyük gövdelerde parse maliyeti azalır.
Koşul KullanımıÖneri: Politikanın çalışmadığı durumları koşulla hariç tutun.
Etki: Gereksiz regex çalıştırmaları engellenir.
Log ve İzlemeÖneri: Delete edilen alanları sayısal metrik olarak toplayın, tam içeriği loglamayın.
Etki: I/O yükü düşer, gizlilik korunur.

Sık Sorulan Sorular (SSS)

KategoriSoruCevap
Genelİçerik Filtresi Politikası hangi tür verileri denetler?Header, query parametreleri ve JSON/XML gövdeleri regex tabanlı olarak taranır. Body için isteğe bağlı XPath/JSONPath hedeflenebilir.
GenelPolitika global ve local farklı çalışır mı?Davranış aynıdır; global politika tüm proxy’lere uygulanabilirken local politika yalnızca belirlenen API Proxy (API Vekil Sunucusu) üzerinde çalışır.
TeknikRegex ifadesi olarak hangi standart kullanılır?Java regular expression söz dizimi kullanılır; Pattern.compile() ile derlenir ve Matcher.find() ile eşleşme aranır.
TeknikDELETE eylemi body’de nasıl uygulanıyor?Path tanımlıysa ilgili node silinir, tanımsızsa gövde boş string’e çekilir ve istek devam eder.
KullanımHata mesajı nasıl özelleştirilir?Error Message sekmesinde durum kodu, mesaj ve hata kodu alanları düzenlenebilir; bloklanan kural adı parametre olarak kullanılabilir.
KullanımHazır filtre kuralları nereden geliyor?Admin → Predefined Filter Rules bölümünde yönetilen global kural kütüphanesinden çekilir ve seçim dialogunda listelenir.