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?

  • İstek veya yanıt üzerindeki verileri aksiyon zinciriyle iş kurallarına göre dönüştürerek tutarlı hale getirmek.
  • Farklı veri kaynaklarından gelen içerikleri normalize ederek API Proxy (API Vekil Sunucusu) akışında bütünlük sağlamak.
  • Koşullara bağlı kural yürütme ile sadece belirli endpoint akışlarında iş mantığı uygulamak.
  • Maskelenmesi veya çıkarılması gereken hassas alanları politika seviyesinde kontrol altında tutmak.

Ç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ü: İş Kuralı 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. Aksiyon Zinciri Çalıştırma: Aksiyon listesi sırasıyla değerlendirilir; her aksiyon seçilen veri tipine göre (numeric/string/temporal) operatörler uygular, gerekirse JWT claim çıkarır veya JSON/XML dönüşümü yapar.
  4. Karar Verme:
    • Eşleşme Var: Tüm aksiyonlar uygulanır; isteğin payload’ı, header’ı veya değişkenleri güncellenir.
    • Eşleşme Yok: Politika atlanır; istek mevcut haliyle akışta ilerler.
  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

  • Aksiyon Zinciri Yönetimi: ADD, MODIFY, DELETE, STOP gibi aksiyon tipleriyle istekteki değişkenler üzerinde sıralı işlemler tanımlanır.
  • Veri Tipi Bazlı Operatör Desteği: Numeric, String ve Temporal veri tipleri için farklı operatörler (ör. SUBSTRING, ADD_TEMPORAL, MULTIPLY) seçilebilir.
  • Gelişmiş Dönüşüm Yeteneği: JSON↔XML dönüşümleri, XSLT/JOLT tabanlı manipülasyonlar ve URL encode/decode işlemleri aksiyon kapsamında 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

  • JWT Claim Çıkarma: EXTRACT_JWT_HEADER_CLAIM ve EXTRACT_JWT_BODY_CLAIM operatörleri ile JWT içerikleri değişkenlere alınabilir.
  • Değişken Yönetimi Entegrasyonu: Kaynak ve hedef olarak proje değişkenleri seçilebilir, ihtiyaç halinde diyalog ekranından güncellenebilir.
  • Dönüşüm Profil Ayarları: JSON2XML/XML2JSON dönüşümlerinde null, boş ve array davranışları ince ayarla yönetilir.
  • 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ç
JWT Claim ZenginleştirmeKimlik doğrulaması sonrası kullanıcı rolü header’a taşınmak isteniyor.Action List: sourceDataType=STRING, operator=EXTRACT_JWT_BODY_CLAIM, targetVar=X-User-Role.Header’a role değeri eklenir, backend ek sorgu yapmaz.
Kredi Kartı MaskelemeLoglara tam kart numarası düşüyor.Action List: operator=MASK, maskFrom=6, maskTo=12.Kart numarası maskelenerek hassas veri korunur.
Tarih NormalizasyonuFarklı formatlarda tarih alınan endpoint’ler var.Action List: sourceDataType=TEMPORAL, operator=ADD_TEMPORAL (0 gün), format=yyyy-MM-dd.Tüm tarihler standart formata çevrilir.
XML → JSON DönüşümüLegacy servis XML döndürüyor, microservice JSON bekliyor.Action List: operator=TRANSFORM, transformationContentType=XML2JSON, unwrapElement=true.Yanıt JSON formatında yeniden yazılır
Değer Doğrulama ve DurdurmaHatalı değerde isteğin devam etmemesi gerekiyor.İlk aksiyon: şart kontrolü, ikinci aksiyon: actionType=STOP, custom error message.Kural ihlalinde akış durur ve özel hata döner.
Çoklu Değişken BirleştirmeFarklı header’lardan veri toplanıp yeni payload alanı oluşturulacak.Action List: operator=CONCAT ile kaynak header değerleri toplanır, targetValSource=VARIABLE.Yeni alan oluşturulur, downstream servis karmaşık işlem yapmaz.

Politika Parametrelerini Yapılandırma

