Questa pagina mostra come configurare le policy di limitazione di frequenza del servizio per i bilanciatori del carico delle applicazioni interni a livello di regione.
Prima di iniziare
- Acquisisci familiarità con la panoramica della limitazione di frequenza del servizio.
-
- API per la sicurezza di rete (
networksecurity.googleapis.com) - API Network Services (
networkservices.googleapis.com)
Per attivare le API, esegui il seguente comando:
gcloud services enable \ networksecurity.googleapis.com \ networkservices.googleapis.com - API per la sicurezza di rete (
Se non hai ancora configurato un bilanciatore del carico delle applicazioni interno a livello di regione, consulta la pagina Configurare un bilanciatore del carico delle applicazioni interno a livello di regione con backend di gruppi di istanze VM e creane uno.
Creare una policy di limitazione di frequenza del servizio
Per creare una policy di limitazione di frequenza del servizio, crea un file YAML che definisca la destinazione e le regole, quindi importa il file utilizzando il comando gcloud network-security service-rate-limit-policies. Le sezioni seguenti forniscono esempi di policy di limitazione di frequenza del servizio.
Applicare la limitazione di frequenza in base a gruppi personalizzati
L'esempio seguente utilizza un tag personalizzato dall'intestazione HTTP, x-custom-group-tag, per identificare due gruppi: group1 e group2. Limita le richieste al minuto (RPM) a 10.000 per group1 e 20.000 per group2.
gcloud
Crea il file
custom-groups-policy.yamle specifica i parametri della policy.$ cat >custom-groups-policy.yaml <<EOF name: projects/PROJECT_ID/locations/LOCATION/rateLimitPolicies/custom-groups-policy description: Rate limit each API key based on custom tags. httpRules: # Match on traffic on the custom tag header. - to: destination: headerSet: headers: - name: "x-custom-group-tag" value: exact: "group1" rateLimitActions: - rateLimitBucket: rl_group1_rpm_limit - to: destination: headerSet: headers: - name: "x-custom-group-tag" value: exact: "group2" rateLimitActions: - rateLimitBucket: rl_group2_rpm_limit rateLimitBuckets: - name: rl_group1_rpm_limit # Set threshold for ALL the traffic matching this bucket. keys: - keyType: ALL defaultLimit: countLimit: count: 10000 interval: 1 intervalUnit: MINUTES - name: rl_group2_rpm_limit # Set threshold for ALL the traffic matching this bucket. keys: - keyType: ALL defaultLimit: countLimit: count: 20000 interval: 1 intervalUnit: MINUTES targets: - resource: projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_NAME EOFSostituisci quanto segue:
PROJECT_ID: l'ID del tuo Cloud de Confiance progetto.LOCATION: la località della regola di forwarding.FORWARDING_RULE_NAME: il nome della regola di forwarding.
Crea la policy di limitazione di frequenza del servizio importando il file YAML che hai creato nel passaggio precedente:
gcloud network-security service-rate-limit-policies import custom-groups-policy \ --source=custom-groups-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Sostituisci quanto segue:
PROJECT_ID: l'ID del tuo Cloud de Confiance progetto.LOCATION: la località della regola di forwarding.
Applicare la limitazione di frequenza a tutti i client
L'esempio seguente limita le richieste al minuto a 10.000 per tutti i client.
gcloud
Crea il file
all-clients-policy.yamle specifica i parametri della policy.$ cat >all-clients-policy.yaml <<EOF name: projects/PROJECT_ID/locations/LOCATION/rateLimitPolicies/all-clients-policy description: Service rate limiting example. httpRules: # Match on all traffic. # Service rate limiting bucket - rateLimitActions: - rateLimitBucket: rl_default_rpm_limit rateLimitBuckets: - name: "rl_default_rpm_limit" # Match on 'ALL' requests for this bucket. keys: - keyType: ALL defaultLimit: countLimit: count: 10000 interval: 1 intervalUnit: MINUTES targets: - resource: projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_NAME EOFSostituisci quanto segue:
PROJECT_ID: l'ID del tuo Cloud de Confiance progetto.LOCATION: la località della regola di forwarding.FORWARDING_RULE_NAME: il nome della regola di forwarding.
Crea la policy di limitazione di frequenza del servizio importando il file YAML che hai creato nel passaggio precedente:
gcloud network-security service-rate-limit-policies import all-clients-policy \ --source=all-clients-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Sostituisci quanto segue:
PROJECT_ID: l'ID del tuo Cloud de Confiance progetto.LOCATION: la località della regola di forwarding.
Applicare la limitazione di frequenza in base all'host e alla chiave API
L'esempio seguente limita la frequenza delle API destinate all'host example.com a 1000 richieste ogni 5 minuti per ogni valore univoco della chiave API recuperata dall'intestazione HTTP x-api-key. Una chiave API speciale abc123 ha invece un limite maggiore di 10.000 richieste ogni 5 minuti.
gcloud
Crea il file
host-and-api-key-policy.yamle specifica i parametri della policy.$ cat >host-and-api-key-policy.yaml <<EOF name: projects/PROJECT_ID/locations/LOCATION/rateLimitPolicies/host-and-api-key-policy description: Rate limit each api key. httpRules: # Match on traffic to example.com - to: destination: hosts: - exact: "example.com" rateLimitActions: - rateLimitBucket: rl_default_rpm_limit rateLimitBuckets: - name: rl_default_rpm_limit # Identify API key from its header, say 'x-api-key'. keys: - header: "x-api-key" keyType: HTTP_HEADER defaultLimit: countLimit: count: 1000 interval: 5 intervalUnit: MINUTES # Override the threshold for specific API key 'abc123'. userOverrides: - overrideKey: httpHeaders: - header: "x-api-key" value: "abc123" limit: countLimit: count: 10000 interval: 5 intervalUnit: MINUTES targets: - resource: projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_NAME EOFSostituisci quanto segue:
PROJECT_ID: l'ID del tuo Cloud de Confiance progetto.LOCATION: la località della regola di forwarding.FORWARDING_RULE_NAME: il nome della regola di forwarding.
Crea la policy di limitazione di frequenza del servizio importando il file YAML che hai creato nel passaggio precedente:
gcloud network-security service-rate-limit-policies import host-and-api-key-policy \ --source=host-and-api-key-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Sostituisci quanto segue:
PROJECT_ID: l'ID del tuo Cloud de Confiance progetto.LOCATION: la località della regola di forwarding.
Applicare la limitazione di frequenza in base al percorso dell'URL e al nome del client
L'esempio seguente limita le API ospitate sul percorso /public per ogni client, identificato dal nome comune del certificato client, a 100 richieste al minuto.
gcloud
Crea il file
path-and-client-name-policy.yamle specifica i parametri della policy.$ cat >path-and-client-name-policy.yaml <<EOF name: projects/PROJECT_ID/locations/LOCATION/rateLimitPolicies/path-and-client-name-policy description: Simple API rate limiting example. httpRules: # Match on traffic to /public . - to: destination: paths: - exact: "/public" # Default RPM bucket rateLimitActions: - rateLimitBucket: rl_default_rpm_limit rateLimitBuckets: - name: "rl_default_rpm_limit" # Identify client by its client cert name keys: - keyType: PRINCIPAL principalType: CLIENT_CERT_COMMON_NAME defaultLimit: countLimit: count: 100 interval: 1 intervalUnit: MINUTES targets: - resource: projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_NAME EOFSostituisci quanto segue:
PROJECT_ID: l'ID del tuo Cloud de Confiance progetto.LOCATION: la località della regola di forwarding.FORWARDING_RULE_NAME: il nome della regola di forwarding.
Crea la policy di limitazione di frequenza del servizio importando il file YAML che hai creato nel passaggio precedente:
gcloud network-security service-rate-limit-policies import path-and-client-name-policy \ --source=path-and-client-name-policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Sostituisci quanto segue:
PROJECT_ID: l'ID del tuo Cloud de Confiance progetto.LOCATION: la località della regola di forwarding.