Mengelola kebijakan keamanan Cloud Armor

Halaman ini menjelaskan cara mengelola kebijakan keamanan Google Cloud Armor dan memfilter traffic yang masuk ke aplikasi Anda. Kebijakan keamanan Cloud Armor membantu melindungi layanan dan aplikasi web Anda dari serangan distributed denial of service (DDoS) dan ancaman lainnya dari internet. Menerapkan postur keamanan yang kuat memerlukan pengelolaan kebijakan keamanan Anda melalui pembuatan, pengujian, dan konsolidasi. Untuk membuat atau melihat kebijakan keamanan, lihat Membuat dan melihat kebijakan keamanan Cloud Armor.

Mengelola kebijakan keamanan

Bagian berikut menjelaskan cara mencantumkan, memperbarui, menghapus, atau menguji kebijakan keamanan.

Membuat daftar kebijakan keamanan

Ikuti langkah-langkah di bagian ini untuk mencantumkan kebijakan keamanan Cloud Armor di project Anda.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Cloud Armor policies.

    Buka kebijakan Cloud Armor

  2. Untuk melihat kebijakan, dalam daftar kebijakan, klik nama kebijakan tertentu tersebut.

gcloud

gcloud compute security-policies list

Contoh:

gcloud compute security-policies list

Output:

NAME: my-policy
REGION: us-central1

Untuk informasi selengkapnya, lihat gcloud compute security-policies list.

Memperbarui kebijakan keamanan

Langkah-langkah di bagian ini menjelaskan cara memperbarui kebijakan keamanan Cloud Armor. Anda dapat mengubah deskripsi kebijakan, mengubah aturan default, mengubah layanan backend target, atau menambahkan aturan.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Cloud Armor policies.

    Buka kebijakan Cloud Armor

  2. Temukan nama kebijakan yang ingin Anda perbarui dalam daftar kebijakan, lalu klik Menu untuk kebijakan tersebut.

    • Untuk memperbarui deskripsi atau tindakan aturan default, pilih Edit, lakukan perubahan, lalu klik Perbarui.
    • Untuk menambahkan aturan, pilih Tambahkan aturan, lalu ikuti langkah-langkah di Menambahkan aturan ke kebijakan keamanan.
    • Untuk mengganti layanan backend target, pilih Apply policy to target, klik Add Target, pilih target, lalu klik Add.

gcloud

Untuk memperbarui kebijakan keamanan, gunakan langkah-langkah Google Cloud CLI berikut:

Menghapus beberapa kebijakan keamanan

Bagian ini menjelaskan cara menghapus kebijakan keamanan Cloud Armor. Hapus semua layanan backend dari kebijakan sebelum Anda menghapusnya.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Cloud Armor policies.

    Buka kebijakan Cloud Armor

  2. Centang kotak di samping kebijakan yang ingin Anda hapus.

  3. Di pojok kanan atas halaman, klik Delete.

gcloud

Gunakan gcloud compute security-policies delete NAME. Ganti NAME dengan nama kebijakan keamanan:

gcloud compute security-policies delete NAME

Menguji kebijakan keamanan

Sebaiknya deploy semua aturan baru dalam mode pratinjau, lalu periksa log permintaan Anda, untuk memverifikasi bahwa kebijakan dan aturan berfungsi seperti yang diharapkan.

Mengelola aturan kebijakan keamanan

Bagian berikut menjelaskan cara mencantumkan, menambahkan, memperbarui, atau menghapus aturan kebijakan keamanan.

Membuat daftar aturan dalam kebijakan keamanan

Ikuti langkah-langkah di bagian ini untuk membuat daftar aturan dalam kebijakan keamanan Cloud Armor.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Cloud Armor policies.

    Buka kebijakan Cloud Armor

  2. Klik nama kebijakan keamanan tertentu. Halaman Policy details menampilkan aturan kebijakan di tab Rules.

gcloud

Gunakan perintah gcloud berikut untuk mencantumkan semua aturan dalam kebijakan keamanan:

gcloud compute security-policies describe NAME \

Gunakan perintah gcloud berikut untuk mencantumkan semua aturan dalam satu kebijakan keamanan di wilayah tertentu beserta deskripsi kebijakan:

gcloud compute security-policies describe NAME \
  --region REGION

