Membuat aturan perlindungan untuk modul perlindungan WAF.
Deskripsi operasi
Gunakan parameter DefenseType untuk menentukan modul perlindungan target. Modul yang didukung meliputi: pencegahan intrusi web, keamanan data, perlindungan lanjutan, manajemen bot, serta kontrol akses dan pembatasan kecepatan. Struktur parameter Rule bervariasi tergantung pada modul—lihat Referensi Parameter Rule di bawah ini.
Batasan
Operasi ini tunduk pada batas laju 10 panggilan per detik per akun. Melebihi batas ini akan memicu throttling dan dapat memengaruhi layanan Anda.
Debugging
Coba operasi ini di OpenAPI Explorer. OpenAPI Explorer menandatangani permintaan secara otomatis dan menghasilkan contoh kode untuk berbagai SDK.
Parameter permintaan
| Parameter | Type | Required | Contoh | Deskripsi |
|---|---|---|---|---|
| Action | String | Ya | CreateProtectionModuleRule | Operasi yang akan dilakukan. Tetapkan ke CreateProtectionModuleRule. |
| Domain | String | Ya | www.example.com | Nama domain tempat Anda ingin membuat aturan perlindungan. Untuk mendapatkan daftar nama domain yang dilindungi, panggil operasi DescribeDomainNames. |
| DefenseType | String | Ya | ac_custom | Modul perlindungan tempat Anda ingin membuat aturan. Nilai yang valid: waf-codec (mesin aturan perlindungan), tamperproof (pencegahan perubahan situs web), dlp (pencegahan kebocoran data), ng_account (keamanan akun), antifraud (kontrol risiko data), antifraud_js (plug-in JavaScript kontrol risiko data), bot_algorithm (algoritma cerdas, manajemen bot), bot_wxbb_pkg (perlindungan versi, perlindungan aplikasi), bot_wxbb (perlindungan path, perlindungan aplikasi), ac_custom (kebijakan perlindungan kustom), whitelist (daftar putih situs web). |
| Rule | String | Ya | {"action":"monitor","name":"test","scene":"custom_acl","conditions":[{"opCode":1,"key":"URL","values":"/example"}]} | Konfigurasi aturan, diformat sebagai string JSON. Parameter bervariasi tergantung DefenseType. Untuk detailnya, lihat Referensi parameter Rule. |
| InstanceId | String | Ya | waf-cn-0xldbqt**** | ID instans WAF. Untuk mendapatkan ID instans, panggil operasi DescribeInstanceInfo. |
Untuk parameter permintaan umum, lihat Parameter Umum.
Referensi parameter Rule
Parameter Rule berupa string JSON. Strukturnya bergantung pada nilai DefenseType.
waf-codec — Mesin aturan perlindungan
| Parameter | Type | Required | Deskripsi |
|---|---|---|---|
| codecList | Array | Ya | Pengaturan decoding yang diaktifkan. Lihat nilai yang valid di konsol WAF. |
Contoh:
{
"codecList": ["url", "base64"]
}tamperproof — Pencegahan perubahan situs web
| Parameter | Type | Required | Deskripsi |
|---|---|---|---|
| name | String | Ya | Nama aturan. |
| uri | String | Ya | URL yang akan dilindungi. |
Contoh:
{
"name": "example",
"uri": "http://www.aliyundoc.com/example"
}dlp — Pencegahan kebocoran data
| Parameter | Type | Required | Deskripsi |
|---|---|---|---|
| name | String | Ya | Nama aturan. |
| conditions | Array | Ya | Kondisi pencocokan. Anda dapat menentukan hingga dua kondisi dalam relasi AND. Setiap kondisi adalah objek JSON — lihat tabel di bawah ini. |
| action | Integer | Ya | Aksi yang diambil saat aturan cocok. Nilai yang valid: 3 (hasilkan peringatan), 10 (filter data sensitif; hanya berlaku jika key adalah 10), 11 (kembalikan halaman blokir bawaan; hanya berlaku jika key adalah 11). |
objek kondisi:
| Field | Type | Deskripsi |
|---|---|---|
| key | Integer | Item pencocokan. Nilai yang valid: 0 (URL), 10 (data sensitif), 11 (kode status HTTP). Anda tidak dapat menentukan 10 dan 11 dalam aturan yang sama. |
| operation | Integer | Logika pencocokan. Tetapkan ke 1 (termasuk). |
| value | Array | Nilai pencocokan, diformat sebagai array JSON. Setiap elemen berisi v (untuk key 0 atau 11) atau k (untuk key 10). Untuk key 11, nilai v yang valid adalah: 400, 401, 402, 403, 404, 405–499, 500, 501, 502, 503, 504, 505–599. Untuk key 10, nilai k yang valid adalah: 100 (nomor KTP), 101 (nomor kartu kredit), 102 (nomor telepon), 103 (kata sensitif default). |
Contoh:
{
"name": "example",
"conditions": [
{"key": 11, "operation": 1, "value": [{"v": 401}]},
{"key": "0", "operation": 1, "value": [{"v": "www.aliyundoc.com"}]}
],
"action": 3
}ng_account — Keamanan akun
| Parameter | Type | Required | Deskripsi |
|---|---|---|---|
| url_path | String | Ya | Path URL yang akan dipantau. Harus diawali dengan garis miring (/). |
| method | String | Ya | Metode permintaan HTTP yang akan dideteksi. Nilai yang valid: POST, GET, PUT, DELETE. Pisahkan beberapa nilai dengan koma. |
| account_left | String | Ya | Identifier bidang akun. |
| password_left | String | Tidak | Identifier bidang password. |
| action | String | Ya | Aksi saat aturan cocok. Nilai yang valid: monitor (hasilkan peringatan), block (blokir permintaan). |
Contoh:
{
"url_path": "/example",
"method": "POST,GET,PUT,DELETE",
"account_left": "aaa",
"password_left": "123",
"action": "monitor"
}antifraud — Kontrol risiko data
| Parameter | Type | Required | Deskripsi |
|---|---|---|---|
| uri | String | Ya | URL tempat kontrol risiko data diterapkan. |
Contoh:
{
"uri": "http://1.example.com/example"
}antifraud_js — Kontrol risiko data (plug-in JavaScript)
| Parameter | Type | Required | Deskripsi |
|---|---|---|---|
| uri | String | Ya | Path URL untuk injeksi plug-in JavaScript. Harus diawali dengan garis miring (/). WAF menyuntikkan plug-in ke semua halaman di bawah path ini. |
Contoh:
{
"uri": "/example/example"
}bot_algorithm — Algoritma cerdas (manajemen bot)
| Parameter | Type | Required | Deskripsi |
|---|---|---|---|
| name | String | Ya | Nama aturan. |
| algorithmName | String | Ya | Algoritma deteksi. Nilai yang valid: RR (crawler sumber daya khusus), PR (crawler path khusus), DPR (crawler round-robin parameter), SR (crawler alamat IP dinamis), IND (crawler perangkat proxy), Periodicity (crawler periodik). |
| timeInterval | Integer | Ya | Interval deteksi, dalam detik. Nilai yang valid: 30, 60, 120, 300, 600. |
| action | String | Ya | Aksi saat aturan cocok. Nilai yang valid: monitor (pantau permintaan), captcha (verifikasi CAPTCHA slider), js (verifikasi JavaScript), block (blokir permintaan). Jika Anda menetapkan ini ke block, Anda juga harus menentukan blocktime. |
| blocktime | Integer | Tidak | Durasi pemblokiran, dalam menit. Nilai yang valid: 1–600. Diperlukan saat action adalah block. |
| config | String | Ya | Konfigurasi algoritma, diformat sebagai string JSON. Parameter bervariasi tergantung algorithmName — lihat tabel di bawah ini. |
Parameter config berdasarkan algorithmName:
RR — Crawler Sumber Daya Khusus:
| Field | Type | Required | Deskripsi |
|---|---|---|---|
| resourceType | Integer | Tidak | Jenis sumber daya. Nilai yang valid: 1 (sumber daya dinamis), 2 (sumber daya statis), -1 (kustom; tentukan ekstensi di field extensions, dipisahkan koma, misalnya css,jpg,xls). |
| minRequestCountPerIp | Integer | Ya | Jumlah minimum permintaan dari alamat IP sebelum WAF mengevaluasinya. Nilai yang valid: 5–10000. |
| minRatio | Float | Ya | Rasio ambang batas permintaan yang cocok. Jika rasio aktual melebihi nilai ini, IP ditandai sebagai berisiko. Nilai yang valid: 0,01–1. |
PR — Crawler Path Khusus:
| Field | Type | Required | Deskripsi |
|---|---|---|---|
| keyPathConfiguration | Array | Tidak | Path URL yang akan dipantau. Maksimal 10 path. Setiap entri berisi: method (POST, GET, PUT, DELETE, HEAD, OPTIONS), url (kata kunci path, harus diawali /), matchType (all=pencocokan eksak, prefix=pencocokan awalan, regex=pencocokan ekspresi reguler). |
| minRequestCountPerIp | Integer | Ya | Jumlah minimum permintaan dari alamat IP sebelum WAF mengevaluasinya. Nilai yang valid: 5–10000. |
| minRatio | Float | Ya | Rasio ambang batas permintaan yang cocok. Nilai yang valid: 0,01–1. |
DPR — Crawler Round-Robin Parameter:
| Field | Type | Required | Deskripsi |
|---|---|---|---|
| method | String | Ya | Metode permintaan HTTP. Nilai yang valid: POST, GET, PUT, DELETE, HEAD, OPTIONS. |
| urlPattern | String | Ya | Pola path parameter kunci. Harus diawali /. Lampirkan setiap parameter kunci dengan kurung kurawal, contohnya: /company/{}/{}/{}/user.php?uid={}. |
| minRequestCountPerIp | Integer | Ya | Jumlah minimum permintaan dari alamat IP sebelum WAF mengevaluasinya. Nilai yang valid: 5–10000. |
| minRatio | Float | Ya | Rasio ambang batas permintaan yang menggunakan parameter kunci tertentu. Nilai yang valid: 0,01–1. |
SR — Crawler Alamat IP Dinamis:
| Field | Type | Required | Deskripsi |
|---|---|---|---|
| maxRequestCountPerSrSession | Integer | Ya | Ambang batas permintaan per sesi. Sesi dengan jumlah permintaan lebih sedikit dari nilai ini dianggap abnormal. Nilai yang valid: 1–8. |
| minSrSessionCountPerIp | Integer | Ya | Jumlah minimum sesi abnormal dari alamat IP untuk menandainya sebagai berisiko. Nilai yang valid: 5–300. |
IND — Crawler perangkat proxy:
| Field | Type | Required | Deskripsi |
|---|---|---|---|
| minIpCount | Integer | Ya | Jumlah minimum alamat IP yang harus diakses oleh perangkat yang terhubung Wi-Fi untuk ditandai sebagai berbahaya. Nilai yang valid: 5–500. |
| keyPathConfiguration | Array | Tidak | Path URL yang akan dipantau. Maksimal 10 path. Struktur sama seperti keyPathConfiguration milik PR. |
Periodicity — Crawler Periodik:
| Field | Type | Required | Deskripsi |
|---|---|---|---|
| minRequestCountPerIp | Integer | Ya | Jumlah minimum permintaan dari alamat IP sebelum WAF mengevaluasinya. Nilai yang valid: 5–10000. |
| level | Integer | Ya | Tingkat periodisitas dalam pola akses. Nilai yang valid: 0 (jelas), 1 (sedang), 2 (lemah). |
Contoh (algoritma IND):
{
"name": "Identifikasi crawler untuk perangkat proxy",
"algorithmName": "IND",
"timeInterval": "60",
"action": "monitor",
"config": {
"minIpCount": 5,
"keyPathConfiguration": [{"url": "/index", "method": "GET", "matchType": "prefix"}]
}
}bot_wxbb_pkg — Perlindungan versi (perlindungan aplikasi)
| Parameter | Type | Required | Deskripsi |
|---|---|---|---|
| name | String | Ya | Nama aturan. |
| action | String | Ya | Aksi saat aturan cocok. Nilai yang valid: test (pantau permintaan), close (blokir permintaan). |
| nameList | Array | Ya | Informasi versi untuk paket yang valid. Maksimal 5 paket. Setiap entri berisi: name (nama paket, wajib, string) dan signList (tanda tangan paket, wajib, array, maksimal 15 tanda tangan). |
Contoh:
{
"name": "test",
"action": "close",
"nameList": [
{
"name": "apk-xxxx",
"signList": ["xxxxxx", "xxxxx", "xxxx", "xx"]
}
]
}bot_wxbb — Perlindungan path (perlindungan aplikasi)
| Parameter | Type | Required | Deskripsi |
|---|---|---|---|
| name | String | Ya | Nama aturan. |
| uri | String | Ya | Kata kunci path URL yang akan dilindungi. Harus diawali dengan garis miring (/). |
| matchType | String | Ya | Metode pencocokan. Nilai yang valid: all (pencocokan eksak), prefix (pencocokan awalan), regex (pencocokan ekspresi reguler). |
| arg | String | Ya | Parameter yang disertakan dalam pencocokan path URL, digunakan bersama dengan matchType. |
| action | String | Ya | Aksi saat aturan cocok. Nilai yang valid: test (pantau permintaan), close (blokir permintaan). |
| hasTag | Boolean | Ya | Menentukan apakah akan menambahkan bidang tanda tangan kustom. Jika ditetapkan ke true, Anda juga harus menentukan wxbbVmpFieldType dan wxbbVmpFieldValue. |
| wxbbVmpFieldType | Integer | Tidak | Jenis bidang tanda tangan kustom. Diperlukan saat hasTag adalah true. Nilai yang valid: 0 (header), 1 (parameter), 2 (cookie). |
| wxbbVmpFieldValue | String | Tidak | Nilai bidang tanda tangan kustom. Diperlukan saat hasTag adalah true. |
| blockInvalidSign | Integer | Ya | Menentukan apakah akan menerapkan kebijakan perlindungan default untuk tanda tangan tidak valid. Tetapkan ke 1 untuk mengaktifkan. |
| blockProxy | Integer | Tidak | Menentukan apakah akan memblokir permintaan proxy. Tetapkan ke 1 untuk memblokir. Biarkan tidak ditentukan untuk melewati penegakan proxy. |
| blockSimulator | Integer | Tidak | Menentukan apakah akan memblokir permintaan simulator. Tetapkan ke 1 untuk memblokir. Biarkan tidak ditentukan untuk melewati penegakan simulator. |
Contoh:
{
"name": "test",
"uri": "/index",
"matchType": "all",
"arg": "test",
"action": "close",
"hasTag": true,
"wxbbVmpFieldType": 2,
"wxbbVmpFieldValue": "test",
"blockInvalidSign": 1,
"blockProxy": 1
}ac_custom — Kebijakan perlindungan kustom
Struktur parameter Rule bergantung pada field scene.
Aturan ACL (scene: custom_acl)
| Parameter | Type | Required | Deskripsi |
|---|---|---|---|
| name | String | Ya | Nama aturan. |
| scene | String | Ya | Jenis kebijakan. Tetapkan ke custom_acl. |
| action | String | Ya | Aksi saat aturan cocok. Nilai yang valid: monitor (pantau permintaan), captcha (verifikasi CAPTCHA slider), captcha_strict (verifikasi CAPTCHA slider ketat), js (verifikasi JavaScript), block (blokir permintaan). |
| conditions | Array | Ya | Kondisi pencocokan. Maksimal 5 kondisi. Setiap kondisi berisi key, opCode, dan values — lihat tabel di bawah ini. |
Field condition:
| Field | Type | Deskripsi |
|---|---|---|
| key | String | Item pencocokan. Nilai yang valid: URL, IP, Referer, User-Agent, Params, Cookie, Content-Type, Content-Length, X-Forwarded-For, Post-Body, Http-Method, Header, URLPath. |
| opCode | Integer | Operator logika. Nilai yang valid: 11 (sama dengan), 10 (tidak sama dengan), 41 (sama dengan salah satu dari beberapa nilai), 50 (tidak sama dengan nilai apa pun), 1 (termasuk), 0 (tidak termasuk), 51 (termasuk salah satu dari beberapa nilai), 52 (tidak termasuk nilai apa pun), 82 (ada), 2 (tidak ada), 21 (panjang sama dengan), 22 (panjang lebih besar dari), 20 (panjang kurang dari), 60 (tidak cocok dengan ekspresi reguler), 61 (cocok dengan ekspresi reguler), 72 (cocok dengan awalan), 81 (cocok dengan akhiran), 80 (konten kosong). Operator yang tersedia bervariasi tergantung key — periksa konsol WAF untuk daftar yang akurat. Untuk detail kondisi pencocokan, lihat Fields in match conditions. |
| values | String | Nilai pencocokan. |
Contoh:
{
"action": "monitor",
"name": "test",
"scene": "custom_acl",
"conditions": [{"opCode": 1, "key": "URL", "values": "/example"}]
}Aturan perlindungan flood HTTP (scene: custom_cc)
| Parameter | Type | Required | Deskripsi |
|---|---|---|---|
| name | String | Ya | Nama aturan. |
| scene | String | Ya | Jenis kebijakan. Tetapkan ke custom_cc. |
| conditions | Array | Ya | Kondisi pencocokan. Maksimal 5 kondisi. Struktur sama seperti aturan ACL. |
| action | String | Ya | Aksi saat aturan cocok. Nilai yang valid: monitor, captcha, captcha_strict, js, block. |
| ratelimit | Object | Ya | Konfigurasi batas laju. Lihat tabel di bawah ini. |
bidang batas laju:
| Field | Type | Required | Deskripsi |
|---|---|---|---|
| target | String | Ya | Objek yang diukur laju permintaannya. Nilai yang valid: remote_addr (alamat IP), cookie.acw_tc (sesi), queryarg (parameter kustom), cookie (cookie kustom), header (header kustom). |
| subkey | String | Tidak | Diperlukan saat target adalah cookie, header, atau queryarg. Menentukan nama parameter, cookie, atau header. |
| interval | Integer | Ya | Periode pengukuran, dalam detik. |
| threshold | Integer | Ya | Jumlah maksimum permintaan yang diizinkan dari objek target dalam interval. |
| status | Object | Tidak | Memicu aturan berdasarkan frekuensi kode status HTTP. Berisi: code (wajib, integer — kode status HTTP) dan salah satu dari count (integer, 1–999999999) atau ratio (integer, 1–100). Anda tidak dapat menetapkan count dan ratio sekaligus. |
| scope | String | Ya | Cakupan penerapan batas laju. Nilai yang valid: rule (objek yang cocok dengan kondisi), domain (seluruh domain). |
| ttl | Integer | Ya | Durasi penerapan aksi, dalam detik. Nilai yang valid: 60–86400. |
Contoh:
{
"name": "Aturan perlindungan flood HTTP",
"conditions": [{"opCode": 1, "key": "URL", "values": "/example"}],
"action": "block",
"scene": "custom_cc",
"ratelimit": {
"target": "remote_addr",
"interval": 300,
"threshold": 2000,
"status": {
"code": 404,
"count": 200
},
"scope": "rule",
"ttl": 1800
}
}whitelist — Daftar putih situs web
| Parameter | Type | Required | Deskripsi |
|---|---|---|---|
| name | String | Ya | Nama aturan. |
| tags | Array | Ya | Modul perlindungan yang dilewati. Nilai harus berasal dari satu kategori daftar putih — Anda tidak dapat mencampur tag dari kategori berbeda (misalnya, regular dan cc tidak dapat digabungkan). Lihat tabel di bawah ini untuk nilai yang valid berdasarkan kategori. |
| regularRules | Array | Tidak | ID aturan spesifik yang dilewati. Diperlukan saat tags mencakup regular_rule. Untuk mendapatkan ID aturan, buka Konsol WAF > Protection Rule Group > Create Rule Group. Untuk informasi lebih lanjut, lihat Customize protection rule groups. |
| regularTypes | Array | Tidak | Jenis aturan yang dilewati. Diperlukan saat tags mencakup regular_type. Nilai yang valid: sqli (Injeksi SQL), xss (cross-site scripting), code_exec (eksekusi kode), lfilei (local file inclusion), rfilei (remote file inclusion), webshell (webshell), vvip (aturan perlindungan kustom), other. |
| conditions | Array | Ya | Kondisi pencocokan. Maksimal 5 kondisi. Struktur sama seperti aturan ACL, dengan dua operator tambahan: 30 (nilai kurang dari), 31 (nilai lebih dari). |
Nilai `tags` yang valid berdasarkan kategori:
| Kategori | Nilai yang valid |
|---|---|
| Global | waf — lewati semua modul perlindungan |
| Pencegahan intrusi web | regular (semua aturan), regular_rule (aturan spesifik, memerlukan regularRules), regular_type (jenis aturan spesifik, memerlukan regularTypes), deeplearning (mesin pembelajaran mendalam) |
| Kontrol akses dan pembatasan kecepatan | cc (perlindungan flood HTTP), customrule (kebijakan perlindungan kustom), blacklist (blacklist alamat IP), antiscan (perlindungan pemindaian) |
| Keamanan data | dlp (pencegahan kebocoran data), tamperproof (pencegahan perubahan situs web), account (keamanan akun) |
| Manajemen bot | bot_intelligence (intelijen ancaman bot), bot_algorithm (identifikasi perilaku bot khas), bot_wxbb (perlindungan aplikasi), antifraud (kontrol risiko data) |
Contoh:
{
"name": "test",
"tags": ["cc", "customrule"],
"conditions": [{"opCode": 1, "key": "URL", "values": "/example"}]
}Parameter respons
| Parameter | Type | Contoh | Deskripsi |
|---|---|---|---|
| RequestId | String | D7861F61-5B61-46CE-A47C-6B19160D5EB0 | ID permintaan. |
Contoh
Permintaan Contoh:
http(s)://[Endpoint]/?Action=CreateProtectionModuleRule
&Domain=www.example.com
&DefenseType=ac_custom
&Rule={"action":"monitor","name":"test","scene":"custom_acl","conditions":[{"opCode":1,"key":"URL","values":"/example"}]}
&InstanceId=waf-cn-0xldbqt****
&<Common request parameters>Respons Sukses Contoh (XML):
HTTP/1.1 200 OK
Content-Type:application/xml
<CreateProtectionModuleRuleResponse>
<RequestId>D7861F61-5B61-46CE-A47C-6B19160D5EB0</RequestId>
</CreateProtectionModuleRuleResponse>Respons Sukses Contoh (JSON):
HTTP/1.1 200 OK
Content-Type:application/json
{
"RequestId": "D7861F61-5B61-46CE-A47C-6B19160D5EB0"
}Kode kesalahan
Untuk daftar kode kesalahan, kunjungi API Error Center.