Présentation de la limitation du débit du service

Les règles de limitation du débit des services vous permettent de maintenir la disponibilité des services pour les clients de confiance qui peuvent consommer une quantité excessive de ressources. Pour ce faire, elles donnent la priorité au trafic client essentiel lors des surcharges de service et limitent les clients qui dépassent les seuils prédéfinis.

Vous pouvez combiner les règles de limitation du débit des services avec d'autres types de limitation du débit, comme les règles de sécurité Cloud Armor qui interdisent explicitement les clients non fiables pour éviter les abus. Pour en savoir plus sur les règles de sécurité, consultez la Présentation des règles de sécurité et Cloud Armor Présentation de la limitation du débit.

Vous associez des règles de limitation du débit des services aux règles de transfert des équilibreurs de charge compatibles ou aux ressources de passerelle Secure Web Proxy. Pour en savoir plus sur l'utilisation des règles de limitation du débit des services avec des instances Secure Web Proxy, consultez Configurer des règles de limitation du débit des services.

Cibles compatibles

Les règles de limitation du débit des services sont disponibles pour les cibles suivantes :

  • Équilibreurs de charge d'application internes régionaux
  • Secure Web Proxy

Ordre de filtrage des requêtes

Les règles de limitation du débit des services ne sont qu'un seul type de filtre appliqué aux requêtes. Le schéma suivant illustre l'ordre dans lequel les filtres sont appliqués :

Ordre d'évaluation pour le filtrage des requêtes.
Ordre d'évaluation du filtrage des requêtes (cliquez pour agrandir).

Règles

Chaque règle de limitation du débit des services contient une liste de règles HTTP. Chaque règle spécifie une condition de correspondance et un ensemble d'actions de limitation du débit. Lorsqu'une requête remplit les conditions de correspondance de la règle, elle est évaluée par rapport à un ou plusieurs de vos buckets de limitation du débit configurés.

Conditions de correspondance

Les conditions de correspondance et leurs propriétés sont les suivantes. Chaque propriété peut correspondre à une chaîne exacte, à un préfixe, à un suffixe ou à une sous-chaîne :

  • Source : source de la requête.
  • Destination : destination de la requête. Si vous spécifiez plusieurs propriétés, elles sont combinées avec un opérateur logique AND.
    • header_set : liste d'en-têtes HTTP. Une correspondance se produit lorsque tous les en-têtes du header_set correspondent à la règle.
    • hosts : liste d'hôtes HTTP. Une correspondance se produit lorsque la requête est envoyée à l'un des hôtes spécifiés dans la liste.
    • paths : liste de chemins d'URL. Une correspondance se produit lorsque la requête utilise l'un des chemins spécifiés dans la liste.
    • methods: liste de méthodes HTTP valides (telles que GET ou POST). Une correspondance se produit lorsque la requête utilise l'une des méthodes spécifiées dans la liste.

Notez que les propriétés source et de destination sont combinées avec un opérateur logique AND pour déterminer si une règle correspond à une requête. Cela signifie que si vous spécifiez une source et une destination, une requête doit correspondre aux deux pour remplir les conditions de correspondance. De plus, les règles vides correspondent à toutes les requêtes.

Ordre d'évaluation des règles

Les règles sont évaluées dans l'ordre, de la première à la dernière définie dans la règle. La première règle qui correspond à une requête applique ses actions de limitation du débit à la requête, et aucune autre règle n'est évaluée. Si une règle comporte plusieurs actions de limitation du débit et que l'une d'elles dépasse le seuil configuré, la requête est limitée.

Buckets de limitation du débit

Vous configurez un ou plusieurs buckets de limitation du débit, chacun comportant une ou plusieurs clés de limitation du débit. Lorsqu'une requête remplit les conditions de correspondance d'une règle, elle est évaluée par rapport à un ou plusieurs de vos buckets de limitation du débit configurés. Ensuite, le bucket applique sa clé de limitation du débit configurée pour identifier les clients individuels et appliquer la limite.

