Configurer la limitation du débit avec Google Cloud Armor

Ce document explique comment appliquer une limitation du débit de partage équitable à vos clients Cloud Service Mesh. Cela vous aide à gérer la consommation équitable de vos services et à empêcher les clients malveillants ou au comportement inapproprié de surcharger vos services.

Le processus de configuration vous oblige à créer une stratégie de sécurité Cloud Armor et une stratégie de point de terminaison. Si vous ne connaissez pas les règles de sécurité Cloud Armor, nous vous recommandons de lire la présentation des règles de sécurité.

Fonctionnement de la limitation du débit

La limitation du débit restreint le nombre de requêtes que votre service peut recevoir des clients au cours d'un intervalle de temps spécifié. Cela permet d'améliorer la disponibilité de votre service et de partager équitablement la capacité disponible entre les clients. Le seuil de requêtes, l'intervalle et l'action que Cloud Armor applique au trafic entrant qui dépasse le seuil de limitation du débit sont configurables par l'utilisateur. Pour la limitation du débit Cloud Service Mesh, Cloud Armor utilise le type de règle de sécurité CLOUD_ARMOR_INTERNAL_SERVICE et les règles de sécurité utilisent l'action fairshare.

Chaque règle de sécurité Cloud Armor contient une ou plusieurs règles. Chaque règle se compose d'une condition de correspondance et d'une action. Lorsqu'une requête remplit la condition de correspondance, Cloud Armor applique l'action configurée à la requête. Lorsque vous configurez la limitation du débit, vous créez une règle de stratégie de sécurité avec l'une des actions de limitation du débit mentionnées précédemment et la condition de correspondance qui correspond à votre cas d'utilisation (y compris la correspondance avec toutes les requêtes entrantes avec l'indicateur --src-ip-ranges "*"). Les règles d'une stratégie sont évaluées par ordre de priorité. La règle ayant la priorité numérique la plus basse a la priorité logique la plus élevée et est évaluée en premier. Cloud Armor effectue une limitation du débit côté serveur, ce qui signifie que le serveur applique la limite de débit plutôt que l'appareil client.

Les actions de limitation du débit comportent des champs supplémentaires que vous pouvez utiliser pour affiner le seuil de limitation du débit. Les champs suivants sont partagés entre toutes les règles de limitation du débit :

  • rate_limit_threshold_count : nombre de requêtes par intervalle de temps configuré par l'utilisateur sur lequel Cloud Armor doit appliquer la limitation du débit.
  • interval_sec : intervalle de temps, en secondes, pour rate_limit_threshold_count.
  • exceed_action : action à effectuer sur les requêtes qui dépassent le seuil de limitation du débit.
  • conform_action : action à effectuer sur les requêtes qui ne dépassent pas le seuil de limite de fréquence.

Limitation du débit avec Cloud Service Mesh

Cette section fournit une description générale des étapes à suivre pour configurer la limitation du débit avec Cloud Service Mesh.

Tout d'abord, vous créez une règle de point de terminaison et vous vous assurez que EndpointMatcher sélectionne vos instances Cloud Service Mesh pour appliquer des limites de débit au trafic entrant. EndpointMatcher utilise des libellés de point de terminaison pour identifier les instances auxquelles il est associé.

Ensuite, vous créez une règle de sécurité Cloud Armor de type CLOUD_ARMOR_INTERNAL_SERVICE. La seule action disponible pour ce type de stratégie de sécurité est fairshare. Dans cette stratégie, vous allez créer une règle par défaut avec l'action fairshare pour appliquer une limitation du débit fairshare à tout le trafic qui ne répond pas à une règle de priorité supérieure. Vous pouvez ajouter des règles de priorité plus élevée pour appliquer une limite de débit différente à différents types de trafic. Par exemple, vous pouvez attribuer une limite de fréquence inférieure ou supérieure à une plage d'adresses IP spécifique.

Enfin, une fois que vous avez créé votre stratégie de sécurité avec une ou plusieurs règles de limitation du débit, vous l'associez à la stratégie de point de terminaison. Une fois la stratégie de sécurité associée, Cloud Armor applique une limitation du débit côté serveur à tout le trafic entrant qui correspond à une condition de correspondance d'une règle et qui se connecte aux instances de maillage de services sélectionnées par EndpointMatcher.

Cloud Service Mesh configure une limite de débit globale pour toutes les instances. Cela signifie que le volume total de trafic sur toutes les instances de serveur est agrégé pour déterminer quand appliquer la limite de fréquence. Tout client qui envoie des requêtes à un tel service est soumis au même seuil et à la même règle d'application. Cela signifie que lorsque le taux de trafic global dépasse le seuil, certaines requêtes sont abandonnées.

Pour configurer la limitation du débit avec Cloud Service Mesh, consultez Configurer la limitation du débit Google Cloud Armor avec Envoy.

Limites

Lorsque vous configurez la limitation du débit avec Cloud Armor, tenez compte des limites suivantes :

  • Les quotas Cloud Armor limitent le nombre de règles personnalisées que vous pouvez créer. Nous vous recommandons de vérifier votre quota avant de créer plus de 20 règles personnalisées.
  • Chaque ressource de règle de point de terminaison doit faire référence à une règle de sécurité différente. Vous ne pouvez pas associer une stratégie de sécurité à une nouvelle stratégie de point de terminaison si elle est déjà référencée par une stratégie de point de terminaison existante.
  • Les règles de sécurité avec l'action fairshare sont limitées à la clé de limitation du débit ALL.
  • Lorsque vous déployez des stratégies de sécurité avec l'action fairshare, Cloud Armor ignore le champ preview lors de l'application des règles.
  • Vous ne pouvez pas configurer de règle de sécurité Cloud Armor si vous utilisez le routage du trafic TCP.

De plus, les règles de sécurité Cloud Armor de type CLOUD_ARMOR_INTERNAL_SERVICE sont limitées aux attributs CEL (Custom Expression Language) suivants :

  • request.headers
  • request.method
  • request.path
  • request.scheme
  • request.query

Pour en savoir plus sur les attributs CEL, consultez Configurer les attributs du langage des règles personnalisées.