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.
| Type | Desc |
|---|---|
rate_limit | Kaynaklara olan erişimi rolling window prensibi ile sınırlamada kullanılır. |
whitelist | Kaynaklara erişime koşulsuz izin verir. |
blacklist | Kaynaklara erişimi koşulsuz olarak engeller. |
whitelist_force | Kaynaklara erişim yalnızca eklenen hedef kitleye verilmiştir. |
Kuralların öncelik sıralaması aşağıda verilmiştir.
whitelist_forceblacklistwhitelistrate_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.
| Status | Desc |
|---|---|
ACTIVE | Aktif kural |
INACTIVE | İnaktif kural |
Hedef Kitle Tipi
targetEntityType alanı için yapılan tanımlama. Kuralın hedef kitle tipini belirtir.
| Status | Desc |
|---|---|
USER_ID | User id hedefli kural |
IP | IP adresi hedefli kural |
COUNTRY_CODE | ISO 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
| Field | Type | Required | Default | Desc |
|---|---|---|---|---|
appId | string | false | - | Uygulama id'si |
status | string(enum) | false | - | Kuralın etkinlik durumu |
Response Parameters
| Field | Type | Nullable | Desc |
|---|---|---|---|
appId | string | false | Uygulama id'si |
label | string | false | Kural etiketi, eşsiz olmalıdır |
type | string(enum) | false | Kural tipi |
period | number | true | Kural sliding window aralığı(ms), rate_limit tipindeki kurallar için gönderilir. |
limit | number | true | Tanımlanan period içinde izin verilen istek sayısı, rate_limit tipindeki kurallar için gönderilir. |
expireAt | number | false | Kuralın sona erme tarihi(epoch timestamp ms) |
targetEntityType | string(enum) | false | Hedef kitlesi tipi |
targetEntities | string[] | false | Kuralın hedef kitlesindeki elemanlar(user id veya ip listesi) |
targetResources | string[] | false | Kuralın kontrol ettiği kaynak listesi(["POST /my/endpoint", "GET /my/other/endpoint"]) |
targetAllEntities | boolean | false | Hedef kitle tipindeki tüm elemanları hedefle |
targetAllResources | boolean | false | Tüm kaynaklara olan kontrol üstünde karar ver |
status | string(enum) | false | Kuralı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
| Field | Type | Required | Default | Desc |
|---|---|---|---|---|
appId | string | true | API | Uygulama id'si |
label | string | true | - | Kural etiketi, eşsiz olmalıdır |
type | string(enum) | true | - | Kural tipi |
period | number | false | - | Kural sliding window aralığı(ms), rate_limit tipindeki kurallar için zorunludur. |
limit | number | false | - | Tanımlanan period içinde izin verilen istek sayısı, rate_limit tipindeki kurallar için zorunludur. |
expireAt | number | true | - | Kuralın sona erme tarihi(epoch timestamp ms) |
targetEntityType | string(enum) | true | - | Hedef kitlesi tipi |
targetEntities | string[] | false | [] | Kuralın hedef kitlesindeki elemanlar(user id veya ip listesi) |
targetResources | string[] | false | [] | Kuralın kontrol ettiği kaynak listesi(["POST /my/endpoint", "GET /my/other/endpoint"]) |
targetAllEntities | boolean | false | true | Hedef kitle tipindeki tüm elemanları hedefle |
targetAllResources | boolean | false | false | Tüm kaynaklara olan kontrol üstünde karar ver |
status | string(enum) | false | INACTIVE | Kuralı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
| Field | Type | Required | Default | Desc |
|---|---|---|---|---|
label | string | true | - | Güncellenmek istenen kural etiketi |
period | number | false | - | Kural sliding window aralığı(ms) |
limit | number | false | - | Tanımlanan period içinde izin verilen istek sayısı |
expireAt | number | false | - | Kuralın sona erme tarihi(epoch timestamp ms) |
targetEntities | string[] | false | - | Kuralın hedef kitlesindeki elemanlar(user id veya ip listesi) |
targetResources | string[] | false | - | Kuralın kontrol ettiği kaynak listesi(["POST /my/endpoint", "GET /my/other/endpoint"]) |
targetAllEntities | boolean | false | - | Hedef kitle tipindeki tüm elemanları hedefle |
targetAllResources | boolean | false | - | Tüm kaynaklara olan kontrol üstünde karar ver |
status | string(enum) | false | - | Kuralın etkinlik durumu |
Response Parameters
Başarılı olması durumunda 200 HTTP status code döner.