Menyesuaikan aturan kebijakan keamanan

Anda dapat menyesuaikan aturan dengan mengecualikan kolom permintaan dari evaluasi untuk mengurangi positif palsu.

Saat mengonfigurasi pengecualian untuk aturan, Anda dapat mengecualikan kolom berikut dari pemeriksaan:

Mengecualikan kolom permintaan dari evaluasi aturan

Untuk mengonfigurasi pengecualian kolom permintaan untuk suatu aturan, kaitkan konfigurasi dengan aturan kebijakan keamanan.

Aturan ini tidak menggunakan ID aturan. Sebagai gantinya, Anda dapat mengonfigurasi flag --target-rule-set dengan salah satu nilai berikut:

  • cel (--target-rule-set "cel"): menerapkan pengecualian hanya ke aturan CEL kustom dalam aturan kebijakan keamanan tersebut.
  • * (--target-rule-set "*", pengecualian global): menerapkan pengecualian ke semua aturan yang dilampirkan ke kebijakan keamanan tersebut, termasuk aturan CEL kustom dan aturan yang menggunakan evaluatePreconfiguredWaf().

Pada kebijakan keamanan backend (global dan regional), Anda dapat mengonfigurasi hingga 100 dari setiap hal berikut per target (cel atau *):

  • Header permintaan
  • Cookie permintaan
  • Parameter kueri permintaan
  • URI permintaan
  • Isi permintaan

Operator kolom yang tersedia adalah:

  • EQUALS: cocok jika nilai kolom sama dengan nilai yang ditentukan.
  • STARTS_WITH: cocok jika nilai kolom diawali dengan nilai yang ditentukan.
  • ENDS_WITH: cocok jika nilai kolom diakhiri dengan nilai yang ditentukan.
  • CONTAINS: cocok jika nilai kolom berisi nilai yang ditentukan.
  • EQUALS_ANY: cocok jika nilai kolom adalah nilai apa pun.

Header permintaan

Anda dapat mengecualikan header permintaan tertentu dari pemeriksaan selama evaluasi aturan dengan menggunakan nama headernya di kolom pengecualian.

Jika header permintaan cocok dengan pengecualian, seluruh entri header (nama dan nilainya) akan dihapus dari peta request.headers sebelum evaluasi aturan.

Contoh

Contoh berikut memperbarui aturan dalam kebijakan keamanan POLICY_NAME di PRIORITY untuk mengecualikan header permintaan yang dimulai dengan abc atau diakhiri dengan xyz dari evaluasi aturan (cel):

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-header-to-exclude "op=STARTS_WITH,val=abc" \
    --request-header-to-exclude "op=ENDS_WITH,val=xyz"

Ganti kode berikut:

  • PRIORITY: prioritas aturan
  • POLICY_NAME: nama kebijakan keamanan

Cookie permintaan

Anda dapat mengecualikan cookie permintaan tertentu dari pemeriksaan selama evaluasi aturan dengan menggunakan nama cookie-nya di kolom pengecualian.

Jika cookie permintaan cocok dengan pengecualian, seluruh entri cookie (nama dan nilainya) akan dikecualikan dari atribut permintaan sebelum evaluasi aturan.

Contoh

Contoh berikut memperbarui aturan dalam kebijakan keamanan POLICY_NAME di PRIORITY untuk mengecualikan cookie permintaan yang dimulai dengan session_ dari evaluasi aturan (cel):

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-cookie-to-exclude "op=STARTS_WITH,val=session_"

Ganti kode berikut:

  • PRIORITY: prioritas aturan
  • POLICY_NAME: nama kebijakan keamanan

Parameter kueri permintaan

Anda dapat mengecualikan parameter permintaan tertentu dari pemeriksaan selama evaluasi aturan dengan menggunakan nama parameternya di kolom pengecualian. Flag --request-query-param-to-exclude berlaku untuk parameter kueri URL dan parameter isi permintaan yang diurai (JSON, data formulir, dan GraphQL).

Jika parameter cocok dengan pengecualian, seluruh entri parameter (kunci dan nilainya) akan dihapus dari request.params sebelum evaluasi aturan, sehingga has(request.params.param_name) dievaluasi ke false.

Untuk isi permintaan yang diuraikan, Anda dapat menggunakan notasi titik untuk menargetkan kolom bertingkat dan item array:

  • Kolom tingkat teratas: val=user
  • Kolom bertingkat: val=user.name
  • Item array: val=items.0.name

Contoh

Contoh berikut memperbarui aturan dalam kebijakan keamanan POLICY_NAME di PRIORITY untuk mengecualikan parameter kueri URL bad-param, kolom JSON bertingkat user.name, dan kolom item array JSON items.0.name dari evaluasi aturan (cel):

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-query-param-to-exclude "op=EQUALS,val=bad-param" \
    --request-query-param-to-exclude "op=EQUALS,val=user.name" \
    --request-query-param-to-exclude "op=EQUALS,val=items.0.name"

Ganti kode berikut:

  • PRIORITY: prioritas aturan
  • POLICY_NAME: nama kebijakan keamanan

