Cette page contient des informations sur la configuration des règles Google Cloud Armor. d'appliquer des limites de débit par client en configurant une limitation ou une interdiction basée sur le débit action. Avant de configurer la limitation du débit, assurez-vous de bien les informations Présentation de la limitation du débit
Avant de commencer
Les sections suivantes décrivent tous les rôles IAM (Identity and Access Management)
autorisations requises pour configurer des stratégies de sécurité Google Cloud Armor. Pour
des cas d'utilisation présentés dans ce document, vous n'avez besoin
Autorisation compute.securityPolicies.create
.
Configurer les autorisations IAM pour les stratégies de sécurité Google Cloud Armor
Les opérations suivantes nécessitent Identity and Access Management (IAM)
Rôle d'administrateur de sécurité Compute (roles/compute.securityAdmin
):
- Configurer, modifier, mettre à jour et supprimer une instance Google Cloud Armor stratégie de sécurité
- Utilisez les méthodes d'API suivantes:
<ph type="x-smartling-placeholder">
- </ph>
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é Google Cloud Armor pour un service de backend
- Utilisez les méthodes d'API suivantes:
<ph type="x-smartling-placeholder">
- </ph>
BackendServices setSecurityPolicy
BackendServices list
(gcloud
uniquement)
Utilisateurs disposant du rôle Administrateur de sécurité (roles/iam.securityAdmin
)
et le rôle Administrateur réseau Compute peuvent afficher les données de sécurité
à 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 répertorie 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 basée sur le taux ont le format suivant dans le 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 une clé unique
Par exemple, la commande gcloud CLI suivante crée un objet throttle
de priorité 105
avec une limite de débit de 100 requêtes toutes les 60 secondes pour
chaque adresse IP dans 1.2.3.0/24
. Requêtes qui dépassent la limite de limitation
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 un objet throttle
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
parmi toutes les requêtes provenant de l'adresse IP
adresses dans 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 émettre des exclusions basées sur le taux pour les utilisateurs disposant d'un reCAPTCHA valide.
d'exception. Par exemple, la commande gcloud CLI suivante
crée une règle throttle
de priorité 115
avec une limite de débit de 20 requêtes
par période de 5 minutes pour chaque cookie d'exception reCAPTCHA unique sur toutes les requêtes
qui disposent d'un cookie d'exception reCAPTCHA valide. Les requêtes qui dépassent la
de limitation sont redirigés pour l'évaluation reCAPTCHA. Pour
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 JA3
Vous pouvez utiliser les empreintes JA3 comme clé de limitation du débit. L'exemple suivant
crée une règle throttle
de priorité 1000
avec une limite de débit de 20
requêtes toutes les 5 minutes correspondant aux requêtes avec le chemin /login
, en fonction
sur l'empreinte JA3 du client. Les requêtes qui dépassent la limite de limitation
refusée.
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-ja3-fingerprint
Limitation du débit en fonction de l'adresse IP de l'utilisateur
Lorsque vous recevez des requêtes qui passent par un proxy en amont, vous pouvez appliquer
une limitation du débit en fonction
de l'adresse IP du client d'origine. Les éléments suivants :
L'exemple crée une règle throttle
de priorité 1000
avec une limite de débit de 20
requêtes toutes les 5 minutes correspondant aux requêtes avec le chemin /login
, en fonction
sur l'adresse IP du client d'origine. Requêtes qui dépassent la limitation
sont refusés.
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 les adresses IP prises en charge, consultez les documentation de référence sur les langages de règles.
Limitation du débit basée sur plusieurs clés
Vous pouvez également limiter le trafic en fonction de plusieurs clés de limitation du débit en utilisant la
enforce-on-key-configs
. Cet indicateur remplace à la fois l'indicateur enforce-on-key
et l'indicateur enforce-on-key-name
. L'option enforce-on-key-configs
nécessite
liste de paires KEY=NAME
séparées par une virgule. même si vous n'avez pas besoin de fournir
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 chacune
60 secondes pour chaque combinaison de HTTP-PATH
et site_id
dans toutes les requêtes
provenant d'adresses IP dans 1.2.3.0/24
. Requêtes qui dépassent la limitation
limit renvoie 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 pour les exclusions basées sur le taux
Les règles d'exclusion basées sur le taux ont le format suivant dans 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 interface
règle d'interdiction de priorité 100
pour chaque adresse IP dont les requêtes correspondent à un en-tête
fish
avec la valeur tuna
et l'interdire pendant 300 secondes lorsque sa fréquence dépasse une
de 50 requêtes par tranche de 120 secondes. Les requêtes exclues renvoient un code d'erreur
sur 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 interface
règle d'exclusion au niveau de priorité 101
afin de limiter toutes les requêtes dont le code de région correspond à US
à 10 requêtes toutes les 60 secondes. La règle interdit également les requêtes provenant de la région US
pendant 300 secondes, lorsque la fréquence dépasse la limite de 1 000 requêtes pour 600 secondes.
Les requêtes envoyées par des adresses bannies 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 interface
règle d'exclusion de priorité 102
pour limiter toutes les requêtes provenant de n'importe quelle adresse IP source
jusqu'à 20 requêtes pour 60 secondes. La règle interdit également les demandes provenant de toutes les sources
Plage d'adresses IP pendant 600 secondes lorsque le taux de requêtes dépasse une limite de
500 requêtes toutes les 400 secondes Les requêtes exclues renvoient le 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
Étape suivante
- Consultez la présentation de la limitation du débit.
- En savoir plus sur la gestion des bots