Bu bölümde yeni bir Business Rule politikası oluşturabilir ya da mevcut politika parametrelerini yapılandırarak erişim kurallarını belirleyebilirsiniz.

Yeni İş Kuralı Politikası Oluşturma

İş Kuralı 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 → Business Rule 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_BusinessRule
- 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: “Prod ortamında istek akışındaki değişkenleri iş kurallarına göre dönüştürür.”
- Maks. 1000 karakter.
- Politikanın amacını açıklayın.
Adım 3: Aksiyon Zincirini Tanımlama- Action List tablosunda Add butonuna basın.
- Action Type (ADD/MODIFY/DELETE/STOP) seçin.
- Source Data Type belirleyin (NUMERIC/STRING/TEMPORAL).
- Operatörü seçerek (örn. SUBSTRING, ADD_TEMPORAL, EXTRACT_JWT_BODY_CLAIM) parametrelerini doldurun.
Adım 4: Kaynak ve Hedef Seçimi (Varsa)- Kaynak değer için Source Variable veya literal değer girin.
- Hedefte Target Variable ya da Target Value kullanın.
- Variable diyaloglarını açarak proje değişkenlerini oluşturup bağlayın.
Adım 5: 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

Detaylar için bakabilirsiniz: Koşullar (Conditions)
Adım 6: 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 7: Kaydetme- Sağ üstteki [Save] butonuna tıklayın.

Kontrol Listesi:
- Benzersiz isim
- Zorunlu alanlar dolu
- En az bir aksiyon 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 Yönetimi sayfasındaki Akıştan Politika Kaldırma bölümüne bakabilirsiniz.

Politikayı Dışa/İçe Aktarma

Bu politikanın dışa aktarma (Export) ve içe aktarma (Import) adımları için Export/Import sayfasına 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ı
JWT Claim Çıkarma Zinciri- Action Type olarak MODIFY seçin.
- Source Data Type = STRING, Operator = EXTRACT_JWT_BODY_CLAIM belirleyin.
- claimJsonPath alanına istenen claim’i girin, target variable seçin ve kaydedin.
XML2JSON Dönüşüm Profili- TRANSFORM operatörünü seçin ve transformationContentType=XML2JSON yapın.
- xmlToJsonIgnoreNull ve xmlToJsonIgnoreEmpty seçeneklerini ihtiyaca göre işaretleyin.
- Sonuç JSON’un hedef değişkene aktarılacağını doğrulayın.
Koşullu STOP Aksiyonu- Query Builder’da istenen kural koşulunu tanımlayın.
- Action List’e STOP tipinde aksiyon ekleyin ve özel hata mesajı seçin.
- Önceki aksiyonların koşulu sağladığında STOP aksiyonunun devreye girdiğini test edin.

Best Practices

Yapılması Gerekenler ve En İyi Uygulamalar

KategoriAçıklama / Öneriler
Aksiyon Zinciri TasarımıKötü: Tüm iş kurallarını tek aksiyonda toplamak.
İyi: Her kuralı ayrı aksiyon olarak tanımlamak.
En İyi: Mantıksal olarak gruplanmış aksiyonları sıraya koyup gerekirse STOP aksiyonu ile bölmek.
Değişken YönetimiKötü: Literal değerlerle çalışıp değişken kullanmamak.
İyi: Ortak değerleri proje değişkenlerinden okumak.
En İyi: Değişken diyaloğuyla versiyonlanan değişkenler oluşturup hedefleri standardize etmek.
Hata Mesajı YapısıKötü: Genel hata mesajı bırakmak.
İyi: Kullanıcıya yönlendirici mesaj yazmak.
En İyi: Hata mesajını kod, mesaj ve debug-friendly context ile özelleştirmek.
Koşul YönetimiKötü: Koşulları boş bırakarak her istekte politika çalıştırmak.
İyi: Endpoint veya header bazlı filtrelemek.
En İyi: Environment, kullanıcı segmenti ve metod bilgilerini kombine ederek Query Builder kullanmak.
Ortamlar Arası TaşımaKötü: Canlı Ortamda direkt düzenleme yapmak.
İyi: Test ortamında düzenleyip export etmek.
En İyi: ZIP export-import ile sürüm kontrolü yapıp değişiklikleri pipeline üzerinden deploy etmek.