Gunakan perintah gcloud berikut untuk mendeskripsikan aturan:

gcloud compute security-policies rules describe PRIORITY \
    --security-policy POLICY_NAME

Misalnya, perintah berikut menjelaskan aturan dengan prioritas 1000 dalam kebijakan keamanan my-policy:

gcloud compute security-policies rules describe 1000 \
    --security-policy my-policy

Output:

action: deny(403)
description: block traffic from 192.0.2.0/24 and 198.51.100.0/24
kind: compute#securityPolicyRule
match:
  srcIpRanges:
  - '192.0.2.0/24'
  - '198.51.100.0/24'
preview: false
priority: 1000

Untuk informasi selengkapnya, lihat gcloud compute security-policies describe.

Menambahkan aturan ke kebijakan keamanan

Ikuti langkah-langkah di bagian ini untuk menambahkan aturan ke kebijakan keamanan Cloud Armor.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Cloud Armor policies.

    Buka kebijakan Cloud Armor

  2. Klik nama kebijakan keamanan untuk membuka halaman Policy details.

  3. Di bagian tengah halaman, klik tab Rules.

  4. Klik Add Rule.

  5. Opsional: Masukkan deskripsi aturan.

  6. Pilih mode:

    • Basic mode: mengizinkan atau menolak traffic berdasarkan alamat IP atau rentang IP.
    • Mode lanjutan: mengizinkan atau menolak traffic berdasarkan ekspresi aturan.
  7. Di kolom Match, tentukan kondisi yang berlaku untuk aturan:

    • Basic mode: masukkan dari satu (1) hingga 10 rentang alamat IP yang akan dicocokkan dengan aturan. Anda dapat menambahkan maksimal 10 rentang alamat IP. Untuk batas, lihat Kuota dan batas Cloud Armor.

    • Mode lanjutan:

      • Pembuat kondisi kecocokan (Pratinjau): gunakan pembuat visual untuk membuat ekspresi tanpa menulis kode CEL mentah. Gabungkan dan kelompokkan kondisi, lalu terapkan transformasi string. Lihat Menggunakan pembuat kondisi kecocokan.
      • Editor kondisi kecocokan: masukkan ekspresi untuk dievaluasi terhadap permintaan yang masuk. Untuk mengetahui informasi selengkapnya, lihat referensi bahasa aturan kustom.
    • Ekspresi berikut cocok dengan permintaan dari alamat IP 1.2.3.4 yang berisi string example di header User-Agent:

        inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('example')
      
    • Ekspresi berikut cocok dengan permintaan yang memiliki cookie dengan nilai tertentu:

          has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')
        

    • Ekspresi berikut cocok dengan permintaan dari region AU:

          origin.region_code == 'AU'
        

    • Ekspresi berikut cocok dengan permintaan dari wilayah AU yang tidak berada dalam rentang IP yang ditentukan:

          origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')
        

    • Ekspresi berikut cocok dengan permintaan jika URI cocok dengan ekspresi reguler:

          request.path.matches('/example_path/')
        

    • Ekspresi berikut cocok dengan permintaan jika header user-id berisi nilai yang dienkode Base64 yang, saat didekode, berisi string tertentu:

          has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')
        

    • Ekspresi berikut menggunakan set ekspresi yang telah dikonfigurasi sebelumnya untuk mencocokkan serangan SQLi:

          evaluatePreconfiguredWaf('sqli-stable')
        

  8. Dalam daftar Tindakan, pilih Izinkan atau Tolak.

  9. Jika Anda mengonfigurasi aturan penolakan (Deny), pilih pesan Deny status.

  10. Untuk mengaktifkan mode pratinjau untuk aturan, pilih Aktifkan.

  11. Di kolom Priority, masukkan bilangan bulat positif.

  12. Klik Add.

gcloud

Gunakan perintah gcloud compute security-policies rules create PRIORITY. Ganti PRIORITY dengan prioritas aturan dalam kebijakan:

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME \
    --description DESCRIPTION \
    --src-ip-ranges IP_RANGES | --expression EXPRESSION \
    --action=[ allow | deny-403 | deny-404 | deny-502 ] \
    --preview

