Configurer la limitation du débit avec Google Cloud Armor
Ce document explique comment appliquer une limitation du débit équitable à vos clients Cloud Service Mesh. Cela vous permet de gérer une consommation équitable de vos services et d'empêcher les clients malveillants ou au comportement inapproprié de surcharger vos services.
Le processus de configuration nécessite de créer une stratégie de sécurité Cloud Armor et une stratégie de point de terminaison. Si vous ne connaissez pas les stratégies de sécurité Cloud Armor, nous vous recommandons de lire la présentation des stratégies 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 dans 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 stratégie de sécurité CLOUD_ARMOR_INTERNAL_SERVICE et les règles de stratégie de sécurité utilisent l'action fairshare.
Chaque stratégie 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 sur 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 dont la priorité numérique est la plus faible 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 utilisez 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 au-delà duquel Cloud Armor doit appliquer la limitation du débit.interval_sec: intervalle de temps, en secondes, pourrate_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 limitation du débit.
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, créez une stratégie de point de terminaison et assurez-vous 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, créez une stratégie 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, créez une règle par défaut avec l'action fairshare pour appliquer une limitation du débit équitable à tout le trafic qui ne répond pas à une règle de priorité plus élevée. Vous pouvez ajouter de nouvelles 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 débit inférieure ou supérieure à une plage d'adresses IP spécifique.
Enfin, une fois que vous avez terminé de créer votre stratégie de sécurité avec une ou plusieurs règles de limitation du débit, associez-la à 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 sur 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 débit. Tout client qui envoie des requêtes à un tel service est soumis au même seuil et à la même stratégie d'application. Cela signifie que lorsque le taux de trafic agrégé 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 stratégie de point de terminaison doit faire référence à une stratégie 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 stratégies de sécurité avec l'action
fairsharesont limitées à la clé de limitation du débitALL. - Lorsque vous déployez des stratégies de sécurité avec l'action
fairshare, Cloud Armor ignore le champpreviewlors de l'application des règles. - Vous ne pouvez pas configurer de stratégie de sécurité Cloud Armor si vous utilisez le routage du trafic TCP.
De plus, les stratégies de sécurité Cloud Armor de type CLOUD_ARMOR_INTERNAL_SERVICE sont limitées aux attributs suivants du langage d'expression personnalisé (CEL) :
request.headersrequest.methodrequest.pathrequest.schemerequest.query
Pour en savoir plus sur les attributs CEL, consultez Configurer les attributs du langage des règles personnalisées.