Güvenlik En İyi Uygulamaları

Güvenlik AlanıAçıklama / Uyarılar
JWT Claim YönetimiClaim çıkarırken sadece ihtiyaç duyulan alanları alın, yetkili olmayan bilgileri maskeleyin.
Veri MaskelemeKişisel verileri MASK veya SUBSTRING ile kısaltın, loglara hassas veri düşmesini engelleyin.
Hata Mesajı KontrolüÜretimde hata mesajlarına iç sistem detaylarını koymayın. Genel ama yönlendirici mesaj yazın.
Global Politika GüncellemeleriGlobal politikayı güncellemeden önce kullanım listesini inceleyin, gerekiyorsa localize edin.
Değişken YetkilendirmesiTarget variable olarak sadece yetkili kullanıcıların eriştiği değişkenleri seçin, izinleri kontrol edin.

Kaçınılması Gerekenler

KategoriAçıklama / Uyarılar
Boş Aksiyon ListesiNeden kaçınılmalı: Politika kaydedilse bile hiçbir işlem yapılmaz, beklenen iş akışı bozulur.
Alternatif: En az bir aksiyon tanımlayıp doğrulama ikonunu kontrol edin.
Yanlış Veri Tipi SeçimiNeden kaçınılmalı: Operatör hata verir veya beklenmedik sonuç doğar.
Alternatif: Kaynak veriyi analiz edin, Numeric/String/Temporal tipini doğru seçin.
Kontrolsüz STOP KullanımıNeden kaçınılmalı: Tüm istekler yanlışlıkla durdurulabilir, servis kesintisi yaşanır.
Alternatif: STOP aksiyonunu sadece koşul filtresi sonrası uygulayın.
Global Politikayı Direkt SilmeNeden kaçınılmalı: Birden fazla API korumasız kalabilir.
Alternatif: Önce deactivate edin veya local politika ile değiştirip sonra silin.

Performans İpuçları

KriterÖneri / Etki
Aksiyon SırasıÖneri: Sık kullanılan ve hafif aksiyonları başa alın.
Etki: Gereksiz ağır işlemlerden önce akış sonlandırılabilir.
Dönüşüm OperatörleriÖneri: TRANSFORM operasyonlarını minimal kullanın, gerekiyorsa ayrı politika açın.
Etki: CPU yükü azalır, gecikme düşer.
Koşul FiltreleriÖneri: Query Builder ile dar kapsamlı koşullar yazın.
Etki: Politika sadece gerektiğinde çalışır, throughput artar.
Değişken PaylaşımıÖneri: Sık kullanılan değerleri proje değişkenlerine alın.
Etki: Aksiyon içinde tekrar tekrar literal işlem yapılmaz.
JWT İşlemleriÖneri: JWT claim çıkarmayı sadece ihtiyaç duyulan isteklerle sınırlayın.
Etki: Gereksiz parsing maliyeti düşer.

Sık Sorulan Sorular (SSS)

KategoriSoruCevap
GenelBu politika hangi tip veriler üzerinde çalışır?Numeric, String ve Temporal veri türleriyle çalışır; operatör seçimi veri tipine göre otomatik filtrelenir.
GenelGlobal mi local mi oluşturmalıyım?Birden fazla API Proxy’de aynı kural gerekiyorsa global, tek API için özelse local önerilir.
TeknikSTOP aksiyonu ne yapar?Aksiyon zinciri bu noktada durur, özelleştirilmiş hata mesajı döndürülür ve akış sonlanır.
TeknikJWT claim çıkarırken hedef değer nasıl setlenir?Operatör otomatik olarak target value kaynağını VARIABLE yapar; bir proje değişkeni seçmeniz gerekir.
KullanımAction List boş ise neden uyarı alıyorum?Politikanın çalışması için en az bir aksiyon zorunludur; uyarı ikonu bunu bildirir.
KullanımXML2JSON dönüşümünde array alanlarını nasıl kontrol ederim?xmlToJsonArrayPathList alanına dizi olması gereken XPath’leri girerek dönüşümde doğru tip elde edersiniz.