Memperkenalkan pengalaman konsol baru untuk AWS WAF
Anda sekarang dapat menggunakan pengalaman yang diperbarui untuk mengakses AWS WAF fungsionalitas di mana saja di konsol. Untuk detail selengkapnya, lihat Bekerja dengan konsol.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Interpolasi label dinamis
Interpolasi label dinamis memungkinkan Anda menyematkan nilai label secara langsung di header permintaan khusus, header respons khusus, dan badan respons khusus menggunakan sintaks. ${namespace:}
AWS WAF menyelesaikan setiap placeholder pada waktu evaluasi terhadap label yang dilampirkan pada permintaan, jadi Anda tidak perlu menulis aturan terpisah untuk setiap nilai label.
Interpolasi berfungsi dalam AWS WAF API yang ada tanpa bidang atau langkah konfigurasi baru. Anda menggunakan sintaks placeholder dalam nilai string yang ada. Nilai header statis yang ada terus bekerja tidak berubah. Interpolasi hanya aktif ketika nilai berisi klausa. ${namespace:}
Dimana interpolasi didukung
Anda dapat menggunakan ${namespace:} interpolasi di lokasi berikut:
-
Header permintaan khusus - Masukkan nilai label yang diselesaikan ke header yang diteruskan ke asal Anda. Gunakan
${namespace:}sintaks di bidang nilai header. -
Badan respons khusus - Sematkan nilai label dan label sintetis di halaman blok, halaman tantangan, dan respons khusus lainnya. Gunakan
${namespace:}sintaks di bidang konten badan respons. -
Header respons khusus - Masukkan nilai label ke header respons, misalnya di
Locationheader untuk pengalihan. Gunakan${namespace:}sintaks di bidang nilai header respons.
Sintaks dan resolusi interpolasi
Untuk menggunakan interpolasi, sertakan ${namespace:} klausa dalam nilai header atau konten badan respons kustom. Usus besar yang tertinggal adalah signifikan. Ini memberitahu AWS WAF untuk menyelesaikan semua label dalam namespace itu daripada mencocokkan satu label secara harfiah.
AWS WAF menyelesaikan setiap klausa pada waktu evaluasi menggunakan aturan berikut:
-
Pencocokan label tunggal — Klausa tersebut menyelesaikan nilai terminal label. Misalnya, jika permintaan memiliki label
awswaf:managed:aws:bot-control:bot:category:scraping, klausa akan${awswaf:managed:aws:bot-control:bot:category:}diselesaikan.scraping -
Beberapa label — Saat beberapa label cocok dengan namespace, nilai dikembalikan sebagai daftar yang dipisahkan koma dengan awalan namespace dilucuti. Misalnya,
scraping,advertising. -
Tidak cocok - Klausa diselesaikan ke string kosong.
catatan
Nilai string tunggal mendukung hingga 10 ${namespace:} placeholder. Jika nilai berisi lebih dari 10 placeholder, AWS WAF selesaikan 10 pertama dan biarkan placeholder tambahan dalam output sebagai teks literal. ${namespace:} Batas ini berlaku untuk setiap nilai string, bukan untuk setiap permintaan. Anda dapat menggunakan hingga 10 placeholder di masing-masing beberapa header tanpa masalah.
penting
Label khusus menggunakan nama pendek diruleLabels. Misalnya, app:tier:enterprise. Namun, AWS WAF secara otomatis mengawali nama pendek dengan konteks paket perlindungan (web ACL), menghasilkan label yang sepenuhnya memenuhi syarat. Misalnya, awswaf:. Pernyataan pencocokan label berfungsi dengan namespace pendek, tetapi referensi interpolasi harus selalu menggunakan namespace yang sepenuhnya memenuhi syarat.ACCOUNT_ID:webacl:WEBACL_NAME:app:tier:enterprise
Label sintetis
Interpolasi juga mendukung label sintetis. Ini adalah nilai bawaan yang AWS WAF menyelesaikan dari konteks permintaan, bukan dari toko label. Anda dapat menggabungkan label sintetis dengan label berbasis namespace dalam string nilai yang sama.
| Label sintetis | Deskripsi |
|---|---|
${awswaf:request_id:} |
Pengidentifikasi AWS WAF permintaan unik. |
${awswaf:ip:} |
Alamat IP klien. |
${awswaf:ja3:} |
Sidik jari JA3 TLS. |
${awswaf:ja4:} |
Sidik jari JA4 TLS. |
Contoh interpolasi label dinamis
Pensinyalan aplikasi dengan header dinamis
Aturan berikut meneruskan beberapa ruang nama sinyal Kontrol Bot ke asal Anda sebagai header terpisah. Satu aturan mencakup seluruh namespace, jadi Anda tidak perlu memperbarui aturan saat grup aturan terkelola menambahkan label baru.
{ "Name": "forward-waf-signals", "Statement": { "LabelMatchStatement": { "Scope": "NAMESPACE", "Key": "awswaf:managed:aws:bot-control:bot:category:" } }, "RuleAction": { "Count": { "CustomRequestHandling": { "InsertHeaders": [ { "Name": "bot-category", "Value": "${awswaf:managed:aws:bot-control:bot:category:}" }, { "Name": "bot-name", "Value": "${awswaf:managed:aws:bot-control:bot:name:}" }, { "Name": "bot-signals", "Value": "${awswaf:managed:aws:bot-control:signal:}" }, { "Name": "client-ip", "Value": "${awswaf:ip:}" } ] } } } }
bot-signalsHeader (output:x-amzn-waf-bot-signals) menunjukkan resolusi multi-nilai. signal:Namespace mungkin berisi beberapa label, misalnyanon_browser_user_agent,automated_browser, yang diselesaikan ke daftar yang dipisahkan koma. client-ipHeader (output:x-amzn-waf-client-ip) menggunakan label sintetis.
Halaman blok kustom dengan informasi debug
Label sintetis memungkinkan Anda membuat halaman blok yang menyertakan konteks khusus permintaan. Sematkan alamat IP klien dan ID AWS WAF permintaan langsung di badan respons untuk memberi pengguna sesuatu untuk dibagikan ketika mereka melaporkan positif palsu.
{ "CustomResponseBodies": { "BlockPage": { "Content": "Your request was blocked.\n\nIP: ${awswaf:ip:}\nRequest ID: ${awswaf:request_id:}\n\nIf you believe this is an error, contact support with the Request ID above.", "ContentType": "TEXT_PLAIN" } } }
Interpolasi label kustom
Interpolasi berfungsi dengan namespace label apa pun, termasuk label khusus yang Anda tentukan dalam aturan Anda sendiri. Contoh berikut mengklasifikasikan permintaan berdasarkan kunci API dan meneruskan nilai tingkatan ke asal.
Aturan 1: Klasifikasi tier berdasarkan kunci API
Aturan ini mencocokkan permintaan dengan kunci API perusahaan dan menerapkan label khusus.
{ { "Name": "classify-tier", "Priority": 100, "Statement": { "ByteMatchStatement": { "SearchString": "pk_enterprise_", "FieldToMatch": { "SingleHeader": { "Name": "x-api-key" } }, "PositionalConstraint": "STARTS_WITH", "TextTransformations": [{ "Priority": 0, "Type": "NONE" }] } }, "RuleLabels": [{ "Name": "app:tier:enterprise" }], "Action": { "Count": {} } } }
Aturan 2: Teruskan nilai tingkat yang diselesaikan
Aturan ini cocok dengan label apa pun di app:tier namespace dan meneruskan nilai yang diselesaikan sebagai header.
{ { "Name": "forward-tier", "Priority": 200, "Statement": { "LabelMatchStatement": { "Scope": "NAMESPACE", "Key": "app:tier:" } }, "Action": { "Count": { "CustomRequestHandling": { "InsertHeaders": [{ "Name": "customer-tier", "Value": "${awswaf:ACCOUNT_ID:webacl:WEBACL_NAME:app:tier:}" }] } } } }
Aturan pertama berlaku labelapp:tier:enterprise. Aturan kedua cocok dengan label apa pun di app:tier namespace dan meneruskan nilai yang diselesaikan sebagai header. customer-tier Nama header output adalahx-amzn-waf-customer-tier. Anda dapat menambahkan lebih banyak aturan klasifikasi untuk tingkatan lain, seperti app:tier:standard atauapp:tier:trial. Aturan penerusan mengambilnya tanpa perubahan apa pun.
Untuk sampel deployable yang mendemonstrasikan semua pola ini, lihat contoh Interpolasi Label AWS WAF Dinamis