Configurer la gestion des bots

Cette page contient des informations sur la configuration des règles de stratégie de sécurité Google Cloud Armor pour la gestion des bots. Avant de configurer la gestion des bots, assurez-vous d'avoir pris connaissance des informations de la présentation de la gestion des bots.

Avant de commencer

Les sections suivantes décrivent tous les rôles et autorisations IAM (Identity and Access Management) requis pour configurer des stratégies de sécurité Google Cloud Armor. Pour les cas d'utilisation de ce document, vous n'avez besoin que des autorisations compute.securityPolicies.create et compute.securityPolicies.update.

Configurer les autorisations IAM pour les stratégies de sécurité Google Cloud Armor

Les opérations suivantes nécessitent le rôle d'administrateur de sécurité Compute (roles/compute.securityAdmin) Identity and Access Management (IAM) :

  • Configurer, modifier, mettre à jour et supprimer une stratégie de sécurité Google Cloud Armor
  • À l'aide des méthodes d'API suivantes :
    • SecurityPolicies insert
    • SecurityPolicies delete
    • SecurityPolicies patch
    • SecurityPolicies addRule
    • SecurityPolicies patchRule
    • SecurityPolicies removeRule

Un utilisateur doté du rôle d'administrateur réseau 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
  • À l'aide des méthodes d'API suivantes :
    • BackendServices setSecurityPolicy
    • BackendServices list (gcloud uniquement)

Les utilisateurs dotés des rôles Administrateur de sécurité (roles/iam.securityAdmin) et Administrateur de réseaux Compute peuvent afficher les stratégies de sécurité Google Cloud Armor à l'aide des méthodes 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

Utiliser une question d'authentification manuelle de reCAPTCHA Enterprise pour distinguer les clients humains des clients automatisés

Pour utiliser reCAPTCHA Enterprise avec Google Cloud Armor, vous devez associer votre clé de site reCAPTCHA WAF (clé reCAPTCHA) de type CHALLENGEPAGE à une stratégie de sécurité. Pour en savoir plus sur les clés reCAPTCHA, consultez la présentation des clés reCAPTCHA.

Pour associer votre propre clé reCAPTCHA à une stratégie de sécurité ou l'en dissocier, utilisez la commande suivante:

gcloud compute security-policies update SECURITY_POLICY \
    --recaptcha-redirect-site-key SITE_KEY

Remplacez les éléments suivants :

  • SECURITY_POLICY: nom de la stratégie de sécurité
  • SITE_KEY: votre clé reCAPTCHA CHALLENGEPAGE

Associer une clé reCAPTCHA

L'exemple suivant associe une clé reCAPTCHA à une stratégie de sécurité. La clé reCAPTCHA associée s'applique à toutes les règles qui utilisent la fonctionnalité d'authentification manuelle selon la stratégie de sécurité donnée.

gcloud compute security-policies update SECURITY_POLICY \
    --recaptcha-redirect-site-key "SITE_KEY"

Dissocier une clé reCAPTCHA

Pour dissocier une clé reCAPTCHA d'une stratégie de sécurité, exécutez la commande suivante:

gcloud compute security-policies update SECURITY_POLICY \
    --recaptcha-redirect-site-key ""

Rediriger le trafic pour l'évaluation reCAPTCHA Enterprise

Une fois que vous avez associé votre clé reCAPTCHA à votre stratégie de sécurité, vous pouvez créer une règle au sein de cette stratégie pour rediriger le trafic en interne pour l'évaluation reCAPTCHA Enterprise. Utilisez le format suivant dans la gcloud CLI pour rediriger le trafic:

gcloud compute security-policies rules create PRIORITY \
  --security-policy SECURITY_POLICY \
  {--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \
  --action redirect \
  --redirect-type google-recaptcha

Remplacez les éléments suivants :

  • PRIORITY: priorité à laquelle vous souhaitez créer la règle
  • SECURITY_POLICY: nom de la stratégie de sécurité
  • EXPRESSION: expression du langage des règles personnalisées qui correspond au trafic sur lequel vous souhaitez appliquer l'évaluation reCAPTCHA
  • SRC_IP_RANGE: plage d'adresses IP Utilisez-la pour appliquer l'évaluation reCAPTCHA à toutes les requêtes de cette plage.

L'exemple suivant crée une règle qui redirige le trafic qui tente d'atteindre /login.html pour un test manuel reCAPTCHA Enterprise:

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\")" \
    --action redirect \
    --redirect-type google-recaptcha

Appliquer l'évaluation fluide de reCAPTCHA Enterprise

Avant de continuer, consultez la présentation de la gestion des robots pour connaître les conditions préalables à l'utilisation des jetons d'action ou des jetons de session reCAPTCHA Enterprise.

Pour extraire les attributs d'un jeton d'action reCAPTCHA Enterprise, vous pouvez utiliser token.recaptcha_action.ATTRIBUTE. Remplacez ATTRIBUTE par un attribut de jeton valide dans le langage des règles de Google Cloud Armor. De même, utilisez token.recaptcha_session.ATTRIBUTE pour extraire les attributs d'un jeton de session reCAPTCHA Enterprise. Pour en savoir plus sur la syntaxe des attributs de jeton reCAPTCHA Enterprise disponibles, consultez la documentation de référence sur le langage de règles.

Un jeton d'action peut provenir d'une application Web, d'une application iOS ou d'une application Android, tandis qu'un jeton de session ne peut provenir qu'une application Web. Chaque plate-forme nécessite une clé reCAPTCHA distincte. Les expressions token.recaptcha_action.ATTRIBUTE et token.recaptcha_session.ATTRIBUTE s'appliquent aux jetons de n'importe laquelle de ces plates-formes. Pour distinguer les jetons de différentes plates-formes et éviter leur vol, nous vous recommandons d'associer des clés reCAPTCHA lorsque vous configurez les règles qui utilisent ces expressions.

Examples

Le premier exemple crée une règle qui autorise le trafic ciblant /login.html avec un jeton d'action reCAPTCHA Enterprise dont le score n'est pas inférieur à 0.8.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \
    --action allow

Le deuxième exemple est identique au premier, mais il nécessite également que le jeton d'action soit émis avec une clé reCAPTCHA example-site-key-1 ou example-site-key-2:

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \
    --recaptcha-action-site-keys "example-site-key-1,example-site-key-2" \
    --action allow

Le troisième exemple crée une règle qui autorise le trafic ciblant /login.html, avec un jeton de session reCAPTCHA Enterprise émis avec une clé reCAPTCHA de example-site-key-3, et avec un score au moins égal à 0.8.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\") && token.recaptcha_session.score >= 0.8" \
    --recaptcha-session-site-keys "example-site-key-3" \
    --action allow

Redirection (réponse 302)

Pour créer une règle de redirection du trafic vers une URL configurée par l'utilisateur, utilisez 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 redirect \
    --redirect-type external-302 \
    --redirect-target REDIRECT_URL

Remplacez les éléments suivants :

  • PRIORITY: priorité à laquelle vous souhaitez créer la règle
  • SECURITY_POLICY: nom de la stratégie de sécurité
  • EXPRESSION: expression du langage des règles personnalisées qui correspond au trafic pour lequel vous souhaitez appliquer l'évaluation reCAPTCHA
  • SRC_IP_RANGE: plage d'adresses IP Utilisez-la pour appliquer l'évaluation reCAPTCHA à toutes les requêtes de cette plage.
  • REDIRECT_URL: URL vers laquelle vous souhaitez rediriger le trafic

L'exemple suivant crée une règle qui redirige le trafic provenant de 10.10.10.0/24 vers https://www.example.com.

gcloud compute security-policies rules create 1000 \
   --security-policy SECURITY_POLICY \
   --src-ip-ranges "10.10.10.0/24" \
   --action redirect \
   --redirect-type external-302 \
   --redirect-target "https://www.example.com"

Décorer la requête

Pour créer une règle qui autorise le trafic, mais qui ajoute des en-têtes personnalisés et des valeurs statiques définies par l'utilisateur avant de les envoyer à des backends protégés, utilisez le 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 allow \
    --request-headers-to-add HEADER_1=VALUE_1,HEADER_2=VALUE_2,...

Remplacez les éléments suivants :

  • PRIORITY: priorité à laquelle vous souhaitez créer la règle
  • SECURITY_POLICY: nom de la stratégie de sécurité
  • EXPRESSION: expression du langage des règles personnalisées qui correspond au trafic sur lequel vous souhaitez appliquer l'évaluation reCAPTCHA
  • SRC_IP_RANGE: plage d'adresses IP Utilisez-la pour appliquer l'évaluation reCAPTCHA à toutes les requêtes de cette plage.
  • HEADER_#: nom de l'en-tête de requête avec lequel vous souhaitez décorer la requête.
  • VALUE_#: valeur de l'en-tête de requête avec lequel vous souhaitez décorer la requête.

L'exemple suivant crée une règle qui autorise le trafic ciblant /login.html, à condition que la requête présente également un score de jeton d'action reCAPTCHA Enterprise inférieur à 0.2.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches("/login.html") && token.recaptcha_action.score < 0.2" \
    --action allow \
    --request-headers-to-add "reCAPTCHA-Warning=high"

Étapes suivantes