İstemci Yasaklama (Client Ban)
Client Ban politikası, belirli bir süre içinde hata sayısı veya hata oranı belirli bir eşiği aşan istemcileri geçici olarak engelleyen bir politikadır.
Bu politika, "devre kesici" (circuit breaker) desenini kullanarak, art arda başarısız istekler gönderen istemcileri otomatik olarak engeller ve sistem kaynaklarını korur.
Çalışma Şekli
- İstemci bir istek gönderdiğinde, politika önce istemciyi tanımlamak için belirtilen değişkenlerin değerlerini alır ve birleştirerek benzersiz bir istemci anahtarı oluşturur.
- Sistem, bu istemci için bir devre kesici (CircuitBreakerForClientBan) oluşturur ve durumunu kontrol eder.
- Eğer devre kesici açık durumdaysa (yani istemci engellenmiş durumdaysa):
- "Enable Retry-After Header" etkinse, yanıta bir "Retry-After" başlığı eklenir.
- İstek engellenir ve istemciye hata dönülür.
- Eğer devre kesici kapalı durumdaysa (istemci engellenmemiş), istek normal şekilde işlenir.
- İstek işlendikten sonra, yanıt döndürülmeden önce politikanın "hata hattı" metodu çağrılır:
- Response Assertion koşulu kontrol edilir.
- Koşul sağlanmazsa (yani bir hata durumu oluşursa), hata sayacı artırılır.
- Hata sayısı veya oranı, belirlenen eşiği aşarsa, devre kesici açılır ve istemci Ban Time süresince engellenir.
Bu politika, API'leri art arda başarısız istekler veya kötü niyetli saldırılar gönderen istemcilerden korumak için kullanılır.
Örneğin, sürekli geçersiz kimlik bilgileri gönderen, hata alınan istekleri tekrarlayan veya sistemi zorlayan istemcilerin engellenmesini sağlayarak sistem performansını ve güvenliğini korur.
Politika ayarlarını içeren görsele aşağıda yer verilmiştir:
Politika konfigürasyonu için kullanılan alanlar aşağıdaki tabloda görülmektedir.
Alan | Açıklama |
---|---|
İsim (Name) | Politikanın kullanımını ve yönetimini kolaylaştırmak için isim yazılabilir. Politikaların yönetimi ve seçimi sırasında bu isme ihtiyacınız olacaktır. |
Açıklama (Description) | Politikanın kullanımını ve yönetimini kolaylaştırmak için açıklama yazılabilir. |
Variable List for Client Identity | İstemciyi tanımlamak için kullanılacak değişkenlerin listesi. Bu değişkenler (örn. IP adresi, kullanıcı kimliği, API anahtarı) istemciyi benzersiz şekilde tanımlamak için kullanılır. Bu değişkenlerin değerleri birleştirilerek istemci için benzersiz bir anahtar oluşturulur. |
Threshold Window in seconds | Hata eşiğinin hesaplanacağı zaman penceresi süresini saniye cinsinden belirler. Örneğin, 10 saniye olarak ayarlanırsa, sistem son 10 saniye içindeki hataları izler. |
Threshold Count per Window | Belirtilen zaman penceresi içinde izin verilen maksimum hata sayısını belirler. Bu sayı aşıldığında, istemci belirlenen süre boyunca engellenir. |
Ban Time in seconds | İstemcinin engellendiği süreyi saniye cinsinden belirler. Bu süre dolduktan sonra, istemcinin tekrar istek yapmasına izin verilir. |
Threshold Calculation Type | Hata eşiğinin nasıl hesaplanacağını belirler. COUNT seçildiğinde, belirli bir sayıda hata sonrası engelleme yapılır. PERCENT seçildiğinde, toplam isteklerin belirli bir yüzdesi hatalı olduğunda engelleme yapılır. |
Enable Retry-After Header | Engelleme sırasında yanıtlara "Retry-After" HTTP başlığı eklenip eklenmeyeceğini belirler. TRUE olarak ayarlandığında, engellenen istemcilere ne zaman tekrar deneme yapabileceklerini belirten bir başlık gönderilir. |
İstemcinin (client) kimliği belirlenemiyorsa, bu politika uygulanmalı mı yoksa istek hata mesajı ile red mi edilmeli ayarıdır. Aktif olduğunda istemcinin (client) kimliği belirlenemiyorsa bu kontrol yok sayılır. | |
Response Assertion | İstemcinin engellenip engellenmeyeceğine karar vermek için kullanılan koşulu belirler. Bu koşul, yanıtı kontrol eder ve koşul sağlanmazsa (yani hata durumu oluşursa), hata sayısı artırılır. |
Koşullar (Conditions) ve Hata Mesajı Özelleştirme (Error Message Customization) panellerinin detayı için Politikalar (Policies) sayfasını ziyaret edebilirsiniz.