Configurer des règles de limitation du débit de service

Cette page explique comment configurer des règles de limitation du débit de service pour les équilibreurs de charge d'application internes régionaux.

Avant de commencer

Créer une règle de limitation du débit de service

Pour créer une règle de limitation du débit de service, créez un fichier YAML qui définit la cible et les règles, puis importez le fichier à l'aide de la commande gcloud network-security service-rate-limit-policies. Les sections suivantes fournissent des exemples de règles de limitation du débit de service.

Appliquer la limitation du débit en fonction de groupes personnalisés

L'exemple suivant utilise une balise personnalisée de l'en-tête HTTP, x-custom-group-tag, pour identifier deux groupes : group1 et group2. Il limite les requêtes par minute (RPM) à 10 000 pour group1 et à 20 000 pour group2.

gcloud

  1. Créez le fichier custom-groups-policy.yaml et spécifiez les paramètres de la règle.

    $ 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
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Cloud de Confiance projet.
    • LOCATION : emplacement de votre règle de transfert.
    • FORWARDING_RULE_NAME: nom de votre règle de transfert.
  2. Créez la règle de limitation du débit de service en important le fichier YAML que vous avez créé à l'étape précédente :

    gcloud network-security service-rate-limit-policies import custom-groups-policy \
     --source=custom-groups-policy.yaml \
     --location=LOCATION \
     --project=PROJECT_ID
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Cloud de Confiance projet.
    • LOCATION : emplacement de votre règle de transfert.

Appliquer la limitation du débit à tous les clients

L'exemple suivant limite les requêtes par minute à 10 000 pour tous les clients.

gcloud

  1. Créez le fichier all-clients-policy.yaml et spécifiez les paramètres de la règle.

    $ 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
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Cloud de Confiance projet.
    • LOCATION : emplacement de votre règle de transfert.
    • FORWARDING_RULE_NAME: nom de votre règle de transfert.
  2. Créez la règle de limitation du débit de service en important le fichier YAML que vous avez créé à l'étape précédente :

    gcloud network-security service-rate-limit-policies import all-clients-policy \
     --source=all-clients-policy.yaml \
     --location=LOCATION \
     --project=PROJECT_ID
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Cloud de Confiance projet.
    • LOCATION : emplacement de votre règle de transfert.

Appliquer la limitation du débit en fonction de l'hôte et de la clé API

L'exemple suivant limite le débit des API destinées à l'hôte example.com à 1 000 requêtes toutes les cinq minutes pour chaque valeur unique de la clé API extraite de l'en-tête HTTP x-api-key. Une clé API spéciale abc123 a une limite plus élevée de 10 000 requêtes toutes les cinq minutes.

gcloud

  1. Créez le fichier host-and-api-key-policy.yaml et spécifiez les paramètres de la règle.

    $ 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
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Cloud de Confiance projet.
    • LOCATION : emplacement de votre règle de transfert.
    • FORWARDING_RULE_NAME: nom de votre règle de transfert.
  2. Créez la règle de limitation du débit de service en important le fichier YAML que vous avez créé à l'étape précédente :

    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
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Cloud de Confiance projet.
    • LOCATION : emplacement de votre règle de transfert.

Appliquer la limitation du débit en fonction du chemin d'URL et du nom du client

L'exemple suivant limite les API hébergées sur le chemin /public pour chaque client, identifié par son nom commun de certificat client, à 100 requêtes par minute.

gcloud

  1. Créez le fichier path-and-client-name-policy.yaml et spécifiez les paramètres de la règle.

    $ 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
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Cloud de Confiance projet.
    • LOCATION : emplacement de votre règle de transfert.
    • FORWARDING_RULE_NAME: nom de votre règle de transfert.
  2. Créez la règle de limitation du débit de service en important le fichier YAML que vous avez créé à l'étape précédente :

    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
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre Cloud de Confiance projet.
    • LOCATION : emplacement de votre règle de transfert.

Étape suivante