Configura le policy di limitazione di frequenza dei servizi

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

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

  1. Crea il file custom-groups-policy.yaml e 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
    EOF
    

    Sostituisci 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.
  2. 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

  1. Crea il file all-clients-policy.yaml e 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
    EOF
    

    Sostituisci 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.
  2. 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

  1. Crea il file host-and-api-key-policy.yaml e 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
    EOF
    

    Sostituisci 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.
  2. 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

  1. Crea il file path-and-client-name-policy.yaml e 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
    
    EOF
    

    Sostituisci 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.
  2. 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.

Passaggi successivi