Intégrer reCAPTCHA Enterprise pour WAF à Fastly

Ce document explique comment intégrer reCAPTCHA Enterprise pour WAF à Fastly.

Pour terminer l'intégration, vous devez implémenter une ou plusieurs fonctionnalités de reCAPTCHA Enterprise pour WAF, créer des stratégies de pare-feu reCAPTCHA et intégrer le service Fastly Compute.

Avant de commencer

  1. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

    Enregistrez l'ID de votre projet Google Cloud pour une utilisation ultérieure.

  2. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  3. Activez l'API reCAPTCHA Enterprise

    Activer l'API

  4. Créez une clé API pour l'authentification:

    1. Dans la console Google Cloud, accédez à la page Identifiants.

      Accéder à "Identifiants"

    2. Cliquez sur  Créer des identifiants, puis sélectionnez Clé API.

    3. Enregistrez la clé API pour une utilisation ultérieure.

  5. Planifiez la manière dont vous souhaitez implémenter les fonctionnalités de reCAPTCHA Enterprise pour WAF afin de protéger votre site Web.

    1. Choisissez une ou plusieurs fonctionnalités WAF qui correspondent le mieux à votre cas d'utilisation.
    2. Identifiez les pages que vous souhaitez protéger et le type de fonctionnalité WAF que vous souhaitez implémenter sur ces pages.
    3. Identifiez les conditions d'autorisation ou de blocage de l'accès.
    4. Familiarisez-vous avec les composants des stratégies de pare-feu reCAPTCHA et leurs attributs qui vous aideront à créer des stratégies de pare-feu reCAPTCHA. Pour obtenir des exemples, consultez la section Exemples de stratégies de pare-feu reCAPTCHA.
  6. Téléchargez le package reCAPTCHA pour Fastly recaptcha_fastly_client_0.1.0.tar.gz.

  7. Créez un compte Fastly avec les fonctionnalités de Compute@Edge.

Implémenter les fonctionnalités de reCAPTCHA Enterprise pour WAF

En fonction de vos besoins, vous pouvez utiliser une ou plusieurs fonctionnalités de reCAPTCHA Enterprise pour WAF dans une seule application.

Si vous souhaitez utiliser plusieurs fonctionnalités, vous devez créer une clé reCAPTCHA pour chacune d'elles et les utiliser dans votre application. Par exemple, si vous souhaitez utiliser des jetons d'action reCAPTCHA et une page de test reCAPTCHA, vous devez créer une clé de jeton d'action et une clé de page de défi, puis les utiliser dans votre application.

jeton d'action

reCAPTCHA Enterprise doit être exécuté sur vos pages Web pour générer des jetons d'action. Une fois que reCAPTCHA Enterprise a généré un jeton d'action, vous l'associez à un en-tête de requête prédéfini partout où vous devez protéger une action utilisateur, telle que checkout. Par défaut, les jetons d'action sont valides pendant 30 minutes, mais cela peut varier en fonction du trafic. Vous devez associer le jeton d'action à un en-tête de requête prédéfini avant l'expiration du jeton, afin que Fastly puisse évaluer les attributs du jeton.