Misalnya, perintah berikut menambahkan aturan dengan prioritas 1000 untuk memblokir traffic dari rentang alamat IP 192.0.2.0/24 dan 198.51.100.0/24:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --description "block traffic from 192.0.2.0/24 and 198.51.100.0/24" \
    --src-ip-ranges "192.0.2.0/24","198.51.100.0/24" \
    --action "deny-403"

Gunakan flag --expression untuk menentukan kondisi. Perintah berikut menambahkan aturan untuk mengizinkan traffic dari alamat IP 1.2.3.4 yang berisi string example di header User-Agent:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('example')" \
    --action allow \
    --description "Block User-Agent 'example'"

Perintah berikut menambahkan aturan untuk memblokir permintaan jika cookie permintaan berisi nilai tertentu:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "has(request.headers['cookie']) && request.headers['cookie'].contains('80=BLAH')" \
    --action deny-403 \
    --description "Cookie Block"

Perintah berikut menambahkan aturan untuk memblokir permintaan dari wilayah AU:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "origin.region_code == 'AU'" \
    --action deny-403 \
    --description "AU block"

Perintah berikut menambahkan aturan untuk memblokir permintaan dari region AU yang tidak berada dalam rentang IP yang ditentukan:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')" \
    --action deny-403 \
    --description "country and IP block"

Perintah berikut menambahkan aturan untuk memblokir permintaan dengan URI yang cocok dengan ekspresi reguler:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "request.path.matches('/example_path/')" \
    --action deny-502 \
    --description "regex block"

Perintah berikut menambahkan aturan untuk memblokir permintaan jika nilai yang didekode Base64 dari header user-id berisi nilai tertentu:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')" \
    --action deny-403 \
    --description "country and IP block"

Perintah berikut menambahkan aturan yang menggunakan set ekspresi yang telah dikonfigurasi sebelumnya untuk mengatasi serangan SQLi:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "evaluatePreconfiguredWaf('sqli-stable')" \
    --action deny-403

Memperbarui satu aturan dalam kebijakan keamanan

Bagian ini menjelaskan cara memperbarui satu aturan dalam kebijakan keamanan Cloud Armor. Untuk memperbarui beberapa aturan secara atomik, lihat Memperbarui beberapa aturan secara atomik dalam kebijakan keamanan.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Cloud Armor policies.

    Buka kebijakan Cloud Armor

  2. Klik nama kebijakan keamanan untuk membuka halaman Policy details.

  3. Di bagian tengah halaman, klik tab Rules.

  4. Di samping aturan yang ingin diperbarui, klik Edit. Halaman Edit rule akan ditampilkan.

  5. Lakukan perubahan, lalu klik Update.

gcloud

Gunakan perintah berikut untuk memperbarui aturan. Anda hanya dapat mengupdate satu kebijakan keamanan dalam satu waktu:

gcloud compute security-policies rules update PRIORITY [ \
    --security-policy POLICY_NAME  \
    --description DESCRIPTION  \
    --src-ip-ranges IP_RANGES  | --expression EXPRESSION \
    --action=[ allow | deny-403 | deny-404 | deny-502 ]  \
    --preview
  ]
  

Misalnya, perintah berikut mengupdate aturan dengan prioritas 1111 untuk mengizinkan traffic dari rentang alamat IP 192.0.2.0/24:

gcloud compute security-policies rules update 1111 \
    --security-policy my-policy \
    --description "allow traffic from 192.0.2.0/24" \
    --src-ip-ranges "192.0.2.0/24" \
    --action "allow"

Untuk mengetahui informasi selengkapnya tentang perintah sebelumnya, lihat gcloud compute security-policies rules update.

Untuk memperbarui prioritas aturan, gunakan REST API. Lihat securityPolicies.patchRule.

Menggunakan pembuat kondisi

Pembuat kondisi kecocokan adalah antarmuka visual di Cloud de Confiance konsol yang membantu Anda membuat ekspresi aturan Cloud Armor yang kompleks tanpa menulis kode Common Expression Language (CEL). Daripada menulis kode, Anda dapat menggunakan UI terstruktur pembangun untuk menggabungkan kondisi dan mengelompokkan logika, yang dapat membantu Anda menghindari error sintaksis dan memvisualisasikan struktur aturan dengan lebih baik. Builder mendukung daftar datar dan logika bertingkat hingga lima tingkat ekspresi. Gunakan alat ini saat Anda mengonfigurasi aturan untuk membantu melindungi backend multi-cloud atau deployment hybrid, yang mungkin mengharuskan Anda memeriksa atribut permintaan tertentu sebelum merutekan traffic.

