Politikalar (Policies)
Bu bölümde politikaların genel özellikleri anlatılmaktadır. Herhangi bir politikaya ve konfigürasyonunun nasıl yapılacağına ilişkin detaylı bilgi için ilgili politikanın kendi sayfasına bakılabilir.
API’ye gelen ya da API’den dönen mesajlar için güvenlik, performans iyileştirme ve kullanım kolaylığı sağlama gibi amaçlarla bir takım kurallar, kısıtlamalar ve dönüşümler tanımlamak için kullanılan varlıklar genel olarak politika olarak adlandırılır.
Politika, kod geliştirmeye ihtiyaç duymadan API davranışının 'programlanmasını' sağlar. API'ler için ortak yönetim gereksinimlerini kolay ve güvenilir bir şekilde karşılamak için tasarlanmıştır.
Güvenlik, hız sınırlama, dönüşüm ve aracılık yetenekleri gibi özellikler sunar ve bu işlevler için kod yazılması ve bakım/idamesinin yapılması yükünden kurtarır. Her bir politika, belirli bir fonksiyonu uygulayan ve davranışı konfigürasyonla özelleştirilebilen ayrı bir modül gibi çalışır.
Politika Türleri
Apinizer Platformunda sunulan politikalar, işlevsel açıdan kabaca aşağıdaki şekilde gruplanabilir:
Güvenlik (Security) Politikaları
- Plain-Text Kimlik Doğrulama (Plain-Text Authentication)
- Basic Kimlik Doğrulama (Basic (Base64) Authentication)
- Digest Kimlik Doğrulama (Digest Authentication)
- JWT Kimlik Doğrulama
- OAuth2 Kimlik Doğrulama
- JOSE Doğrulama
- JOSE Gerçekleştirim
- mTLS Kimlik Doğrulama (mTLS Authentication)
- Backend API Kimlik Doğrulama (Backend API Authentication)
- SAML Doğrulama
- Şifreleme (Encryption)
- Dijital İmzalama (Digital Signature)
- Şifre Açma (Decryption)
- Dijital İmza Doğrulama (Digital Signature Verification)
- WS-Security (Giden Mesaj)
- WS-Security (Gelen Mesaj)
- WS-Security STS Token
- Yetkilendirme (Authorization)
Erişim Denetimi (Access Control) Politikaları
- Yasaklı IP Listesi (Blocked IP Address List)
- İzin Verilen IP Listesi (Allowed IP Address List)
- Zaman Kısıtlaması (Time Restriction)
- API Bazlı Kota (API Based Quota)
- API Bazlı Daraltma (API Based Throttling)
Veri İşleme (Data Manipulation) Politikaları
- JSON Mesaj Dönüşümü (JSON Message Transformation)
- XML Mesaj Dönüşümü (XML Message Transformation)
- Veri Düzenleme (Redaction)
Tehdit Koruması (Threat Protection) Politikaları
- İçerik Filtreleri (Regular Expression Message Filters)
- JSON Şema Doğrulama (JSON Schema Validation)
- XML Şema Doğrulama (XML Schema Validation)
- Maksimum Mesaj Uzunluğu (Max Message Size)
- Minimum Mesaj Uzunluğu (Min Message Size)
Diğer Politikalar
Politika Uygulama Noktaları
Politikalar üç farklı noktada uygulanabilir.
- API Proxy Grupları: Bir API Proxy Grup üzerinde bir politika uygulandığı zaman, o gruptaki bütün API Proxy'ler için bu politika işletilir.
- API Proxy: Bir API Proxy üzerinde bir politika uygulandığı zaman, o API Proxy'nin bütün metot/endpoint'leri için bu politika işletilir.
- Metot/Endpoint: Bir metot/endpoint üzerinde uygulanan politika, yalnızca o metot/endpoint için işletilir, diğer metot/endpoint'leri etkilemez.
Farklı noktalara politikaların uygulanması ve bu politikaların işletilme sırasına ilişkin detaylı bilgi için Geliştirme Sekmesi bölümüne bakılabilir.
Politika Kullanım Tipleri
Politikalar yerel (local) ya da genel (global) olabilir.
Yerel Politika
Bir yerel politika, yalnızca eklenmek istendiği API Proxy'nin Geliştirme Sekmesi üzerinde oluşturulabilir ve sadece bu API Proxy tarafından kullanılabilir, API Proxy silindiğinde onunla birlikte silinir.
Global Politika
Global politikalar API Proxy'lerden bağımsız olarak Global Politikalar arayüzlerinden ya da bir API Proxy'nin Geliştirme Sekmesi içinden oluşturulabilir. Bir global politika sıfır ya da daha fazla API Proxy tarafından kullanılabilir. Bir API Proxy silindiğinde, o API Proxy tarafından kullanılan global politikalar bundan etkilenmez. Bununla birlikte, global politikada yapılan herhangi bir güncelleme, o politikayı kullanan bütün API Proxy'leri etkiler.
Politika Yapısı
Politikalar, tanımlı oldukları özel işlev açısından farklılaşan konfigürasyon bilgileri dışında yapısal olarak aynıdırlar ve bir takım ortak veri alanları içerirler.
Ortak Veri Alanları
Bütün politikalar için ortak olan bu veri alanları aşağıdaki tabloda görülmektedir.
Alan | Açıklama |
---|---|
Ad | Yerel politikalar için ihtiyaç duyulmadığından arayüzde görünmez. Ancak global politikalar için zorunlu alandır ve politika seçimlerinde kullanıcının aradığı politikayı bulabilmesi için kullanılır. Bir Proje içerisinde biricik (unique) olmalıdır. |
Açıklama | Oluşturulan politika ile ilgili kısa açıklama bilgisidir. Girilmesi isteğe bağlıdır. Özellikle global politikalar için girilmesinde fayda vardır. |
Koşullar (Conditions) | Bazen eklenen bir politikanın işletilmesine örneğin bir parametrenin varlığına ya da bir başlığın (header) değerine bakılarak karar verilmesi istenebilir. Apinizer, kullanıcıların bu gibi gereksinimleri ifade edebilmeleri için bütün politikalar için Koşullar bölümünü sunar. VE (AND), VEYA (OR), DEĞİL (NOT) gibi mantıksal işleçler de kullanılarak koşullar tanımlanabilir. Politika işletilmeden önce koşullar sınanır ve eğer koşullar sağlanmazsa o politika işletilmez. |
Hata Mesajı Özelleştirme (Error Message Customization) | Herhangi bir politika işletilirken çeşitli nedenlerden dolayı istemciye bir hata mesajı döndürülebilir. Hatanın nedenine bağlı olarak her politika için Apinizer tarafından önceden tanımlanmış hazır hata kodları ve mesajları bulunur. Kullanıcılar bu hata kodlarını ya da mesajlarını herhangi bir politika için özelleştirebilirler. |
Aktif | Politikanın aktiflik durumunu gösterir. Politikalar varsayılan olarak Aktif değeri ile oluşturulurlar. Ancak herhangi bir nedenle bu alanın değeri Pasif yapılarak geçici olarak devre dışı bırakılabilirler. |
Koşul Tanımlama
Politikaya belirli koşullar eklenerek sadece tanımlanan koşullar sağlandığı durumlarda çalışması sağlanır. Aşağıdaki görselde, seçilmiş olan politikaya uygulanabilecek koşullar gösterilmiştir:
Aşağıdaki görselde, seçilmiş olan politikanın yalnızca "status" parametresinin değeri "pending" ise çalışması istendiği bir örnek koşul görülmektedir.
Koşul değer kıyaslama operatörü olarak "listede olsun" veya "listede olmasın" seçeneği seçildiğinde, liste değerlerinin ayrımı için # işareti kullanılmalıdır. Örneğin user1#user2#user3 gibi.
Hata Mesajı Özelleştirme (Error Message Customization)
Hata mesajındaki HTTP Durum Kodu, Hata Kodu ve Hata Mesajı alanları özelleştirilebilir. Politika tanımlama arayüzünde o politika özelinde hata kodları ve mesajları özelleştirilebileceği gibi, platform genelinde de hata özelleştirme yapılabilir.
Hata Mesajını Özelleştirme alanları aşağıdaki tabloda görülmektedir.
Alan | Açıklama |
---|---|
HTTP Durum Kodu (HTTP Status Code) | Varsayılan HTTP durum kodudur. Varsayılan değeri, Sistem Ayarları → Hata Mesajları ekranı üzerinden atanmaktadır. |
Hata Kodu (Error Code) | Varsayılan hata kodudur. Varsayılan değeri, Sistem Ayarları → Hata Mesajları ekranı üzerinden atanmaktadır. |
Orijinal Mesaj (Original Message) | Varsayılan hata mesajıdır. Varsayılan değeri, Sistem Ayarları → Hata Mesajları Mesajları ekranı üzerinden atanmaktadır. |
Özelleştirilmiş HTTP Durum Kodu (Customized HTTP Status Code) | Varsayılandan farklı olarak döndürülecek HTTP durum kodudur. |
Özelleştirilmiş Hata Kodu (Customized Error Code) | Varsayılandan farklı olarak döndürülecek hata kodudur. |
Özelleştirilmiş Hata Mesajı (Customized Error Message) | Varsayılandan farklı olarak döndürülecek hata mesajıdır. |