En plus des types de clés, vous pouvez configurer les propriétés de bucket suivantes :

  • Simulation : en mode de simulation, la règle est évaluée et les correspondances sont suivies, mais l'action de la règle n'est pas appliquée. Cela vous permet de tester vos règles de limitation du débit sans limiter les clients ni impacter le trafic de production.
  • Remplacements par l'utilisateur : vous pouvez remplacer les limites de requêtes par défaut pour des valeurs de clé spécifiques. Par exemple, si vous aviez un bucket avec une limite par défaut de 100 requêtes par minute et par client, et que ce bucket utilisait le type de clé SOURCE_IP, vous pouvez remplacer la limite pour une adresse IP spécifique et imposer une limite de 200 requêtes par minute.

Types de clés

Vous pouvez identifier les clients individuels pour la limitation du débit en utilisant les types de clés suivants pour agréger les requêtes et appliquer les limites de débit :

  • ALL (toutes) : une clé unique pour toutes les requêtes qui satisfont la condition de correspondance de règle.
  • SOURCE_IP : une clé unique pour chaque adresse IP cliente dont les requêtes satisfont la condition de correspondance de règle.
  • HTTP_HEADER : une clé unique pour chaque valeur d'en-tête HTTP unique dont le nom est configuré. La valeur de clé est tronquée aux 128 premiers octets de la valeur d'en-tête. Le type de clé est défini par défaut sur ALL si aucun en-tête de ce type n'est présent.
  • HTTP_PATH : chemin de l'URL de la requête HTTP. La valeur de clé est tronquée aux 128 premiers octets.
  • PRINCIPAL : chaîne représentant une identité, dérivée de le certificat du client. Le seul type de principal compatible est CLIENT_CERT_COMMON_NAME.

Vous pouvez spécifier un ou plusieurs types de clés dans chaque règle. Si vous spécifiez plusieurs types de clés, la combinaison totale de clés pour chaque client est utilisée comme clé unique. Par exemple, vous pouvez utiliser une combinaison de SOURCE_IP et de HTTP_PATH pour appliquer des limites de débit sur la fréquence à laquelle une adresse IP spécifique peut accéder à un point de terminaison spécifique.

Utiliser des principaux pour la limitation du débit des services

Pour identifier la source du trafic avec une grande précision, vous pouvez configurer des règles de limitation du débit des services basées sur des identités dérivées du certificat d'un client. Cette méthode nécessite que le protocole mTLS de l'interface soit activé sur l'équilibreur de charge et utilise l'attribut Nom commun du certificat client (CLIENT_CERT_COMMON_NAME) comme sélecteur de principal pour l'identification.

Si aucun sélecteur de principal n'est spécifié pour l'identification, CLIENT_CERT_URI_SAN est utilisé comme sélecteur de principal par défaut. Cela signifie que les SAN d'URI du certificat client sont évalués lors de la prise de décisions concernant la limitation du débit.

Pour que la limitation du débit basée sur le principal fonctionne, les conditions suivantes doivent s'appliquer :

  • Le protocole mTLS de l'interface doit être activé. Si le protocole mTLS de l'interface n'est pas activé, le client ne présente pas de certificat. Par conséquent, aucune règle basée sur le principal dans la règle de limitation du débit des services ne trouve d'informations de certificat à évaluer. Par exemple, une règle vérifiant CLIENT_CERT_URI_SAN voit une valeur vide.

  • Un certificat client valide doit être présent. Même si le protocole mTLS est activé, un certificat client n'est pas utilisé pour la limitation du débit si la connexion a été établie avec un certificat manquant ou non valide. Ce scénario se produit lorsque le mode de validation du client mTLS est défini sur le mode permissif ALLOW_INVALID_OR_MISSING_CLIENT_CERT. Dans ce cas également, aucune règle basée sur le principal dans la règle de limitation du débit des services ne trouve d'informations de certificat à évaluer. Par exemple, une règle vérifiant CLIENT_CERT_URI_SAN voit une valeur vide.

Impact des limites de taille des attributs

Les décisions concernant la limitation du débit sont sensibles à la taille des attributs du certificat client. Une requête est refusée si un attribut dépasse sa limite de taille et que la règle est configurée pour valider cet attribut spécifique.

Un refus peut se produire lorsque la règle effectue une validation par rapport à CLIENT_CERT_COMMON_NAME et que le sujet du certificat (qui contient le nom commun) dépasse la limite de taille.

Étape suivante