Fitur pembuat kondisi kecocokan

Pembangun kondisi kecocokan mencakup fitur berikut:

  • Logika dan penyusunan bertingkat: gabungkan beberapa kondisi menggunakan operator AND dan OR. Penyusun mendukung pengelompokan dan penyusunan hingga lima ekspresi.
  • Transformasi string: untuk atribut berbasis string (seperti request.path atau request.headers), terapkan transformasi untuk menormalisasi data sebelum evaluasi. Transformasi yang didukung meliputi:
    • Huruf Kecil dan Huruf Besar
    • Decode Base64
    • Dekode URL dan Dekode URL (Unicode)
    • Konversi UTF-8 ke Unicode
  • Penguraian dua arah: beralih antara pembuat kondisi Pencocokan visual dan editor kondisi Pencocokan teks mentah. UI mengurai kode CEL mentah menjadi blok visual secara otomatis.
  • Dukungan fungsi: builder menyediakan kontrol UI untuk ekspresi berbasis fungsi, seperti aturan WAF yang telah dikonfigurasi sebelumnya, grup alamat, dan Threat Intelligence.

Batasan

Pembuat kondisi kecocokan adalah antarmuka default untuk pembuatan aturan lanjutan. Jika ekspresi berisi logika yang tidak didukung (seperti makro yang tidak diketahui), pembangun akan dinonaktifkan. Dalam kasus ini, gunakan teks mentah di editor Kondisi pencocokan untuk mengedit aturan.

Selain itu, ketersediaan ekspresi tertentu di builder bergantung pada tingkatan Google Cloud Armor Enterprise project Anda dan jenis kebijakan keamanan.

Memperbarui beberapa aturan secara atomik dalam kebijakan keamanan

Anda dapat menggunakan fitur update atomik untuk menerapkan perubahan pada beberapa aturan dalam satu update. Pembaruan aturan tunggal dapat menyebabkan perilaku yang tidak diinginkan seperti error karena aturan lama dan baru mungkin tumpang-tindih untuk jangka waktu yang singkat.

Untuk memperbarui beberapa aturan secara atomik, ekspor kebijakan keamanan saat ini ke file JSON atau YAML, lalu ubah. Gunakan file yang telah diubah untuk membuat kebijakan keamanan, lalu alihkan kebijakan keamanan untuk layanan backend.

gcloud

  1. Ekspor kebijakan yang akan diupdate, seperti yang ditunjukkan dalam contoh berikut:

    gcloud compute security-policies export my-policy \
        --file-name my-file \
        --file-format yaml
    

    Kebijakan yang diekspor akan terlihat seperti contoh berikut:

        description: my description
        fingerprint: PWfLGDWQDLY=
        id: '123'
        name: my-policy
        rules:
        - action: deny(404)
          description: my-rule-1
          match:
            expr:
              expression: evaluatePreconfiguredWaf('xss-stable')
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 1
        - action: allow
          description: my-rule-2
          match:
            config:
              srcIpRanges:
              - '1.2.3.4'
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 2
        - action: deny
          description: default rule
          kind: compute#securityPolicyRule
          match:
            config:
              srcIpRanges:
              - '*'
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 2147483647
        selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policy
    
  2. Gunakan editor teks untuk mengubah kebijakan. Misalnya, Anda dapat mengubah prioritas aturan yang ada dan menambahkan aturan:

        description: my description
        fingerprint: PWfLGDWQDLY=
        id: '123'
        name: my-policy
        rules:
        - action: deny(404)
          description: my-rule-1
          match:
            expr:
              expression: evaluatePreconfiguredWaf('xss-stable')
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 1
        - action: allow
          description: my-new-rule
          match:
            config:
              srcIpRanges:
              - '1.2.3.1'
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 10
        - action: allow
          description: my-rule-2
          match:
            config:
              srcIpRanges:
              - '1.2.3.4'
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 11
        - action: deny
          description: default rule
          kind: compute#securityPolicyRule
          match:
            config:
              srcIpRanges:
              - '*'
            versionedExpr: SRC_IPS_V1
          preview: false
          priority: 2147483647
        selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policy
    
  3. Buat kebijakan keamanan Cloud Armor baru dan tentukan nama file dan format yang diubah, seperti yang ditunjukkan dalam contoh berikut:

    gcloud compute security-policies create new-policy \
        --file-name modified-policy \
        --file-format yaml
    
  4. Hapus kebijakan keamanan lama dari layanan backend yang relevan, seperti yang ditunjukkan dalam contoh berikut:

    gcloud compute backend-services update my-backend \
        --security-policy ""
    
  5. Tambahkan kebijakan keamanan baru ke layanan backend, seperti yang ditunjukkan dalam contoh berikut:

    gcloud compute backend-services update my-backend \
        --security-policy new-policy
    
  6. Jika kebijakan lama tidak digunakan, hapus kebijakan tersebut:

    gcloud compute security-policies delete my-policy
    