Pour implémenter un jeton d'action reCAPTCHA, procédez comme suit :

  1. Créez une clé de jeton d'action pour votre site Web.

    gcloud

    Pour créer des clés reCAPTCHA, utilisez la commande gcloud recaptcha keys create.

    Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

    • DISPLAY_NAME: nom de la clé. Généralement un nom de site.
    • INTEGRATION_TYPE: type d'intégration. Spécifiez score ou checkbox.
    • DOMAIN_NAME: domaines ou sous-domaines de sites Web autorisés à utiliser la clé.

      Spécifiez plusieurs domaines sous la forme d'une liste d'éléments séparés par une virgule. Facultatif: spécifiez --allow-all-domains pour désactiver la validation du domaine.

      Désactiver la validation du domaine présente un risque de sécurité, car le site ne fait l'objet d'aucune restriction. Par conséquent, n'importe qui peut accéder à votre clé reCAPTCHA et l'utiliser.

    • WAF_FEATURE: nom de la fonctionnalité WAF. Spécifiez action-token.
    • WAF_SERVICE: nom du fournisseur de services WAF. Spécifiez fastly pour Fastly.

    Exécutez la commande gcloud recaptcha keys create:

    Linux, macOS ou Cloud Shell

    
    gcloud recaptcha keys create \
    --web \
    --display-name=DISPLAY_NAME  \
    --integration-type=INTEGRATION_TYPE \
    --domains=DOMAIN_NAME \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE
    
    

    Windows (PowerShell)

    
    gcloud recaptcha keys create `
    --web `
    --display-name=DISPLAY_NAME  `
    --integration-type=INTEGRATION_TYPE `
    --domains=DOMAIN_NAME `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE
    
    

    Windows (cmd.exe)

    
    gcloud recaptcha keys create ^
    --web ^
    --display-name=DISPLAY_NAME  ^
    --integration-type=INTEGRATION_TYPE ^
    --domains=DOMAIN_NAME ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE
    
    

    La réponse contient la clé reCAPTCHA que vous venez de créer.

    REST

    Pour obtenir des informations de référence sur les types de clés et les types d'intégration, consultez les sections Clé et Type d'intégration.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • DISPLAY_NAME: nom de la clé. Généralement un nom de site.
    • INTEGRATION_TYPE: type d'intégration. Spécifiez score ou checkbox.
    • DOMAIN_NAME: domaines ou sous-domaines de sites Web autorisés à utiliser la clé.

      Spécifiez plusieurs domaines sous la forme d'une liste d'éléments séparés par une virgule. Facultatif: spécifiez --allow-all-domains pour désactiver la validation du domaine.

      Désactiver la validation du domaine présente un risque de sécurité, car le site ne fait l'objet d'aucune restriction. Par conséquent, n'importe qui peut accéder à votre clé reCAPTCHA et l'utiliser.

    • WAF_FEATURE: nom de la fonctionnalité WAF. Spécifiez action-token.
    • WAF_SERVICE: nom du fournisseur de services WAF. Spécifiez fastly pour Fastly.

    Méthode HTTP et URL :

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Corps JSON de la requête :

    
    {
      "displayName": "DISPLAY_NAME",
       'wafSettings': "  {
           "wafService": "WAF_SERVICE",
    "wafFeature": "WAF_FEATURE"
      }
      "webSettings": {
        "allowedDomains": "DOMAINS",
        "integrationType": "TYPE_OF_INTEGRATION"
       }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    "webSettings": {
      "allowAllDomains": true,
      "allowedDomains": [
        "localhost"
      ],
    
     "integrationType": "SCORE",
    
    },
    "wafSettings": {
      "wafService": "fastly",
      "wafFeature": "ACTION_TOKEN"
      
    }
    }
    
    

    Enregistrez votre clé de jeton d'action pour une utilisation ultérieure.

  2. Intégrez le code JavaScript reCAPTCHA sur vos pages Web avec la clé de jeton d'action que vous avez créée. Pour obtenir des instructions, reportez-vous au document correspondant au type d'intégration de votre clé de jeton d'action.
  3. Une fois que vous avez reçu le jeton de reCAPTCHA Enterprise, associez-le à un en-tête de requête prédéfini au format suivant :
     X-Recaptcha-Token: value-of-your-action-token
    

    Vous pouvez utiliser des langages tels que XHR, Ajax ou l'API Fetch pour associer le jeton à un en-tête de requête prédéfini.

    L'exemple de script suivant montre comment protéger l'action execute et associer le jeton à un en-tête de requête prédéfini à l'aide de JavaScript et XHR:

      
      <script>
        src="https://www.google.com/recaptcha/enterprise.js?render=ACTION_TOKEN_KEY"></script>
    
        <script>
        function onSuccess(action_token) {
             const xhr = new XMLHttpRequest();
             xhr.open('GET','YOUR_URL', false);
             // Attach the action-token to the predefined request header
             xhr.setRequestHeader("X-Recaptcha-Token", action_token);
             xhr.send(null);
           }
           function onError(reason) {
             alert('Response promise rejected: ' + reason);
           grecaptcha.enterprise.ready(function () {
             document.getElementById("execute-button").onclick = () => {
               grecaptcha.enterprise.execute('ACTION_TOKEN_KEY', {
               }).then(onSuccess, onError);
             };
           });
          }
        </script>
      
      

jeton de session

Le code JavaScript reCAPTCHA définit un jeton de session reCAPTCHA en tant que cookie sur le navigateur de l'utilisateur final après l'évaluation. Le navigateur de l'utilisateur final associe le cookie et l'actualise tant que le code JavaScript reCAPTCHA reste actif.

Pour fournir un jeton de session en tant que cookie, installez une clé de jeton de session sur au moins l'une des pages Web que l'utilisateur final consulte avant la page à protéger. Par exemple, si vous souhaitez protéger la page de paiement, installez une clé de jeton de session sur la page d'accueil ou la page du produit.

Pour savoir comment installer des clés de jeton de session sur vos pages Web, consultez Intégrer des clés basées sur des scores à l'interface.

Vous pouvez utiliser ce cookie pour protéger les requêtes ultérieures de l'utilisateur final et les chargements de pages sur un domaine spécifique. Par défaut, les jetons de session sont valides pendant 30 minutes. Toutefois, si l'utilisateur final reste sur la page où vous avez implémenté le jeton de session, reCAPTCHA Enterprise actualise régulièrement le jeton de session pour éviter qu'il n'expire.

Installez des jetons de session sur chaque page qui doit être protégée par reCAPTCHA Enterprise. Nous vous recommandons de protéger chaque page avec reCAPTCHA Enterprise et d'utiliser des règles Google Cloud Armor pour appliquer l'accès à toutes les pages, à l'exception de la première page parcourue par les utilisateurs finaux.

Voici un exemple de jeton de session reCAPTCHA :
   recaptcha-ca-t=value-of-your-session-token;domain=domain;expires=expiration_time

Pour implémenter un jeton de session reCAPTCHA, procédez comme suit :

  1. Créez une clé de jeton de session pour votre site Web.

    gcloud

    Pour créer des clés reCAPTCHA, utilisez la commande gcloud recaptcha keys create.

    Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

    • DISPLAY_NAME: nom de la clé. Généralement un nom de site.
    • INTEGRATION_TYPE: type d'intégration. Spécifiez score.
    • DOMAIN_NAME: domaines ou sous-domaines de sites Web autorisés à utiliser la clé.

      Spécifiez plusieurs domaines sous la forme d'une liste d'éléments séparés par une virgule. Facultatif: spécifiez --allow-all-domains pour désactiver la validation du domaine.

      Désactiver la validation du domaine présente un risque de sécurité, car le site ne fait l'objet d'aucune restriction. Par conséquent, n'importe qui peut accéder à votre clé reCAPTCHA et l'utiliser.

    • WAF_FEATURE: nom de la fonctionnalité WAF. Spécifiez session-token.
    • WAF_SERVICE: nom du fournisseur de services WAF. Spécifiez fastly pour Fastly.

    Exécutez la commande gcloud recaptcha keys create:

    Linux, macOS ou Cloud Shell

    
    gcloud recaptcha keys create \
    --web \
    --display-name=DISPLAY_NAME  \
    --integration-type=INTEGRATION_TYPE \
    --domains=DOMAIN_NAME \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE
    
    

    Windows (PowerShell)

    
    gcloud recaptcha keys create `
    --web `
    --display-name=DISPLAY_NAME  `
    --integration-type=INTEGRATION_TYPE `
    --domains=DOMAIN_NAME `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE
    
    

    Windows (cmd.exe)

    
    gcloud recaptcha keys create ^
    --web ^
    --display-name=DISPLAY_NAME  ^
    --integration-type=INTEGRATION_TYPE ^
    --domains=DOMAIN_NAME ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE
    
    

    La réponse contient la clé reCAPTCHA que vous venez de créer.

    REST

    Pour obtenir des informations de référence sur les types de clés et les types d'intégration, consultez les sections Clé et Type d'intégration.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • DISPLAY_NAME: nom de la clé. Généralement un nom de site.
    • INTEGRATION_TYPE: type d'intégration. Spécifiez score.
    • DOMAIN_NAME: domaines ou sous-domaines de sites Web autorisés à utiliser la clé.

      Spécifiez plusieurs domaines sous la forme d'une liste d'éléments séparés par une virgule. Facultatif: spécifiez --allow-all-domains pour désactiver la validation du domaine.

      Désactiver la validation du domaine présente un risque de sécurité, car le site ne fait l'objet d'aucune restriction. Par conséquent, n'importe qui peut accéder à votre clé reCAPTCHA et l'utiliser.

    • WAF_FEATURE: nom de la fonctionnalité WAF. Spécifiez session-token.
    • WAF_SERVICE: nom du fournisseur de services WAF. Spécifiez fastly pour Fastly.

    Méthode HTTP et URL :

    POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

    Corps JSON de la requête :

    
    {
      "displayName": "DISPLAY_NAME",
       'wafSettings': "  {
           "wafService": "WAF_SERVICE",
    "wafFeature": "WAF_FEATURE"
      }
      "webSettings": {
        "allowedDomains": "DOMAINS",
        "integrationType": "TYPE_OF_INTEGRATION"
       }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    "webSettings": {
      "allowAllDomains": true,
      "allowedDomains": [
        "localhost"
      ],
    
     "integrationType": "SCORE",
    
    },
    "wafSettings": {
      "wafService": "fastly",
      "wafFeature": "SESSION_TOKEN"
      
    }
    }
    
    

    Enregistrez votre clé de jeton de session pour une utilisation ultérieure.

  2. Ajoutez la clé de jeton de session et waf=session au code JavaScript reCAPTCHA.

    L'exemple de script suivant montre comment implémenter un jeton de session sur une page Web :

    
    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>reCAPTCHA WAF Session Token</title>
     <script src="https://www.google.com/recaptcha/enterprise.js?render=SESSION_TOKEN_KEY&waf=session" async defer></script>
     <body></body>
    </head>
    </html>
    
    
    