URI permintaan

Anda dapat mengecualikan URI dari baris permintaan (tidak termasuk data string kueri) dari pemeriksaan selama evaluasi aturan.

Saat mengecualikan URI, seluruh kolom URI akan dikecualikan dari pemeriksaan.

Contoh

Contoh berikut memperbarui aturan dalam kebijakan keamanan POLICY_NAME di PRIORITY untuk mengecualikan URI permintaan yang berisi /bad-path dari evaluasi aturan (cel):

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-uri-to-exclude "op=CONTAINS,val=/bad-path"

Ganti kode berikut:

  • PRIORITY: prioritas aturan
  • POLICY_NAME: nama kebijakan keamanan

Isi permintaan

Anda dapat mengecualikan nilai isi permintaan tertentu dari pemeriksaan selama evaluasi aturan.

Jika isi permintaan cocok dengan pengecualian, atribut request.body akan dikecualikan dari evaluasi aturan.

Contoh

Contoh berikut memperbarui aturan dalam kebijakan keamanan POLICY_NAME di PRIORITY untuk mengecualikan isi permintaan yang berisi bad-body-value dari evaluasi aturan (cel):

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-body-to-exclude "op=CONTAINS,val=bad-body-value"

Ganti kode berikut:

  • PRIORITY: prioritas aturan
  • POLICY_NAME: nama kebijakan keamanan

Nilai kolom

Anda harus menentukan nilai kolom jika menggunakan operator kolom selain EQUALS_ANY.

Untuk header permintaan, cookie permintaan, dan parameter kueri permintaan, himpunan karakter yang diizinkan untuk nilai kolom mencakup karakter berikut:

  • !, #, $, %, &, *, +, -, ., ^, _, `, |, ~
  • Karakter alfa A hingga Z (huruf besar dan huruf kecil)
  • Karakter digit 0 hingga 9

Untuk isi permintaan, himpunan karakter yang diizinkan untuk nilai kolom mencakup semua karakter ASCII yang dapat dicetak kecuali ', \`,(, and)`:

  • Spasi () dan karakter khusus: !, ", #, $, %, &, *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, ], ^, _, `, {, |, }, ~
  • Karakter alfa A hingga Z (huruf besar dan huruf kecil)
  • Karakter digit 0 hingga 9

Saat Anda menerapkan pengecualian untuk kolom permintaan ini, nilai kolom konfigurasi (val=) dibandingkan tidak peka huruf besar/kecil (setelah transformasi) dengan hal berikut untuk menentukan entitas yang akan dikecualikan dari pemeriksaan:

  • Header permintaan: cocok dengan nama header (kunci) untuk mengecualikan seluruh header (nama dan nilai).
  • Cookie permintaan: cocok dengan nama cookie untuk mengecualikan seluruh cookie (nama dan nilai).
  • Parameter kueri permintaan: cocok dengan nama parameter atau jalur JSON bertingkat (kunci) untuk mengecualikan seluruh parameter (kunci dan nilai).
  • Isi permintaan: cocok dengan string konten isi permintaan untuk mengecualikan seluruh atribut request.body.

Anda tidak perlu melakukan encoding tambahan jika ingin mengecualikan karakter tertentu yang tidak ada dalam himpunan karakter yang diizinkan.

Untuk URI permintaan, nilai kolom harus diberikan dalam format URI dengan batasan komponen berikut:

Komponen Batasan
Skema Diizinkan, tetapi dibatasi untuk http atau https
Host Diizinkan (bisa berupa alamat IP)
Port Diizinkan
Alur Diizinkan
Kueri Tidak diizinkan
Fragmen Tidak diizinkan

Saat Anda menerapkan pengecualian untuk URI permintaan, nilai kolom konfigurasi dibandingkan tanpa peka huruf besar/kecil (setelah transformasi) dengan URI dari baris permintaan, tidak termasuk string kueri. URI dari baris permintaan dapat berupa relatif atau absolut. Pertimbangkan hal ini saat mengonfigurasi pengecualian untuk URI permintaan.

Menghapus pengecualian

Untuk menghapus pengecualian kolom permintaan dari aturan kebijakan keamanan, gunakan perintah remove-preconfig-waf-exclusion. Anda dapat menghapus pengecualian kolom tertentu dengan menentukan flag pengecualian kolom yang sesuai, atau menghilangkan flag kolom untuk menghapus semua pengecualian untuk set aturan target tersebut (cel atau *).

Contoh

Contoh berikut memperbarui aturan dalam kebijakan keamanan POLICY_NAME di PRIORITY untuk menghapus pengecualian header permintaan yang dimulai dengan abc dari evaluasi aturan (cel):

gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-header-to-exclude "op=STARTS_WITH,val=abc"

Contoh berikut menghilangkan flag kolom untuk menghapus semua pengecualian kolom permintaan yang dikonfigurasi untuk evaluasi aturan (cel) pada aturan di PRIORITY:

gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel"

Ganti kode berikut:

  • PRIORITY: prioritas aturan
  • POLICY_NAME: nama kebijakan keamanan