Google Cloud Armor menyediakan kemampuan untuk membantu melindungi Google Cloud aplikasi Anda dari berbagai serangan Lapisan 3 dan Lapisan 7. Aturan berbasis tarif membantu Anda melindungi aplikasi dari volume permintaan yang besar yang membanjiri instance Anda dan memblokir akses untuk pengguna yang sah.
Pembatasan kapasitas dapat melakukan hal berikut:
- Mencegah klien tertentu menghabiskan resource aplikasi.
- Lindungi instance aplikasi Anda dari lonjakan yang tidak teratur dan tidak dapat diprediksi dalam tingkat permintaan klien.
Selain itu, saat resource menerima volume traffic yang tinggi dari sejumlah kecil klien, Anda dapat mencegah klien lain terpengaruh oleh lonjakan traffic yang besar dari sejumlah kecil klien tersebut, sehingga resource Anda dapat menangani sebanyak mungkin permintaan.
Google Cloud Armor memiliki dua jenis aturan berbasis rasio:
- Pembatasan: Anda dapat menerapkan batas permintaan maksimum per klien atau di semua klien dengan membatasi klien tertentu ke nilai minimum yang dikonfigurasi pengguna.
- Larangan berbasis kecepatan: Anda dapat membatasi kecepatan permintaan yang cocok dengan aturan berdasarkan per klien, lalu melarang klien tersebut untuk sementara selama jangka waktu yang dikonfigurasi jika mereka melampaui batas yang dikonfigurasi pengguna.
Saat mengonfigurasi aturan dengan tindakan pelarangan berbasis kecepatan, Anda tidak dapat mengubahnya menjadi tindakan pembatasan kecepatan nanti. Namun, saat mengonfigurasi aturan dengan tindakan pembatasan, Anda dapat mengubahnya menjadi tindakan pelarangan berbasis kecepatan nanti. Untuk mengetahui informasi selengkapnya, lihat Pembatasan kecepatan berdasarkan beberapa kunci.
Google Cloud Armor menerapkan batas laju ke setiap backend terkait. Misalnya, jika Anda memiliki dua layanan backend dan mengonfigurasi aturan pembatasan kecepatan dengan nilai minimum 1.000 permintaan per menit, setiap layanan backend dapat menerima 1.000 permintaan per menit sebelum Google Cloud Armor menerapkan tindakan aturan.
Anda dapat melihat pratinjau efek aturan pembatasan kecepatan dalam kebijakan keamanan dengan menggunakan mode pratinjau dan memeriksa log permintaan Anda.
Mengidentifikasi klien untuk pembatasan kapasitas
Google Cloud Armor mengidentifikasi setiap klien untuk pembatasan kecepatan dengan menggunakan jenis kunci berikut untuk menggabungkan permintaan dan menerapkan pembatasan kecepatan:
- SEMUA: Satu kunci untuk semua klien yang permintaannya memenuhi kondisi kecocokan aturan.
- IP: Kunci unik untuk setiap alamat IP sumber klien yang permintaannya memenuhi kondisi kecocokan aturan.
- HTTP_HEADER: Kunci unik untuk setiap nilai header HTTP unik yang namanya dikonfigurasi. Nilai kunci dipangkas menjadi 128 byte pertama dari nilai header. Jenis kunci secara default adalah SEMUA jika tidak ada header tersebut, atau jika Anda mencoba menggunakan jenis kunci ini dengan Load Balancer Jaringan proxy eksternal.
- XFF_IP: Kunci unik untuk setiap alamat IP sumber asli klien,
yaitu alamat IP pertama dalam daftar IP yang ditentukan di header HTTP
X-Forwarded-For
. Jenis kunci default ke alamat IP jika tidak ada header tersebut, jika nilainya bukan alamat IP yang valid, atau jika Anda mencoba menggunakan jenis kunci ini dengan Load Balancer Jaringan proxy eksternal. - HTTP_COOKIE: Kunci unik untuk setiap nilai cookie HTTP yang namanya dikonfigurasi. Nilai kunci dipangkas menjadi 128 byte pertama dari nilai cookie. Jenis kunci defaultnya adalah SEMUA jika tidak ada cookie tersebut, atau jika Anda mencoba menggunakan jenis kunci ini dengan Load Balancer Jaringan proxy eksternal.
- HTTP_PATH: Jalur URL permintaan HTTP. Nilai kunci dipangkas menjadi 128 byte pertama.
- SNI: Indikasi nama server dalam sesi TLS permintaan HTTPS. Nilai kunci dipangkas menjadi 128 byte pertama. Jenis kunci secara default adalah ALL pada sesi HTTP.
- REGION_CODE: Negara/wilayah asal permintaan.
- TLS_JA4_FINGERPRINT: Sidik jari TLS/SSL JA4 jika klien terhubung menggunakan
HTTPS
,HTTP/2
, atauHTTP/3
. Jika tidak tersedia, jenis kunci defaultnya adalah ALL. Untuk mengetahui informasi selengkapnya tentang JA4, lihat referensi bahasa aturan. - TLS_JA3_FINGERPRINT: Sidik jari TLS/SSL JA3 jika klien terhubung menggunakan
HTTPS
,HTTP/2
, atauHTTP/3
. Jika tidak tersedia, jenis kunci defaultnya adalah ALL. - USER_IP: Alamat IP klien asal, yang disertakan dalam header yang dikonfigurasi di
userIpRequestHeaders
dan nilainya diisi oleh proxy upstream. Jika tidak ada konfigurasiuserIpRequestHeaders
, atau alamat IP tidak dapat diselesaikan dari konfigurasi tersebut, jenis kunci akan ditetapkan secara default ke IP. Untuk mengetahui informasi selengkapnya, lihat referensi bahasa aturan.
Anda dapat menggunakan setiap kunci di atas secara terpisah, atau Anda dapat menerapkan pembatasan kecepatan
berdasarkan kombinasi hingga tiga kunci. Anda dapat menggunakan beberapa kunci HTTP-HEADER
atau HTTP-COOKIE
, dan hanya satu dari setiap jenis kunci lainnya. Untuk mengetahui informasi selengkapnya, lihat Pembatasan frekuensi berdasarkan beberapa kunci.
Memilih antara aturan pembatasan laju berbasis tarif dan pembatasan laju
Aturan pembatasan kecepatan rate-based ban
dan throttle
Google Cloud Armor berbeda dalam cara menangani traffic yang melebihi nilai minimum yang dikonfigurasi.
rate_based_ban
: Jika kecepatan permintaan melebihi nilai minimum yang ditentukan, Cloud Armor akan memblokir semua permintaan lebih lanjut dari sumber atau target permintaan tersebut selama jangka waktu tertentu.throttle
: Daripada memblokir semua traffic, pembatasan membatasi kecepatan permintaan hingga maksimum yang ditentukan. Hal ini memungkinkan beberapa traffic melewati, tetapi pada kecepatan yang terkontrol yang mencegah kelebihan beban.
Aturan yang paling tepat bergantung pada kebutuhan spesifik Anda dan jenis traffic yang Anda tangani. Misalnya, jika Anda menghadapi serangan DDoS, larangan berbasis kecepatan mungkin lebih tepat untuk memblokir traffic berbahaya dengan cepat. Di sisi lain, jika Anda mengalami lonjakan traffic yang sah secara tiba-tiba, throttling mungkin menjadi opsi yang lebih baik untuk mempertahankan ketersediaan layanan sekaligus mencegah kelebihan beban.
Membatasi traffic
Tindakan throttle
dalam aturan memungkinkan Anda menerapkan permintaan per klien
untuk melindungi layanan backend. Aturan ini menerapkan nilai minimum untuk membatasi traffic dari setiap klien yang memenuhi kondisi kecocokan dalam aturan. Nilai
batas dikonfigurasi sebagai jumlah permintaan tertentu dalam interval waktu
tertentu.
Misalnya, Anda dapat menetapkan nilai minimum permintaan menjadi 2.000 permintaan dalam 1.200 detik (20 menit). Jika klien mengirim 2.500 permintaan dalam periode 1.200 detik, sekitar 20% traffic klien akan dibatasi hingga volume permintaan yang diizinkan sama dengan atau di bawah nilai minimum yang dikonfigurasi.
Jika kecepatan traffic klien sama dengan atau di bawah rate_limit_threshold_count
, permintaan mengikuti conform_action
, yang selalu merupakan tindakan allow
. Permintaan
diizinkan melalui kebijakan keamanan dan diizinkan untuk mencapai tujuannya. Jika
laju traffic klien melebihi rate_limit_threshold_count
yang ditentukan,
Google Cloud Armor menerapkan exceed_action
, yang dapat berupa deny
atau
redirect
, untuk permintaan yang melebihi batas selama sisa interval batas.
Anda menetapkan parameter ini untuk mengontrol tindakan:
rate_limit_threshold_count
: Jumlah permintaan per klien yang diizinkan dalam interval waktu tertentu. Nilai minimum adalah 1 dan nilai maksimum adalah 1.000.000.interval_sec
: Jumlah detik dalam interval waktu. Nilainya harus 10, 30, 60, 120, 180, 240, 300, 600, 900, 1200, 1800, 2700, atau 3600 detik.
exceed_action
: Jika permintaan melebihirate_limit_threshold_count
, Google Cloud Armor akan menerapkanexceed_action
yang dikonfigurasi. Kemungkinan nilai untukexceed_action
adalah sebagai berikut:deny(status)
: Permintaan ditolak dan kode error yang ditentukan ditampilkan (nilai yang valid adalah403
,404
,429
, dan502
). Sebaiknya gunakan kode respons429 (Too Many Requests)
.redirect
: Permintaan dialihkan untuk penilaian reCAPTCHA atau ke URL lain, berdasarkan parameterexceed_redirect_options
.
exceed_redirect_options
: Jikaexceed_action
adalahredirect
, gunakan parameter ini untuk menentukan tindakan pengalihan:type
: Jenis untuk tindakan pengalihan,GOOGLE_RECAPTCHA
atauEXTERNAL_302
.target
: URL target untuk tindakan pengalihan. Hanya berlaku jikatype
adalahEXTERNAL_302
.
conform_action
: Ini adalah tindakan yang dilakukan saat jumlah permintaan berada di bawahrate_limit_threshold_count
. Tindakan ini selalu merupakan tindakanallow
.
Melarang klien berdasarkan rasio permintaan
Tindakan rate_based_ban
dalam aturan memungkinkan Anda menerapkan batas per klien untuk melarang sementara klien yang melampaui batas dengan menerapkan exceed_action
yang dikonfigurasi untuk semua permintaan dari klien selama jangka waktu yang dapat dikonfigurasi. Nilai minimum dikonfigurasi sebagai jumlah permintaan tertentu dalam
interval waktu tertentu. Anda dapat melarang traffic untuk jangka waktu yang dikonfigurasi pengguna ('ban_duration_sec'
), asalkan traffic cocok dengan kondisi kecocokan yang ditentukan dan melampaui nilai minimum yang dikonfigurasi.
Misalnya, Anda dapat menetapkan nilai minimum permintaan menjadi 2.000 permintaan dalam 1.200
detik (20 menit). Jika klien mengirim 2.500 permintaan dalam 1.200 detik,
Google Cloud Armor menerapkan exceed_action
ke traffic dari klien tersebut yang melebihi batas 2.000 permintaan hingga 1.200 detik penuh telah berlalu dan selama beberapa detik tambahan yang Anda tetapkan sebagai periode durasi pelarangan.
Jika periode durasi pelarangan disetel ke 3600
, misalnya, traffic dari
klien akan dilarang selama 3.600 detik (satu jam) setelah akhir
interval nilai minimum.
Jika kecepatan permintaan klien berada di bawah batas kapasitas, permintaan akan segera
diizinkan untuk dilanjutkan ke layanan backend. Jika laju traffic klien
melebihi rate_limit_threshold_count
yang ditentukan, Google Cloud Armor akan menerapkan
exceed_action
ke semua permintaan masuk dari klien selama sisa
interval batas dan selama ban_duration_sec
detik berikutnya, terlepas dari
apakah batas terlampaui atau tidak.
Dengan konfigurasi ini, klien sambutan yang hanya sesekali melebihi kecepatan permintaan yang diizinkan dapat secara tidak sengaja dilarang. Untuk mencegah hal ini, dan melarang
hanya klien yang sering melebihi kecepatan permintaan, Anda dapat
secara opsional melacak total permintaan klien terhadap konfigurasi nilai minimum tambahan, yang sebaiknya
lebih lama, yang disebut ban_threshold_count
. Dalam mode ini,
klien dilarang untuk ban_duration_sec
yang dikonfigurasi hanya jika
tingkat permintaan melampaui ban_threshold_count
yang dikonfigurasi. Jika rasio permintaan tidak melebihi ban_threshold_count
, permintaan akan terus dibatasi hingga rate_limit_threshold_count
. Untuk tujuan ban_threshold_count
, total permintaan dari klien, yang terdiri dari semua permintaan masuk sebelum pembatasan, dihitung.
Parameter ini mengontrol tindakan aturan rate_based_ban
:
rate_limit_threshold_count
: Jumlah permintaan per klien yang diizinkan dalam interval waktu tertentu. Nilai minimum adalah 1 permintaan dan nilai maksimum adalah 10.000 permintaan.interval_sec
: Jumlah detik dalam interval waktu. Nilainya harus 10, 30, 60, 120, 180, 240, 300, 600, 900, 1200, 1800, 2700, atau 3600 detik.
exceed_action
: Jika permintaan melebihirate_limit_threshold_count
, Google Cloud Armor akan menerapkanexceed_action
yang dikonfigurasi. Kemungkinan nilai untukexceed_action
adalah sebagai berikut:deny(status)
: Permintaan ditolak dan kode error yang ditentukan akan ditampilkan. Nilai yang valid untuk kode error adalah403
,404
,429
, dan502
. Sebaiknya gunakan kode respons429 (Too Many Requests)
.redirect
: Permintaan dialihkan untuk penilaian reCAPTCHA atau ke URL lain, berdasarkan parameterexceed_redirect_options
.
exceed_redirect_options
: Jikaexceed_action
adalahredirect
, gunakan parameter ini untuk menentukan tindakan pengalihan:type
: Jenis untuk tindakan pengalihan,GOOGLE_RECAPTCHA
atauEXTERNAL_302
.target
: URL target untuk tindakan pengalihan. Hanya berlaku jikatype
adalahEXTERNAL_302
.
conform_action
: Ini adalah tindakan yang dilakukan saat jumlah permintaan berada di bawahrate_limit_threshold_count
. Tindakan ini selalu merupakan tindakanallow
.ban_threshold_count
: Ini adalah jumlah permintaan per klien yang diizinkan dalam interval waktu tertentu, yang akan menyebabkan Google Cloud Armor melarang permintaan. Jika ditentukan, kunci dilarang untukban_duration_sec
yang dikonfigurasi jika jumlah permintaan yang melebihirate_limit_threshold_count
juga melebihiban_threshold_count
ini.ban_threshold_interval_sec
: Jumlah detik dalam interval waktu untukban_threshold_count
Anda. Nilainya harus 10, 30, 60, 120, 180, 240, 300, 600, 900, 1200, 1800, 2700, atau 3600 detik.
ban_duration_sec
: Ini adalah jumlah detik tambahan saat klien dilarang setelah periodeinterval_sec
berakhir. Nilainya harus 60, 120, 180, 240, 300, 600, 900, 1200, 1800, 2700, atau 3600 detik.
Kebijakan keamanan pembatasan frekuensi default
Saat Anda mengonfigurasi
kebijakan keamanan default selama
pembuatan load balancer, nilai minimum default adalah 500 permintaan selama setiap
interval satu menit (rate_limit_threshold_count
dan interval_sec
500
dan
60
, masing-masing). Jika Anda ingin memilih nilai minimum yang berbeda, sebaiknya
gunakan langkah-langkah berikut untuk menyesuaikan parameter:
Aktifkan Cloud Logging dan kueri jumlah maksimum permintaan yang tiba per alamat IP dan per menit selama satu hari atau lebih di layanan backend yang dilindungi Google Cloud Armor.
Misalnya, Anda yakin bahwa 99% traffic jaringan yang Anda terima tidak akan terpengaruh oleh aturan pembatasan kecepatan. Dalam skenario ini, sebaiknya tetapkan nilai minimum batas frekuensi ke persentil ke-99 dari jumlah maksimum permintaan per alamat IP dan per menit dari distribusi yang dihasilkan dari data Cloud Logging.
Jika Anda masih melihat aturan pembatasan kapasitas default memblokir traffic yang sah, pertimbangkan langkah-langkah tambahan berikut:
- Aktifkan caching (Cloud CDN atau Media CDN).
- Tingkatkan interval waktu throttling (permintaan yang diterima per beberapa menit, bukan per 60 detik).
- Anda dapat memblokir klien untuk mengurangi dampak serangan lebih lanjut setelah gelombang awal. Tindakan
rate_based_ban
Google Cloud Armor memungkinkan Anda melakukannya dengan melarang semua klien yang melampaui batas terlalu sering dalam jangka waktu yang ditentukan pengguna. Misalnya, klien yang melampaui batas 10 kali dalam satu menit dapat dilarang selama 15 menit.
Penerapan nilai minimum
Nilai minimum yang dikonfigurasi untuk pembatasan dan pemblokiran berbasis kecepatan diterapkan secara independen di setiap region Google Cloud tempat layanan backend HTTP(S) Anda di-deploy. Misalnya, jika layanan Anda di-deploy di dua region, setiap region akan membatasi frekuensi setiap kunci hingga nilai minimum yang dikonfigurasi, sehingga layanan backend Anda mungkin mengalami volume traffic gabungan lintas region yang dua kali lipat dari nilai minimum yang dikonfigurasi. Jika nilai batas yang dikonfigurasi ditetapkan ke 5.000 permintaan, layanan backend mungkin menerima 5.000 permintaan dari satu region dan 5.000 permintaan dari region kedua.
Namun, untuk alamat IP jenis kunci, wajar untuk mengasumsikan bahwa traffic dari alamat IP klien yang sama diarahkan ke region yang paling dekat dengan region tempat backend Anda di-deploy. Dalam hal ini, pembatasan kapasitas dapat dianggap diterapkan di tingkat layanan backend, terlepas dari region tempat layanan tersebut di-deploy.
Penting untuk diperhatikan bahwa batas frekuensi yang diterapkan adalah perkiraan dan mungkin tidak sepenuhnya akurat dibandingkan dengan nilai minimum yang dikonfigurasi. Selain itu, dalam kasus yang jarang terjadi, karena perilaku pemilihan rute internal, pembatasan kecepatan mungkin diterapkan di lebih banyak region daripada region tempat Anda men-deploy, sehingga memengaruhi akurasi. Untuk alasan ini, sebaiknya Anda menggunakan pembatasan frekuensi hanya untuk mitigasi penyalahgunaan atau mempertahankan ketersediaan aplikasi dan layanan, bukan untuk menerapkan kuota yang ketat atau persyaratan pemberian lisensi.
Logging
Cloud Logging mencatat nama kebijakan keamanan, prioritas aturan pembatasan frekuensi yang cocok, ID aturan, tindakan terkait, dan informasi lainnya dalam log permintaan Anda. Untuk mengetahui informasi selengkapnya tentang logging, lihat Menggunakan logging permintaan.
Respons error kustom
Anda dapat menerapkan respons error kustom ke pembatasan frekuensi Google Cloud Armor, termasuk traffic throttle
dan rate_based_ban
. Jika batas ini diterapkan, pesan error kustom akan dikirim kepada pengguna akhir. Selain itu, Anda dapat mengonfigurasi respons error kustom untuk kode status HTTP tertentu yang dihasilkan oleh load balancer atau instance backend saat menggunakan Load Balancer Aplikasi eksternal global.
Untuk mengetahui informasi selengkapnya tentang respons error kustom, lihat Ringkasan respons error kustom. Untuk mengonfigurasi respons error kustom, lihat Mengonfigurasi respons error kustom.
Integrasi dengan reCAPTCHA
Anda dapat menerapkan pembatasan kecepatan pada beberapa resource reCAPTCHA untuk mengurangi penyalahgunaan token dan membatasi penggunaan ulang token. Resource ini mencakup token tindakan, token sesi, dan cookie pengecualian. Untuk mengetahui informasi selengkapnya tentang penggunaan pembatasan kecepatan dengan reCAPTCHA, lihat ringkasan pengelolaan bot.