challenge-page

When you implement a reCAPTCHA challenge page, reCAPTCHA Enterprise redirects to an interstitial page where it determines if it's necessary to show a CAPTCHA challenge to a user. Therefore, CAPTCHA challenges might not be visible to all users.

To implement a reCAPTCHA challenge page, do the following:

  1. Create a challenge-page key for your website.

    gcloud

    To create reCAPTCHA keys, use the gcloud recaptcha keys create command.

    Before using any of the command data below, make the following replacements:

    • DISPLAY_NAME: Name for the key. Typically a site name.
    • INTEGRATION_TYPE: Type of integration. Specify invisible.
    • DOMAIN_NAME: Domains or subdomains of websites allowed to use the key. Specify --allow-all-domains.
    • WAF_FEATURE: Name of the WAF feature. Specify challenge-page.
    • WAF_SERVICE: Name of the WAF service provider. Specify fastly for Fastly.

    Execute the gcloud recaptcha keys create command:

    Linux, macOS, or Cloud Shell

    
    gcloud recaptcha keys create \
    --web \
    --display-name=DISPLAY_NAME  \
    --integration-type=INTEGRATION_TYPE \
    --domains=DOMAIN_NAME \
    --waf-feature=WAF_FEATURE \
    --waf-service=WAF_SERVICE
    
    

    Windows (PowerShell)

    
    gcloud recaptcha keys create `
    --web `
    --display-name=DISPLAY_NAME  `
    --integration-type=INTEGRATION_TYPE `
    --domains=DOMAIN_NAME `
    --waf-feature=WAF_FEATURE `
    --waf-service=WAF_SERVICE
    
    

    Windows (cmd.exe)

    
    gcloud recaptcha keys create ^
    --web ^
    --display-name=DISPLAY_NAME  ^
    --integration-type=INTEGRATION_TYPE ^
    --domains=DOMAIN_NAME ^
    --waf-feature=WAF_FEATURE ^
    --waf-service=WAF_SERVICE
    
    

    La réponse contient la clé reCAPTCHA que vous venez de créer.

