Skip to main content

WAF

Web application firewall kontrol arayüzü. Hedef kitleler için hedef kaynaklara ulaşımı kontrol eden çeşitli kurallar tanımlanabilir. Kurallar süreli olarak tanımlanabilir.

Farklı uygulamalar için farklı kurallar tanımlamayı destekler. Ayrı instance'lar kendi aralarında iletişim kurarak sayaçlarını senkronize eder.

Enums

Tanımlanan enum değerleri aşağıda listelenmiştir.

Kural Tipleri

type alanı için yapılan tanımlama. Kural davranışını belirtir.

TypeDesc
rate_limitKaynaklara olan erişimi rolling window prensibi ile sınırlamada kullanılır.
whitelistKaynaklara erişime koşulsuz izin verir.
blacklistKaynaklara erişimi koşulsuz olarak engeller.
whitelist_forceKaynaklara erişim yalnızca eklenen hedef kitleye verilmiştir.

Kuralların öncelik sıralaması aşağıda verilmiştir.

  1. whitelist_force
  2. blacklist
  3. whitelist
  4. rate_limit

Örnek olarak aynı IP adresi için herhangi bir kaynak üstünde erişim kontrolü sağlayan blacklist ve whitelist kuralları tanımlanır ise kaynağa erişim blacklist kuralı tarafından engellenir.

Eğer kaynak whitelist_force tipinde bir kural kapsamında ise istek atan tarafa göre erişime doğrudan izin verilir ya da verilmez.

Kural Durumları

status alanı için yapılan tanımlama. Kural durumu değiştirilerek istenilen kurallar geçici ya da kalıcı olarak kapatılıp açılabilir.

StatusDesc
ACTIVEAktif kural
INACTIVEİnaktif kural

Hedef Kitle Tipi

targetEntityType alanı için yapılan tanımlama. Kuralın hedef kitle tipini belirtir.

StatusDesc
USER_IDUser id hedefli kural
IPIP adresi hedefli kural
COUNTRY_CODEISO 3166-1 alpha-2 ülke kodu hedefli kural

Kural yönetimi

Kural yönetim endpoint'leri aşağıda listelenmiştir.

Kuralları getir

Mevcut kuralları getirir. appId ve status bazlı filtreleme olanağı sağlar.

Authentication
  • x-auth(tenant-id)
HTTP Request

GET /admin/system/waf/rules

Request Parameters
FieldTypeRequiredDefaultDesc
appIdstringfalse-Uygulama id'si
statusstring(enum)false-Kuralın etkinlik durumu
Response Parameters
FieldTypeNullableDesc
appIdstringfalseUygulama id'si
labelstringfalseKural etiketi, eşsiz olmalıdır
typestring(enum)falseKural tipi
periodnumbertrueKural sliding window aralığı(ms), rate_limit tipindeki kurallar için gönderilir.
limitnumbertrueTanımlanan period içinde izin verilen istek sayısı, rate_limit tipindeki kurallar için gönderilir.
expireAtnumberfalseKuralın sona erme tarihi(epoch timestamp ms)
targetEntityTypestring(enum)falseHedef kitlesi tipi
targetEntitiesstring[]falseKuralın hedef kitlesindeki elemanlar(user id veya ip listesi)
targetResourcesstring[]falseKuralın kontrol ettiği kaynak listesi(["POST /my/endpoint", "GET /my/other/endpoint"])
targetAllEntitiesbooleanfalseHedef kitle tipindeki tüm elemanları hedefle
targetAllResourcesbooleanfalseTüm kaynaklara olan kontrol üstünde karar ver
statusstring(enum)falseKuralın etkinlik durumu
Response Body Example
[
{
"appId": "API",
"label": "general_access_user",
"type": "rate_limit",
"targetEntityType": "USER_ID",
"targetEntities": [],
"targetResources": [],
"targetAllEntities": true,
"targetAllResources": true,
"status": "ACTIVE",
"expireAt": 1830297600000,
"period": 30000,
"limit": 10
},
...
{
"appId": "API",
"label": "auth_2fa_complete_limiter",
"type": "rate_limit",
"targetEntityType": "IP",
"targetEntities": [],
"targetResources": [
"POST /auth/2fa/challenge/complete"
],
"targetAllEntities": true,
"targetAllResources": false,
"status": "ACTIVE",
"expireAt": 1830297600000,
"period": 120000,
"limit": 15
}
]

Kural ekle

Yeni kural eklemede kullanılır.

Authentication
  • x-auth(tenant-id)
HTTP Request

POST /admin/system/waf/rules

Request Parameters
FieldTypeRequiredDefaultDesc
appIdstringtrueAPIUygulama id'si
labelstringtrue-Kural etiketi, eşsiz olmalıdır
typestring(enum)true-Kural tipi
periodnumberfalse-Kural sliding window aralığı(ms), rate_limit tipindeki kurallar için zorunludur.
limitnumberfalse-Tanımlanan period içinde izin verilen istek sayısı, rate_limit tipindeki kurallar için zorunludur.
expireAtnumbertrue-Kuralın sona erme tarihi(epoch timestamp ms)
targetEntityTypestring(enum)true-Hedef kitlesi tipi
targetEntitiesstring[]false[]Kuralın hedef kitlesindeki elemanlar(user id veya ip listesi)
targetResourcesstring[]false[]Kuralın kontrol ettiği kaynak listesi(["POST /my/endpoint", "GET /my/other/endpoint"])
targetAllEntitiesbooleanfalsetrueHedef kitle tipindeki tüm elemanları hedefle
targetAllResourcesbooleanfalsefalseTüm kaynaklara olan kontrol üstünde karar ver
statusstring(enum)falseINACTIVEKuralın etkinlik durumu
Response Parameters

Başarılı olması durumunda 200 HTTP status code döner.

Kural güncelle

Var olan kuralı yenilemede kullanılır. Yalnızca gönderilen alanlar güncellenir.

Authentication
  • x-auth(tenant-id)
HTTP Request

PATCH /admin/system/waf/rules

Request Parameters
FieldTypeRequiredDefaultDesc
labelstringtrue-Güncellenmek istenen kural etiketi
periodnumberfalse-Kural sliding window aralığı(ms)
limitnumberfalse-Tanımlanan period içinde izin verilen istek sayısı
expireAtnumberfalse-Kuralın sona erme tarihi(epoch timestamp ms)
targetEntitiesstring[]false-Kuralın hedef kitlesindeki elemanlar(user id veya ip listesi)
targetResourcesstring[]false-Kuralın kontrol ettiği kaynak listesi(["POST /my/endpoint", "GET /my/other/endpoint"])
targetAllEntitiesbooleanfalse-Hedef kitle tipindeki tüm elemanları hedefle
targetAllResourcesbooleanfalse-Tüm kaynaklara olan kontrol üstünde karar ver
statusstring(enum)false-Kuralın etkinlik durumu
Response Parameters

Başarılı olması durumunda 200 HTTP status code döner.