Questa pagina contiene informazioni sulla configurazione delle regole di Google Cloud Armor per applicare limiti di frequenza per client configurando un'azione di limitazione o di divieto in base alla frequenza. Prima di configurare il limite di frequenza, assicurati di conoscere bene le informazioni riportate nella panoramica del limite di frequenza.
Prima di iniziare
Le sezioni seguenti spiegano tutti i ruoli e tutti i ruoli IAM (Identity and Access Management)
autorizzazioni necessarie per configurare i criteri di sicurezza di Google Cloud Armor. Per i casi d'uso descritti in questo documento, è sufficiente l'autorizzazione compute.securityPolicies.create
.
Configura le autorizzazioni IAM per i criteri di sicurezza di Google Cloud Armor
Le seguenti operazioni richiedono il ruolo Amministratore della sicurezza di Compute (roles/compute.securityAdmin
) di Identity and Access Management (IAM):
- Configurazione, modifica, aggiornamento ed eliminazione di Google Cloud Armor criterio di sicurezza
- Se utilizzi i seguenti metodi dell'API:
SecurityPolicies insert
SecurityPolicies delete
SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
Un utente con il ruolo Amministratore rete Compute (roles/compute.networkAdmin
)
può eseguire le seguenti operazioni:
- Impostazione di un criterio di sicurezza di Google Cloud Armor per un servizio di backend
- Se utilizzi i seguenti metodi dell'API:
BackendServices setSecurityPolicy
BackendServices list
(sologcloud
)
Gli utenti con il ruolo Amministratore della sicurezza (roles/iam.securityAdmin
)
e il ruolo Amministratore della rete di calcolo possono visualizzare i criteri di sicurezza di Google Cloud Armor utilizzando i metodi SecurityPolicies
dell'API get
, list
e
getRule
.
Configura le autorizzazioni IAM per i ruoli personalizzati
La tabella seguente elenca i ruoli IAM autorizzazioni di base e i metodi API associati.
Autorizzazioni IAM | Metodi 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 |
Regole per la limitazione in base alla frequenza
Le regole per la limitazione basata sulla frequenza hanno il seguente formato: 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]
Limitazione di frequenza per singole chiavi
Ad esempio, il seguente comando gcloud CLI crea un'istruzione throttle
regola con priorità 105
con un limite di frequenza di 100 richieste ogni 60 secondi per
ogni indirizzo IP in 1.2.3.0/24
. Richieste che superano il limite di limitazione
restituiscono un codice di errore 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
Ad esempio, il seguente comando della CLI gcloud crea una regola throttle
con priorità 110
e un limite di frequenza di 10 richieste ogni 60 secondi per ogni
valore univoco dell'intestazione HTTP User-Agent
per tutte le richieste provenienti da indirizzi IP
in 1.2.3.0/24
. Le richieste che superano il limite di limitazione restituiscono un valore
Codice di errore 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'
Infine, puoi emettere ban basati sulla frequenza per gli utenti che dispongono di un cookie di esenzione reCAPTCHA valido. Ad esempio, il seguente comando gcloud CLI
Crea una regola throttle
con priorità 115
con un limite di frequenza di 20 richieste
ogni 5 minuti per ogni cookie di esenzione reCAPTCHA univoco in tutte le richieste
con un cookie di esenzione reCAPTCHA valido. Le richieste che superano il limite di throttling vengono reindirizzate per la valutazione reCAPTCHA. Per
ulteriori informazioni sui cookie di esenzione e test reCAPTCHA.
consulta la panoramica sulla gestione dei 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"
Limitazione di frequenza basata sulle impronte JA3
Puoi utilizzare le impronte JA3 come chiave di limitazione della frequenza. L'esempio seguente
crea una regola throttle
con priorità 1000
e un limite di frequenza di 20
richieste ogni 5 minuti che corrisponde alle richieste con il percorso /login
, in base
alla impronta JA3 del client. Le richieste che superano il limite di throttling vengono rifiutate.
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
Limitazione della frequenza in base all'indirizzo IP dell'utente
Quando ricevi richieste tramite un proxy a monte, puoi applicare la limitazione della frequenza in base all'indirizzo IP del client di origine. L'esempio seguente crea una regola throttle
con priorità 1000
e un limite di frequenza di 20 richieste ogni 5 minuti che corrisponde alle richieste con il percorso /login
in base all'indirizzo IP del client di origine. Le richieste che superano il limite di throttling vengono rifiutate.
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
Per ulteriori informazioni sul supporto dell'indirizzo IP dell'utente, vedi riferimento al linguaggio di regole.
Limitazione di frequenza basata su più chiavi
Puoi anche limitare il traffico in base a più chiavi di limitazione della frequenza utilizzando il
enforce-on-key-configs
flag. Questo flag sostituisce entrambi i flag enforce-on-key
e il flag enforce-on-key-name
. Il flag enforce-on-key-configs
richiede un
elenco di coppie KEY=NAME
separate da virgole; tuttavia, non è necessario fornire un
nome per alcune chiavi.
L'esempio seguente crea una regola throttle
per il criterio
POLICY_NAME con priorità 105
con un limite di frequenza di 100 richieste ogni
60 secondi per ogni combinazione di HTTP-PATH
e site_id
per tutte le richieste
provenienti da indirizzi IP in 1.2.3.0/24
. Le richieste che superano il limite di throttling restituiscono un codice di errore 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"
Regole per le esclusioni basate sulle tariffe
Le regole per le esclusioni basate sulla frequenza hanno il seguente formato in 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]
Ad esempio, il seguente comando della CLI gcloud crea una regola di divieto basata sulla frequenza con priorità 100
per ogni indirizzo IP le cui richieste corrispondono a un fish
di intestazione con valore tuna
e lo vieta per 300 secondi quando la sua frequenza supera un limite di 50 richieste ogni 120 secondi. Le richieste escluse restituiscono un codice di errore
di 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
Ad esempio, il seguente comando gcloud CLI crea un'interfaccia
regola di esclusione con priorità 101
per limitare tutte le richieste il cui codice regione corrisponde a US
a 10 richieste ogni 60 secondi. La regola esclude anche le richieste dalla regione US
per 300 secondi quando la frequenza supera il limite di 1000 richieste ogni 600 secondi.
Le richieste escluse restituiscono un codice di errore pari a 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
Ad esempio, il seguente comando gcloud CLI crea un'interfaccia
regola di esclusione con priorità 102
per limitare tutte le richieste da qualsiasi indirizzo IP di origine
di 20 richieste ogni 60 secondi. La regola vieta inoltre le richieste da qualsiasi intervallo di indirizzi IP di origine per 600 secondi quando la frequenza delle richieste supera un limite di 500 richieste ogni 400 secondi. Le richieste escluse restituiscono un codice di errore pari a 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
Modificare una regola di limitazione in una regola di esclusione basata sulla frequenza
Puoi utilizzare il seguente comando per modificare l'azione di un da un'azione di limitazione a un'azione di esclusione basata sul tasso.
gcloud compute security-policies rules update 105 \ --action=rate-based-ban \ --security-policy=sec-policy \ --ban-duration-sec=600
Non puoi modificare l'azione di una regola esistente da un'esclusione basata sulla frequenza a un'azione di limitazione.
Passaggi successivi
- Visualizza la panoramica della limitazione di frequenza.
- Scopri di più sulla gestione dei bot.