REST

Pour obtenir des informations de référence sur les types de clés et les types d'intégration, consultez les sections Clé et Type d'intégration.

Avant d'utiliser les données de requête, effectuez les remplacements suivants:

  • DISPLAY_NAME: nom de la clé. Généralement un nom de site.
  • INTEGRATION_TYPE: type d'intégration. Spécifiez invisible.
  • DOMAIN_NAME: domaines ou sous-domaines de sites Web autorisés à utiliser la clé. Spécifiez --allow-all-domains.
  • WAF_FEATURE: nom de la fonctionnalité WAF. Spécifiez challenge-page.
  • WAF_SERVICE: nom du fournisseur de services WAF. Spécifiez fastly pour Fastly.

Méthode HTTP et URL :

POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

Corps JSON de la requête :


{
  "displayName": "DISPLAY_NAME",
   'wafSettings': "  {
       "wafService": "WAF_SERVICE",
"wafFeature": "WAF_FEATURE"
  }
  "webSettings": {
    "allowedDomains": "DOMAINS",
    "integrationType": "TYPE_OF_INTEGRATION"
   }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :


{
  "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
"displayName": "DISPLAY_NAME,
"webSettings": {
  "allowAllDomains": true,
  "allowedDomains": [
    "localhost"
  ],

  "integrationType": "INVISIBLE",
 
},
"wafSettings": {
  "wafService": "fastly",
  "wafFeature": "CHALLENGE_PAGE"
  
}
}