Menghapus aturan dari kebijakan keamanan

Ikuti langkah-langkah di bagian ini untuk menghapus aturan dari kebijakan keamanan Cloud Armor.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Cloud Armor policies.

    Buka kebijakan Cloud Armor

  2. Klik nama kebijakan keamanan untuk membuka halaman Policy details.

  3. Di bagian tengah halaman, pada tab Rules, centang kotak di samping aturan yang ingin Anda hapus.

  4. Klik Delete.

gcloud

Gunakan perintah berikut untuk menghapus aturan. Anda hanya dapat mengubah satu kebijakan keamanan dalam satu waktu, tetapi Anda dapat menghapus beberapa aturan sekaligus:

gcloud compute security-policies rules delete PRIORITY [...] [
    --security-policy POLICY_NAME \
  ]

Contoh:

gcloud compute security-policies rules delete 1000 \
    --security-policy my-policy

Melampirkan dan menghapus kebijakan keamanan

Bagian berikut menjelaskan cara melampirkan dan menghapus kebijakan keamanan.

Melampirkan kebijakan keamanan ke layanan backend

Ikuti langkah-langkah di bagian ini untuk melampirkan kebijakan keamanan Cloud Armor ke layanan backend. Anda dapat melampirkan kebijakan keamanan ke beberapa layanan backend, tetapi layanan backend hanya dapat memiliki satu dari setiap jenis kebijakan keamanan yang dilampirkan ke layanan tersebut.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Cloud Armor policies.

    Buka kebijakan Cloud Armor

  2. Klik nama kebijakan keamanan untuk membuka halaman Policy details.

  3. Di bagian tengah halaman, klik tab Targets.

  4. Klik Apply policy to new target.

  5. Klik Add Target.

  6. Di daftar Target, pilih target, lalu klik Add.

gcloud

Saat Anda melampirkan kebijakan keamanan backend ke layanan backend, gunakan perintah gcloud compute backend-services dan flag --security-policy:

gcloud compute backend-services update my-backend \
    --security-policy my-policy

Saat Anda melampirkan kebijakan keamanan edge ke layanan backend, gunakan perintah gcloud compute backend-services dan flag --edge-security-policy:

gcloud compute backend-services update my-backend \
    --edge-security-policy my-policy

Menghapus kebijakan keamanan dari layanan backend

Ikuti langkah-langkah di bagian ini untuk menghapus kebijakan keamanan Cloud Armor dari layanan backend.

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Cloud Armor policies.

    Buka kebijakan Cloud Armor

  2. Klik nama kebijakan keamanan untuk membuka halaman Policy details.

  3. Di bagian tengah halaman, klik tab Targets.

  4. Pilih layanan backend target tempat Anda menghapus kebijakan.

  5. Klik Hapus.

  6. Pada pesan Remove target, klik Remove.

gcloud

Saat Anda menghapus kebijakan keamanan backend, gunakan perintah gcloud compute backend-services dan flag --security-policy:

gcloud compute backend-services update my-backend \
    --security-policy ""

Saat Anda menghapus kebijakan keamanan edge, gunakan perintah gcloud compute backend-services dan tanda --edge-security-policy:

gcloud compute backend-services update my-backend \
    --edge-security-policy ""