Halaman ini berisi informasi tentang cara mengonfigurasi aturan Google Cloud Armor untuk menerapkan batas kapasitas per klien dengan mengonfigurasi tindakan throttle atau pemblokiran berbasis tarif. Sebelum mengonfigurasi pembatasan kapasitas, pastikan Anda sudah memahami informasi dalam ringkasan pembatasan kapasitas.
Sebelum memulai
Bagian berikut menjelaskan semua peran dan izin Identity and Access Management (IAM) yang diperlukan untuk mengonfigurasi kebijakan keamanan Google Cloud Armor. Untuk kasus penggunaan dalam dokumen ini, Anda hanya memerlukan izin compute.securityPolicies.create
.
Menyiapkan izin IAM untuk kebijakan keamanan Google Cloud Armor
Operasi berikut memerlukan peran Admin Keamanan Compute (roles/compute.securityAdmin
)
Identity and Access Management (IAM):
- Mengonfigurasi, mengubah, mengupdate, dan menghapus kebijakan keamanan Google Cloud Armor
- Menggunakan metode API berikut:
SecurityPolicies insert
SecurityPolicies delete
SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
Pengguna dengan peran Admin Jaringan Compute (roles/compute.networkAdmin
) dapat melakukan operasi berikut:
- Menetapkan kebijakan keamanan Google Cloud Armor untuk layanan backend
- Menggunakan metode API berikut:
BackendServices setSecurityPolicy
BackendServices list
(gcloud
saja)
Pengguna dengan peran Admin Keamanan (roles/iam.securityAdmin
) dan peran Admin Jaringan Compute dapat melihat kebijakan keamanan Google Cloud Armor menggunakan metode API SecurityPolicies
get
, list
, dan getRule
.
Menyiapkan izin IAM untuk peran khusus
Tabel berikut mencantumkan izin dasar peran IAM dan metode API yang terkait.
Izin IAM | Metode API |
---|---|
compute.securityPolicies.create |
SecurityPolicies insert |
compute.securityPolicies.delete |
SecurityPolicies delete |
compute.securityPolicies.get |
SecurityPolicies get SecurityPolicies getRule |
compute.securityPolicies.list |
SecurityPolicies list |
compute.securityPolicies.use |
BackendServices setSecurityPolicy |
compute.securityPolicies.update |
SecurityPolicies patch SecurityPolicies addRule SecurityPolicies patchRule SecurityPolicies removeRule |
compute.backendServices.setSecurityPolicy |
BackendServices setSecurityPolicy |
Aturan untuk throttling berbasis tarif
Aturan untuk throttling berbasis tarif memiliki format berikut di Google Cloud CLI:
gcloud compute security-policies rules create PRIORITY \ --security-policy=SECURITY_POLICY \ {--expression=EXPRESSION | --src-ip-ranges=SRC_IP_RANGE} \ --action "throttle" \ --rate-limit-threshold-count=RATE_LIMIT_THRESHOLD_COUNT \ --rate-limit-threshold-interval-sec=RATE_LIMIT_THRESHOLD_INTERVAL_SEC \ --conform-action=[allow] \ --exceed-action=[deny-403|deny-404|deny-429|deny-502|redirect] \ --exceed-redirect-type=[google-recaptcha|external-302] \ --exceed-redirect-target=REDIRECT_URL \ --enforce-on-key=[IP | ALL | HTTP-HEADER | XFF-IP | HTTP-COOKIE | HTTP-PATH | SNI | REGION-CODE] \ --enforce-on-key-name=[HTTP_HEADER_NAME|HTTP_COOKIE_NAME]
Pembatasan kapasitas pada kunci tunggal
Misalnya, perintah gcloud CLI berikut membuat aturan throttle
pada prioritas 105
dengan batas kapasitas 100 permintaan setiap 60 detik untuk
setiap alamat IP di 1.2.3.0/24
. Permintaan yang melebihi batas throttling akan menampilkan kode error 429
.
gcloud compute security-policies rules create 105 \ --security-policy SECURITY_POLICY \ --src-ip-ranges="1.2.3.0/24" \ --action=throttle \ --rate-limit-threshold-count=100 \ --rate-limit-threshold-interval-sec=60 \ --conform-action=allow \ --exceed-action=deny-429 \ --enforce-on-key=IP
Misalnya, perintah gcloud CLI berikut membuat aturan throttle
pada prioritas 110
dengan batas kapasitas 10 permintaan setiap 60 detik untuk setiap
nilai unik header HTTP User-Agent
di semua permintaan yang berasal dari alamat
IP di 1.2.3.0/24
. Permintaan yang melebihi batas throttling akan menampilkan kode error 429
.
gcloud compute security-policies rules create 110 \ --security-policy SECURITY_POLICY \ --src-ip-ranges="1.2.3.0/24" \ --action=throttle \ --rate-limit-threshold-count=10 \ --rate-limit-threshold-interval-sec=60 \ --conform-action=allow \ --exceed-action=deny-429 \ --enforce-on-key=HTTP-HEADER \ --enforce-on-key-name='User-Agent'
Terakhir, Anda dapat menerbitkan pemblokiran berbasis tarif untuk pengguna yang memiliki cookie pengecualian reCAPTCHA yang valid. Misalnya, perintah gcloud CLI berikut membuat aturan throttle
pada prioritas 115
dengan batas kapasitas 20 permintaan per 5 menit untuk setiap cookie pengecualian reCAPTCHA unik di semua permintaan yang memiliki cookie pengecualian reCAPTCHA yang valid. Permintaan yang melebihi batas throttling akan dialihkan untuk penilaian reCAPTCHA Enterprise. Untuk mengetahui informasi selengkapnya tentang cookie pengecualian dan penilaian reCAPTCHA Enterprise, lihat ringkasan pengelolaan bot.
gcloud compute security-policies rules create 115 \ --security-policy SECURITY_POLICY \ --expression="token.recaptcha_exemption.valid" \ --action=throttle \ --rate-limit-threshold-count=20 \ --rate-limit-threshold-interval-sec=300 \ --conform-action=allow \ --exceed-action=redirect \ --exceed-redirect-type=google-recaptcha \ --enforce-on-key=HTTP-COOKIE \ --enforce-on-key-name="recaptcha-ca-e"
Pembatasan kapasitas berdasarkan sidik jari JA3
Anda dapat menggunakan sidik jari JA3 sebagai kunci pembatasan kapasitas. Contoh berikut membuat aturan throttle
pada prioritas 1000
dengan batas kapasitas 20 permintaan per 5 menit yang cocok dengan permintaan dengan jalur /login
, berdasarkan sidik jari JA3 klien. Permintaan yang melebihi batas throttling akan ditolak.
gcloud compute security-policies rules create 1000 \ --security-policy SECURITY_POLICY \ --expression "request.path.matches('/login')" \ --action throttle \ --rate-limit-threshold-count 20 \ --rate-limit-threshold-interval-sec 300 \ --conform-action allow \ --exceed-action deny-429 \ --enforce-on-key-configs tls-ja3-fingerprint
Pembatasan kapasitas berdasarkan alamat IP pengguna
Saat menerima permintaan yang berasal dari proxy upstream, Anda dapat menerapkan pembatasan kapasitas berdasarkan alamat IP klien asal. Contoh berikut membuat aturan throttle
pada prioritas 1000
dengan batas kapasitas 20 permintaan per 5 menit yang cocok dengan permintaan dengan jalur /login
, berdasarkan alamat IP klien asal. Permintaan yang melebihi batas throttling akan ditolak.
gcloud compute security-policies rules create 1000 \ --security-policy SECURITY_POLICY --expression "request.path.matches('/login')" --action throttle --rate-limit-threshold-count 20 --rate-limit-threshold-interval-sec 300 --conform-action allow --exceed-action deny-429 --enforce-on-key-configs user-ip
Untuk mengetahui informasi lebih lanjut tentang dukungan alamat IP pengguna, baca referensi bahasa aturan.
Pembatasan kapasitas berdasarkan beberapa kunci
Anda juga dapat membatasi traffic berdasarkan beberapa kunci pembatasan kapasitas menggunakan
tanda enforce-on-key-configs
. Flag ini menggantikan flag enforce-on-key
dan flag enforce-on-key-name
. Flag enforce-on-key-configs
memerlukan
daftar pasangan KEY=NAME
yang dipisahkan koma; meskipun, Anda tidak perlu memberikan
nama untuk beberapa kunci.
Contoh berikut membuat aturan throttle
untuk kebijakan POLICY_NAME pada prioritas 105
dengan batas kapasitas 100 permintaan setiap 60 detik untuk setiap kombinasi HTTP-PATH
dan site_id
di semua permintaan yang berasal dari alamat IP di 1.2.3.0/24
. Permintaan yang melebihi batas throttling akan menampilkan kode error 429
.
gcloud compute security-policies rules create 105 \ --security-policy=POLICY_NAME \ --src-ip-ranges="1.2.3.0/24" \ --action=throttle \ --rate-limit-threshold-count=100 \ --rate-limit-threshold-interval-sec=60 \ --conform-action=allow \ --exceed-action=deny-429 \ --enforce-on-key-configs="HTTP-PATH,HTTP-COOKIE=site_id"
Aturan untuk pemblokiran berbasis tarif
Aturan untuk pemblokiran berbasis tarif memiliki format berikut di gcloud CLI:
gcloud compute security-policies rules create PRIORITY \ --security-policy=SECURITY_POLICY \ {--expression=EXPRESSION | --src-ip-ranges=SRC_IP_RANGE} \ --action "rate-based-ban" \ --rate-limit-threshold-count=RATE_LIMIT_THRESHOLD_COUNT \ --rate-limit-threshold-interval-sec=RATE_LIMIT_THRESHOLD_INTERVAL_SEC \ --ban-duration-sec=BAN_DURATION_SEC \ --ban-threshold-count=BAN_THRESHOLD_COUNT \ --ban-threshold-interval-sec=BAN_THRESHOLD_INTERVAL_SEC \ --conform-action=[allow] \ --exceed-action=[deny-403|deny-404|deny-429|deny-502|redirect] \ --exceed-redirect-type=[google-recaptcha|external-302] \ --exceed-redirect-target=REDIRECT_URL \ --enforce-on-key=[IP | ALL | HTTP-HEADER | XFF-IP | HTTP-COOKIE | HTTP-PATH | SNI | REGION-CODE] \ --enforce-on-key-name=[HTTP_HEADER_NAME|HTTP_COOKIE_NAME]
Misalnya, perintah gcloud CLI berikut membuat aturan pemblokiran berbasis tarif dengan prioritas 100
untuk setiap alamat IP yang permintaannya cocok dengan header fish
dengan nilai tuna
, lalu memblokirnya selama 300 detik jika kecepatannya melebihi batas 50 permintaan untuk setiap 120 detik. Permintaan yang diblokir akan menampilkan kode error
404
.
gcloud compute security-policies rules create 100 \ --security-policy=sec-policy \ --expression="request.headers['fish'] == 'tuna'" \ --action=rate-based-ban \ --rate-limit-threshold-count=50 \ --rate-limit-threshold-interval-sec=120 \ --ban-duration-sec=300 \ --conform-action=allow \ --exceed-action=deny-404 \ --enforce-on-key=IP
Misalnya, perintah gcloud CLI berikut membuat aturan pemblokiran berbasis tarif pada prioritas 101
untuk membatasi semua permintaan yang kode wilayahnya cocok dengan US
hingga 10 permintaan per 60 detik. Aturan ini juga memblokir permintaan dari region US
selama 300 detik jika kecepatannya melebihi batas 1.000 permintaan per 600 detik.
Permintaan yang diblokir akan menampilkan kode error 403
.
gcloud compute security-policies rules create 101 \ --security-policy sec-policy \ --expression "origin.region_code == 'US'" \ --action rate-based-ban \ --rate-limit-threshold-count 10 \ --rate-limit-threshold-interval-sec 60 \ --ban-duration-sec 300 \ --ban-threshold-count 1000 \ --ban-threshold-interval-sec 600 \ --conform-action allow \ --exceed-action deny-403 \ --enforce-on-key ALL
Misalnya, perintah gcloud CLI berikut membuat aturan pemblokiran berbasis tarif pada prioritas 102
untuk membatasi semua permintaan dari rentang alamat IP sumber apa pun hingga 20 permintaan per 60 detik. Aturan ini juga melarang permintaan dari rentang alamat IP sumber mana pun selama 600 detik jika tingkat permintaan melebihi batas 500 permintaan per 400 detik. Permintaan yang diblokir akan menampilkan kode error 429
.
gcloud compute security-policies rules create 102 \ --security-policy sec-policy \ --src-ip-ranges="*" \ --action rate-based-ban \ --rate-limit-threshold-count 20 \ --rate-limit-threshold-interval-sec 60 \ --ban-duration-sec 600 \ --ban-threshold-count 500 \ --ban-threshold-interval-sec 400 \ --conform-action allow \ --exceed-action deny-429 \ --enforce-on-key ALL
Langkah selanjutnya
- Lihat ringkasan pembatasan kapasitas.
- Pelajari pengelolaan bot lebih lanjut.