Enregistrez la clé de la page de défi pour une utilisation ultérieure.

  • Pour rediriger les utilisateurs vers la page de test reCAPTCHA et recevoir un jeton reCAPTCHA, créez une règle de pare-feu avec l'action redirect sur les pages protégées.
  • express

    Pour implémenter la protection express reCAPTCHA Enterprise WAF, créez une clé Express.

    1. Dans la console Google Cloud, activez Cloud Shell.

      Activer Cloud Shell

      En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

    2. gcloud

      Pour créer des clés reCAPTCHA, utilisez la commande gcloud recaptcha keys create.

      Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

      • DISPLAY_NAME: nom de la clé. Généralement un nom de site.
      • INTEGRATION_TYPE: type d'intégration. Spécifiez score.
      • DOMAIN_NAME: domaines ou sous-domaines de sites Web autorisés à utiliser la clé. Spécifiez --allow-all-domains.
      • WAF_FEATURE: nom de la fonctionnalité WAF. Spécifiez express.
      • WAF_SERVICE: nom du fournisseur de services WAF.

      Exécutez la commande gcloud recaptcha keys create:

      Linux, macOS ou Cloud Shell

      
      gcloud recaptcha keys create \
      --web \
      --display-name=DISPLAY_NAME  \
      --integration-type=INTEGRATION_TYPE \
      --domains=DOMAIN_NAME \
      --waf-feature=WAF_FEATURE \
      --waf-service=WAF_SERVICE
      
      

      Windows (PowerShell)

      
      gcloud recaptcha keys create `
      --web `
      --display-name=DISPLAY_NAME  `
      --integration-type=INTEGRATION_TYPE `
      --domains=DOMAIN_NAME `
      --waf-feature=WAF_FEATURE `
      --waf-service=WAF_SERVICE
      
      

      Windows (cmd.exe)

      
      gcloud recaptcha keys create ^
      --web ^
      --display-name=DISPLAY_NAME  ^
      --integration-type=INTEGRATION_TYPE ^
      --domains=DOMAIN_NAME ^
      --waf-feature=WAF_FEATURE ^
      --waf-service=WAF_SERVICE
      
      

      La réponse contient la clé reCAPTCHA que vous venez de créer.

      REST

      Pour obtenir des informations de référence sur les types de clés et les types d'intégration, consultez les sections Clé et Type d'intégration.

      Avant d'utiliser les données de requête, effectuez les remplacements suivants:

      • DISPLAY_NAME: nom de la clé. Généralement un nom de site.
      • INTEGRATION_TYPE: type d'intégration. Spécifiez score.
      • DOMAIN_NAME: domaines ou sous-domaines de sites Web autorisés à utiliser la clé. Spécifiez --allow-all-domains.
      • WAF_FEATURE: nom de la fonctionnalité WAF. Spécifiez express.
      • WAF_SERVICE: nom du fournisseur de services WAF.

      Méthode HTTP et URL :

      POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys

      Corps JSON de la requête :

      
      {
        "displayName": "DISPLAY_NAME",
         'wafSettings': "  {
             "wafService": "WAF_SERVICE",
      "wafFeature": "WAF_FEATURE"
        }
        "webSettings": {
          "allowedDomains": "DOMAINS",
          "integrationType": "TYPE_OF_INTEGRATION"
         }
      }
      

      Pour envoyer votre requête, choisissez l'une des options suivantes :

      curl

      Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys"

      PowerShell

      Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

      $cred = gcloud auth print-access-token
      $headers = @{ "Authorization" = "Bearer $cred" }

      Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys" | Select-Object -Expand Content

      Vous devriez recevoir une réponse JSON de ce type :

      
      {
        "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
      "displayName": "DISPLAY_NAME,
      "webSettings": {
        "allowAllDomains": true,
        "allowedDomains": [
          "localhost"
        ],
      
       "integrationType": "SCORE",
      
      },
      "wafSettings": {
        "wafService": "fastly",
        "wafFeature": "EXPRESS"
      
      }
      }
      
      

      Enregistrez votre clé express pour une utilisation ultérieure.

    Créer des stratégies de pare-feu reCAPTCHA

    Vous devez créer une stratégie de pare-feu qui spécifie les règles pour chaque page que vous souhaitez protéger sur votre site Web. Vous pouvez créer des stratégies de pare-feu avec une ou plusieurs fonctionnalités de reCAPTCHA Enterprise pour WAF.

    Dans votre stratégie de pare-feu reCAPTCHA, ajoutez des règles par ordre de priorité. La première règle a l'ordre le plus élevé. Vous pouvez également réorganiser la priorité à l'aide de ReorderFirewallPoliciesRequest. Pour une requête entrante, lorsqu'une condition de stratégie correspond au chemin spécifié, votre fournisseur de services WAF met en œuvre l'action définie et les règles suivantes ne sont pas évaluées.

    1. En fonction des fonctionnalités que vous avez choisies, procédez comme suit :
      • Identifiez le chemin d'accès que vous souhaitez protéger.
      • Identifiez les conditions pour autoriser, rediriger ou bloquer l'accès.
      • Priorisez les règles.
    2. Familiarisez-vous avec les composants des stratégies de pare-feu et leurs attributs.
    3. Dans la console Google Cloud, activez Cloud Shell.

      Activer Cloud Shell

      En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

    4. Pour ignorer la gcloud CLI afin d'accéder à la version Preview publique de l'API reCAPTCHA Enterprise, exécutez la commande suivante :
          gcloud config set api_endpoint_overrides/recaptchaenterprise https://public-preview-recaptchaenterprise.googleapis.com/
          
    5. Pour créer des stratégies de pare-feu reCAPTCHA, utilisez la commande gcloud recaptcha firewall-policies create:

      Dans votre stratégie de pare-feu reCAPTCHA, ajoutez des règles par ordre de priorité prévue. Vous devez d'abord ajouter une règle avec la priorité la plus élevée. Pour une requête entrante, lorsqu'une condition de stratégie correspond au chemin spécifié, votre fournisseur de services WAF met en œuvre l'action définie et les règles suivantes ne sont pas évaluées. La règle par défaut consiste à autoriser l'accès.

         gcloud recaptcha firewall-policies create \
            --actions=ACTION \
            --condition=CONDITION \
            --description=DESCRIPTION \
            --path=PATH
      
        

      Indiquez les valeurs suivantes :

      • ACTION: actions que votre fournisseur de services WAF doit effectuer pour la requête entrante Il peut contenir au maximum une action de terminal, qui est une action qui force une réponse. Spécifiez l'une des actions suivantes :
        • allow: autorise l'accès à la page demandée. Il s'agit d'une action finale.
        • block: refuse l'accès à la page demandée. Il s'agit d'une action finale.
        • redirect: redirige la requête entrante de l'utilisateur vers la page de test reCAPTCHA. Il s'agit d'une action finale.
        • substitute: affiche une page différente de la page demandée en réponse à une requête utilisateur frauduleuse. Il s'agit d'une action finale.
        • set_header: définit un en-tête personnalisé et permet à la requête entrante de l'utilisateur de se poursuivre vers le backend. Le backend peut ensuite déclencher une protection personnalisée. Cette action n'est pas définitive.
      • CONDITION: expression conditionnelle CEL (Common Expression Language) qui spécifie si la stratégie de pare-feu reCAPTCHA s'applique à une requête utilisateur entrante. Si cette condition renvoie la valeur "true" et que le chemin d'accès demandé correspond au modèle de chemin d'accès, le fournisseur de services WAF exécute les actions associées. Une vérification de l'exactitude de la syntaxe CEL de la chaîne de condition est effectuée lors de la création. Pour en savoir plus sur la définition du langage, consultez la définition du langage CEL.
      • DESCRIPTION: description de l'objectif de la stratégie de pare-feu reCAPTCHA. La description ne doit pas comporter plus de 256 caractères UTF-8.
      • PATH: chemin d'accès pour lequel la stratégie de pare-feu reCAPTCHA s'applique. Il doit être spécifié sous la forme d'un modèle glob. Pour en savoir plus sur glob, consultez la page du manuel.

      Une fois la commande exécutée, un résultat semblable au suivant s'affiche:

           Created [100].
         

      L'exemple suivant crée une règle de pare-feu reCAPTCHA pour bloquer le ciblage du trafic pour "/example/page.html" lorsque le score est inférieur à 0,1.

         gcloud recaptcha firewall-policies create \
           --description="example policy" \
           --path="/example/page.html" \
           --condition="recaptcha.score < 0.1" \
           --actions="block"
         

    Intégration au service Fastly Compute

    Pour utiliser les stratégies de pare-feu reCAPTCHA, vous devez configurer un service Fastly Compute afin d'intercepter et de traiter les requêtes.

    Vous pouvez créer et configurer un nouveau service de calcul ou intégrer des stratégies de pare-feu reCAPTCHA à un service Fastly existant, en enchaînant les utilisateurs. Si vous souhaitez utiliser un chaînage, le service reCAPTCHA doit être le service Fastly le plus situé en amont ou un autre proxy pour une détection IP correcte.

    Pour créer un service de calcul, vous devez disposer des informations suivantes:

    • Nom de votre domaine
    • Package reCAPTCHA pour FASTLY au format ZIP
    • Nom d'origine de votre serveur backend
    • Nom d'origine du serveur backend reCAPTCHA Enterprise: Recaptcha Enterprise
    • Nom d'origine du serveur backend Google: Google
    • La clé API que vous avez créée pour l'authentification
    • L'ID de votre projet Google Cloud
    • Vos clés reCAPTCHA que vous avez créées pour vos fonctionnalités WAF

    Pour configurer un service Fastly avec des stratégies de pare-feu reCAPTCHA, procédez comme suit:

    1. Connectez-vous à Fastly.
    2. Pour créer un service de calcul, suivez les instructions de la section Créer un service de calcul.

      Lorsque vous créez un service de calcul, procédez comme suit:

      • Pour créer une origine pour le serveur backend de reCAPTCHA Enterprise, spécifiez les valeurs suivantes:

        • Nom de votre origine = Recaptcha Enterprise
        • Adresse IP (ou nom d'hôte) de votre serveur d'origine = public-preview-recaptchaenterprise.googleapis.com
      • Pour créer une origine pour le serveur backend de Google, spécifiez les valeurs suivantes:

        • Name of your origin = Google (Nom de votre origine = Google)
        • Adresse IP (ou nom d'hôte) de votre serveur d'origine = www.google.com:443
      • Pour créer une origine pour votre serveur backend, spécifiez les valeurs suivantes:

        • Name of your origin = N'importe quel nom explicite pour votre serveur backend.
        • Adresse IP (ou nom d'hôte) de votre serveur d'origine = nom d'hôte de votre serveur backend.
      • Importez le package reCAPTCHA pour Fastly recaptcha_fastly_client_0.1.0.tar.gz.

      • Nommez votre dictionnaire recaptcha et ajoutez-y les informations suivantes sous forme de paires clé/valeur:

        Clé Valeur
        customer_backend_name Nom que vous avez donné lors de la création d'une origine pour votre serveur backend.
        recaptcha_backend_name reCAPTCHA Enterprise
        google_backend_name Google
        cloud_api_key La clé API que vous avez créée pour l'authentification.
        cloud_project_number L'ID de votre projet Google Cloud.
        action_site_key Clé de jeton d'action reCAPTCHA WAF. Cette clé est obligatoire si vous utilisez des jetons d'action pour protéger vos pages.
        session_site_key Clé de jeton de session reCAPTCHA WAF. Cette clé est obligatoire si vous utilisez des jetons de session pour protéger vos pages.
        challengepage_site_key Clé de page de défi reCAPTCHA WAF. Cette clé est obligatoire si vous utilisez la page reCAPTCHA pour protéger vos pages.
        express_site_key Clé express reCAPTCHA WAF. Cette clé est requise si vous utilisez reCAPTCHA WAF Express pour protéger vos pages.

    Étapes suivantes