Cette page contient des informations sur la configuration des règles de Google Cloud Armor de manière à appliquer des limites de débit par client en configurant une action de limitation du débit ou d'exclusion basée sur le débit. Avant de configurer la limitation du débit, assurez-vous de connaître les informations de la présentation de la limitation du débit.
Avant de commencer
Les sections suivantes expliquent tous les rôles et autorisations IAM (Identity and Access Management) requis pour configurer les stratégies de sécurité Cloud Armor. Pour les cas d'utilisation de ce document, vous n'avez besoin que de l'autorisation compute.securityPolicies.create
.
Configurer les autorisations IAM pour les stratégies de sécurité Cloud Armor
Les opérations suivantes nécessitent le rôle IAM (Identity and Access Management) Administrateur de sécurité de Compute (roles/compute.securityAdmin
) :
- Configurer, modifier, mettre à jour et supprimer une stratégie de sécurité Cloud Armor
- Avec les méthodes d'API suivantes :
SecurityPolicies insert
SecurityPolicies delete
SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
Un utilisateur disposant du rôle Administrateur de réseaux Compute (roles/compute.networkAdmin
) peut effectuer les opérations suivantes :
- Définir une stratégie de sécurité Cloud Armor pour un service de backend
- Avec les méthodes d'API suivantes :
BackendServices setSecurityPolicy
BackendServices list
(gcloud
uniquement)
Les utilisateurs disposant du rôle Administrateur de sécurité (roles/iam.securityAdmin
) et du rôle Administrateur de réseaux Compute peuvent afficher les stratégies de sécurité Cloud Armor à l'aide des méthodes d'API SecurityPolicies
get
, list
et getRule
.
Configurer les autorisations IAM pour les rôles personnalisés
Le tableau suivant liste les autorisations standards des rôles IAM, ainsi que les méthodes d'API associées.
Autorisation IAM | Méthodes d'API |
---|---|
compute.securityPolicies.create |
SecurityPolicies insert |
compute.securityPolicies.delete |
SecurityPolicies delete |
compute.securityPolicies.get |
SecurityPolicies get SecurityPolicies getRule |
compute.securityPolicies.list |
SecurityPolicies list |
compute.securityPolicies.use |
BackendServices setSecurityPolicy |
compute.securityPolicies.update |
SecurityPolicies patch SecurityPolicies addRule SecurityPolicies patchRule SecurityPolicies removeRule |
compute.backendServices.setSecurityPolicy |
BackendServices setSecurityPolicy |
Règles de limitation du débit
Les règles de limitation du débit utilisent le format suivant dans la Google Cloud CLI :
gcloud compute security-policies rules create PRIORITY \ --security-policy=SECURITY_POLICY \ {--expression=EXPRESSION | --src-ip-ranges=SRC_IP_RANGE} \ --action "throttle" \ --rate-limit-threshold-count=RATE_LIMIT_THRESHOLD_COUNT \ --rate-limit-threshold-interval-sec=RATE_LIMIT_THRESHOLD_INTERVAL_SEC \ --conform-action=[allow] \ --exceed-action=[deny-403|deny-404|deny-429|deny-502|redirect] \ --exceed-redirect-type=[google-recaptcha|external-302] \ --exceed-redirect-target=REDIRECT_URL \ --enforce-on-key=[IP | ALL | HTTP-HEADER | XFF-IP | HTTP-COOKIE | HTTP-PATH | SNI | REGION-CODE] \ --enforce-on-key-name=[HTTP_HEADER_NAME|HTTP_COOKIE_NAME]
Limitation du débit sur les clés uniques
Par exemple, la commande gcloud CLI suivante crée une règle throttle
au niveau de priorité 105
avec une limite de débit de 100 requêtes toutes les 60 secondes pour chaque adresse IP de la plage 1.2.3.0/24
. Les requêtes qui dépassent la limite de débit renvoient un code d'erreur 429
.
gcloud compute security-policies rules create 105 \ --security-policy SECURITY_POLICY \ --src-ip-ranges="1.2.3.0/24" \ --action=throttle \ --rate-limit-threshold-count=100 \ --rate-limit-threshold-interval-sec=60 \ --conform-action=allow \ --exceed-action=deny-429 \ --enforce-on-key=IP
Par exemple, la commande gcloud CLI suivante crée une règle throttle
au niveau de priorité 110
avec une limite de débit de 10 requêtes toutes les 60 secondes pour chaque valeur unique de l'en-tête HTTP User-Agent
sur toutes les requêtes provenant d'adresses IP de la plage 1.2.3.0/24
. Les requêtes qui dépassent la limite de débit renvoient un code d'erreur 429
.
gcloud compute security-policies rules create 110 \ --security-policy SECURITY_POLICY \ --src-ip-ranges="1.2.3.0/24" \ --action=throttle \ --rate-limit-threshold-count=10 \ --rate-limit-threshold-interval-sec=60 \ --conform-action=allow \ --exceed-action=deny-429 \ --enforce-on-key=HTTP-HEADER \ --enforce-on-key-name='User-Agent'
Enfin, vous pouvez appliquer des mesures d'exclusion basée sur le débit pour les utilisateurs disposant d'un cookie d'exception reCAPTCHA valide. Par exemple, la commande gcloud CLI suivante crée une règle throttle
au niveau de priorité 115
avec une limite de débit de 20 requêtes par tranche de 5 minutes pour chaque cookie d'exception reCAPTCHA unique sur toutes les requêtes ayant un cookie d'exception reCAPTCHA valide. Les requêtes qui dépassent la limite de débit sont redirigées vers l'évaluation reCAPTCHA. Pour en savoir plus sur les cookies d'exception et l'évaluation reCAPTCHA, consultez la présentation de la gestion des bots.
gcloud compute security-policies rules create 115 \ --security-policy SECURITY_POLICY \ --expression="token.recaptcha_exemption.valid" \ --action=throttle \ --rate-limit-threshold-count=20 \ --rate-limit-threshold-interval-sec=300 \ --conform-action=allow \ --exceed-action=redirect \ --exceed-redirect-type=google-recaptcha \ --enforce-on-key=HTTP-COOKIE \ --enforce-on-key-name="recaptcha-ca-e"
Limitation du débit basée sur les empreintes JA4 et JA3
Vous pouvez utiliser les empreintes JA4 et JA3 comme clés de limitation du débit. L'exemple suivant crée une règle throttle
au niveau de priorité 1000
avec une limite de débit de 20 requêtes par tranche de 5 minutes qui correspond aux requêtes ayant le chemin d'accès /login
, en fonction de l'empreinte JA4 du client. Les requêtes qui dépassent la limite de débit sont refusées.
gcloud compute security-policies rules create 1000 \ --security-policy SECURITY_POLICY \ --expression "request.path.matches('/login')" \ --action throttle \ --rate-limit-threshold-count 20 \ --rate-limit-threshold-interval-sec 300 \ --conform-action allow \ --exceed-action deny-429 \ --enforce-on-key-configs tls-ja4-fingerprint
Limitation du débit en fonction de l'adresse IP de l'utilisateur
Lorsque vous recevez des requêtes qui transitent par un proxy en amont, vous pouvez appliquer une limitation du débit en fonction de l'adresse IP du client d'origine. L'exemple suivant crée une règle throttle
au niveau de priorité 1000
avec une limite de débit de 20 requêtes par tranche de 5 minutes qui correspond aux requêtes ayant le chemin d'accès /login
, en fonction de l'adresse IP du client d'origine. Les requêtes qui dépassent la limite de débit sont refusées.
gcloud compute security-policies rules create 1000 \ --security-policy SECURITY_POLICY --expression "request.path.matches('/login')" --action throttle --rate-limit-threshold-count 20 --rate-limit-threshold-interval-sec 300 --conform-action allow --exceed-action deny-429 --enforce-on-key-configs user-ip
Pour en savoir plus sur la compatibilité avec les adresses IP des utilisateurs, consultez la documentation de référence sur le langage des règles.
Limitation du débit en fonction de plusieurs clés
Vous pouvez également limiter le trafic en fonction de plusieurs clés de limitation du débit à l'aide du flag enforce-on-key-configs
. Ce flag remplace les flags enforce-on-key
et enforce-on-key-name
. Le flag enforce-on-key-configs
nécessite une liste de paires KEY=NAME
séparées par une virgule. Toutefois, vous n'avez pas besoin de fournir de nom pour certaines clés.
L'exemple suivant crée une règle throttle
pour la stratégie POLICY_NAME au niveau de priorité 105
avec une limite de débit de 100 requêtes toutes les 60 secondes pour chaque combinaison de HTTP-PATH
et site_id
sur toutes les requêtes provenant d'adresses IP de la plage 1.2.3.0/24
. Les requêtes qui dépassent la limite de débit renvoient un code d'erreur 429
.
gcloud compute security-policies rules create 105 \ --security-policy=POLICY_NAME \ --src-ip-ranges="1.2.3.0/24" \ --action=throttle \ --rate-limit-threshold-count=100 \ --rate-limit-threshold-interval-sec=60 \ --conform-action=allow \ --exceed-action=deny-429 \ --enforce-on-key-configs="HTTP-PATH,HTTP-COOKIE=site_id"
Règles d'exclusion basée sur le débit
Les règles d'exclusion basée sur le débit sont au format suivant dans la gcloud CLI :
gcloud compute security-policies rules create PRIORITY \ --security-policy=SECURITY_POLICY \ {--expression=EXPRESSION | --src-ip-ranges=SRC_IP_RANGE} \ --action "rate-based-ban" \ --rate-limit-threshold-count=RATE_LIMIT_THRESHOLD_COUNT \ --rate-limit-threshold-interval-sec=RATE_LIMIT_THRESHOLD_INTERVAL_SEC \ --ban-duration-sec=BAN_DURATION_SEC \ --ban-threshold-count=BAN_THRESHOLD_COUNT \ --ban-threshold-interval-sec=BAN_THRESHOLD_INTERVAL_SEC \ --conform-action=[allow] \ --exceed-action=[deny-403|deny-404|deny-429|deny-502|redirect] \ --exceed-redirect-type=[google-recaptcha|external-302] \ --exceed-redirect-target=REDIRECT_URL \ --enforce-on-key=[IP | ALL | HTTP-HEADER | XFF-IP | HTTP-COOKIE | HTTP-PATH | SNI | REGION-CODE] \ --enforce-on-key-name=[HTTP_HEADER_NAME|HTTP_COOKIE_NAME]
Par exemple, la commande gcloud CLI suivante crée une règle d'exclusion basée sur le débit avec une priorité de 100
pour chaque adresse IP dont les requêtes correspondent à un en-tête fish
de valeur tuna
, et exclut l'adresse pendant 300 secondes lorsque le débit dépasse 50 requêtes toutes les 120 secondes. Les requêtes envoyées par des adresses exclues renvoient un code d'erreur 404
.
gcloud compute security-policies rules create 100 \ --security-policy=sec-policy \ --expression="request.headers['fish'] == 'tuna'" \ --action=rate-based-ban \ --rate-limit-threshold-count=50 \ --rate-limit-threshold-interval-sec=120 \ --ban-duration-sec=300 \ --conform-action=allow \ --exceed-action=deny-404 \ --enforce-on-key=IP
Par exemple, la commande gcloud CLI suivante crée une règle d'exclusion basée sur le débit au niveau de priorité 101
afin de limiter toutes les requêtes ayant le code de région US
à 10 requêtes toutes les 60 secondes. La règle exclut également les requêtes provenant de la région US
pendant 300 secondes lorsque le débit dépasse la limite de 1 000 requêtes toutes les 600 secondes.
Les requêtes envoyées par des adresses exclues renvoient un code d'erreur 403
.
gcloud compute security-policies rules create 101 \ --security-policy sec-policy \ --expression "origin.region_code == 'US'" \ --action rate-based-ban \ --rate-limit-threshold-count 10 \ --rate-limit-threshold-interval-sec 60 \ --ban-duration-sec 300 \ --ban-threshold-count 1000 \ --ban-threshold-interval-sec 600 \ --conform-action allow \ --exceed-action deny-403 \ --enforce-on-key ALL
Par exemple, la commande gcloud CLI suivante crée une règle d'exclusion basée sur le débit au niveau de priorité 102
pour limiter toutes les requêtes provenant de n'importe quelle plage d'adresses IP source à 20 requêtes toutes les 60 secondes. La règle exclut également les requêtes de toute plage d'adresses IP sources pendant 600 secondes lorsque le taux de requêtes dépasse la limite de 500 requêtes toutes les 400 secondes. Les requêtes envoyées par des adresses exclues renvoient un code d'erreur 429
.
gcloud compute security-policies rules create 102 \ --security-policy sec-policy \ --src-ip-ranges="*" \ --action rate-based-ban \ --rate-limit-threshold-count 20 \ --rate-limit-threshold-interval-sec 60 \ --ban-duration-sec 600 \ --ban-threshold-count 500 \ --ban-threshold-interval-sec 400 \ --conform-action allow \ --exceed-action deny-429 \ --enforce-on-key ALL
Transformer une règle de limitation de débit en règle d'exclusion basée sur le débit
La commande suivante vous permet de modifier l'action d'une règle existante pour passer d'une action de limitation du débit à une action d'exclusion basée sur le débit.
gcloud compute security-policies rules update 105 \ --action=rate-based-ban \ --security-policy=sec-policy \ --ban-duration-sec=600
Vous ne pouvez pas modifier l'action d'une règle existante pour passer d'une action d'exclusion basée sur le débit à une action de limitation du débit.
Étapes suivantes
- Consultez la présentation de la limitation du débit.
- Découvrez-en davantage sur la gestion des bots.