reCAPTCHA for WAF in Fastly einbinden

In diesem Dokument erfahren Sie, wie Sie reCAPTCHA in WAF einbinden mit Fastly.

Um die Integration abzuschließen, müssen Sie mindestens eine Funktion von reCAPTCHA for WAF implementieren, reCAPTCHA-Firewallrichtlinien erstellen und die Integration mit dem Fastly-Rechendienst vornehmen.

Hinweise

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

    Notieren Sie sich Ihre Google Cloud-Projekt-ID zur späteren Verwendung.

  2. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  3. Enable the reCAPTCHA Enterprise API.

    Enable the API

  4. Erstellen Sie einen API-Schlüssel für die Authentifizierung:

    1. Wechseln Sie in der Google Cloud Console zur Seite Anmeldedaten.

      Zu den Anmeldedaten

    2. Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.

    3. Notieren Sie sich den API-Schlüssel für später.

  5. Planen Sie, wie Sie die reCAPTCHA-Funktionen für WAF zum Schutz Ihrer Website.

    1. Wählen Sie ein oder mehrere WAF-Features aus die am besten zu Ihrem Anwendungsfall passen.
    2. Identifizieren Sie die Seiten, die Sie schützen möchten, und den Typ der WAF-Funktion die Sie auf diesen Seiten implementieren möchten.
    3. Geben Sie die Bedingungen an, unter denen der Zugriff zugelassen oder blockiert werden soll.
    4. Informationen zu den Komponenten und Attributen von reCAPTCHA-Firewallrichtlinien, die Ihnen beim Erstellen von reCAPTCHA-Firewallrichtlinien helfen Beispiele finden Sie unter Beispiele für reCAPTCHA-Firewallrichtlinien.
  6. Laden Sie das reCAPTCHA-Paket für Fastly recaptcha_fastly_client_0.1.0.tar.gz herunter.

  7. Fastly-Konto erstellen mit Compute@Edge-Funktionen.

Funktionen von reCAPTCHA for WAF implementieren

Je nach Ihren Anforderungen können Sie eine oder mehrere Funktionen von reCAPTCHA for WAF in einer einzelnen Anwendung verwenden.

Wenn Sie mehr als eine Funktion verwenden möchten, müssen Sie für jede dieser Funktionen einen reCAPTCHA-Schlüssel erstellen und in Ihrer Anwendung verwenden. Wenn Sie beispielsweise reCAPTCHA-Aktionstokens und die reCAPTCHA-Abfrageseite verwenden möchten, müssen Sie einen Aktionstokenschlüssel und einen Schlüssel für die Abfrageseite erstellen und in Ihrer Anwendung verwenden.

action-token

reCAPTCHA muss auf Ihren Webseiten ausgeführt werden, um Aktionstokens zu generieren. Nachdem reCAPTCHA ein Aktionstoken generiert hat, hängen Sie das Token an einen vordefinierten Anfrageheader an, wo Sie Nutzeraktionen wie checkout schützen müssen. Aktionstokens sind standardmäßig 30 Minuten lang gültig, können aber je nach Traffic variieren. Sie müssen das Aktionstoken vor dem Ablauf des Tokens an einen vordefinierten Anfrageheader anhängen, damit Fastly die Tokenattribute auswerten kann.

So implementieren Sie ein reCAPTCHA-Aktionstoken:

  1. Erstellen Sie einen Aktionstokenschlüssel für Ihre Website.

    gcloud

    Verwenden Sie zum Erstellen von reCAPTCHA-Schlüsseln den Befehl gcloud remarketingtcha keys create.

    Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

    • DISPLAY_NAME: Name für den Schlüssel. In der Regel ein Websitename.
    • INTEGRATION_TYPE: Art der Integration. Geben Sie score oder checkbox an.
    • DOMAIN_NAME: Domains oder Subdomains von Websites, die den Schlüssel verwenden dürfen.

      Geben Sie mehrere Domains als durch Kommas getrennte Liste an. Optional: Geben Sie --allow-all-domains an, um die Domainbestätigung zu deaktivieren.

      Die Deaktivierung der Domainbestätigung stellt ein Sicherheitsrisiko dar, da Einschränkungen auf der Website, damit dein reCAPTCHA-Schlüssel aufgerufen und verwendet werden kann von irgendjemandem.

    • WAF_FEATURE: Name der WAF-Funktion. Geben Sie action-token an.
    • WAF_SERVICE: Name des WAF-Dienstanbieters. Geben Sie fastly für Fastly an.

    Führen Sie den Befehl gcloud recaptcha keys create aus:

    Linux, macOS oder 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

    Die Antwort enthält den neu erstellten reCAPTCHA-Schlüssel.

    REST

    API-Referenzinformationen zu Schlüsseltypen und Integrationstypen finden Sie unter Schlüssel und Integrationstyp.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • DISPLAY_NAME: Name für den Schlüssel. In der Regel ein Websitename.
    • INTEGRATION_TYPE: Art der Integration. Geben Sie score oder checkbox an.
    • DOMAIN_NAME: Domains oder Subdomains von Websites, die den Schlüssel verwenden dürfen.

      Geben Sie mehrere Domains als durch Kommas getrennte Liste an. Optional: Geben Sie --allow-all-domains an, um die Domainbestätigung zu deaktivieren.

      Die Deaktivierung der Domainbestätigung stellt ein Sicherheitsrisiko dar, da Einschränkungen auf der Website, damit dein reCAPTCHA-Schlüssel aufgerufen und verwendet werden kann von irgendjemandem.

    • WAF_FEATURE: Name der WAF-Funktion. Geben Sie action-token an.
    • WAF_SERVICE: Name des WAF-Dienstanbieters. Geben Sie für Fastly fastly an.

    HTTP-Methode und URL:

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

    JSON-Text der Anfrage:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $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

    Sie sollten in etwa folgende JSON-Antwort erhalten:

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

    Notieren Sie sich den Schlüssel für das Aktionstoken für später.

  2. Integrieren Sie reCAPTCHA-JavaScript in Ihre Webseiten mit dem Aktionstoken-Schlüssel, der die Sie erstellt haben. Eine Anleitung finden Sie in dem Dokument zur Integrationstyp des Aktionstokenschlüssels.
  3. Nachdem Sie das Token von reCAPTCHA erhalten haben, hängen Sie es an Einen vordefinierten Anfrageheader im folgenden Format:
     X-Recaptcha-Token: value-of-your-action-token
    

    Sie können Sprachen wie XHR, Ajax oder Fetch API verwenden, um das Token an einen vordefinierten Anfrage-Header anzuhängen.

    Das folgende Beispielskript zeigt, wie die execute-Aktion geschützt und das Token mithilfe von JavaScript + XHR an einen vordefinierten Anfrage-Header angehängt wird:

      
      <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>
      
      

session-token

Das reCAPTCHA-JavaScript legt ein reCAPTCHA-Sitzungstoken als Cookie auf dem nach der Prüfung im Browser angezeigt. Der Browser des Endnutzers hängt das Cookie an und aktualisiert das Cookie, solange das reCAPTCHA-JavaScript aktiv bleibt.

Um ein Sitzungs-Token als Cookie bereitzustellen, installieren Sie einen Sitzungs-Tokenschlüssel auf mindestens einer Ihrer Webseiten, die der Endnutzer aufruft, bevor die Seite geschützt werden muss. Wenn Sie beispielsweise die Zahlungsseite schützen möchten, installieren Sie Sitzungstokenschlüssel auf der Startseite oder Produktseite

Weitere Informationen zum Installieren von Sitzungstoken-Schlüsseln auf Ihren Webseiten erhalten Sie unter Integration von wertbasierte Schlüssel mit dem Front-End.

Sie können dieses Cookie verwenden, um nachfolgende Anfragen des Endnutzers zu schützen und in einer bestimmten Domain geladen wird. Sitzungstokens sind standardmäßig 30 Minuten lang gültig. Wenn der Endnutzer jedoch auf der Seite verbleibt, auf der Sie das Sitzungstoken implementiert haben, aktualisiert reCAPTCHA das Sitzungstoken regelmäßig, um zu verhindern, dass es abläuft.

Installieren Sie Sitzungs-Tokens auf jeder Seite, die durch reCAPTCHA geschützt werden muss. Wir empfehlen, jede Seite mit reCAPTCHA zu schützen und Google Cloud Armor-Regeln zu verwenden, um den Zugriff auf allen Seiten zu erzwingen, mit Ausnahme der ersten Seite, die Endnutzer durchsuchen.

Hier ist ein Beispiel für ein reCAPTCHA-Sitzungstoken:
   recaptcha-ca-t=value-of-your-session-token;domain=domain;expires=expiration_time

So implementieren Sie ein reCAPTCHA-Sitzungstoken:

  1. Erstellen Sie einen Sitzungstokenschlüssel für Ihre Website.

    gcloud

    Verwenden Sie zum Erstellen von reCAPTCHA-Schlüsseln den Befehl gcloud remarketingtcha keys create.

    Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

    • DISPLAY_NAME: Name für den Schlüssel. In der Regel ein Websitename.
    • INTEGRATION_TYPE: Art der Integration. Geben Sie score an.
    • DOMAIN_NAME: Domains oder Subdomains von Websites, die den Schlüssel verwenden dürfen.

      Geben Sie mehrere Domains als durch Kommas getrennte Liste an. Optional: Geben Sie --allow-all-domains an, um die Domainbestätigung zu deaktivieren.

      Die Deaktivierung der Domainbestätigung stellt ein Sicherheitsrisiko dar, da Einschränkungen auf der Website, damit dein reCAPTCHA-Schlüssel aufgerufen und verwendet werden kann von irgendjemandem.

    • WAF_FEATURE: Name der WAF-Funktion. Geben Sie session-token an.
    • WAF_SERVICE: Name des WAF-Dienstanbieter. Geben Sie fastly für Fastly an.

    Führen Sie den Befehl gcloud recaptcha keys create aus:

    Linux, macOS oder 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

    Die Antwort enthält den neu erstellten reCAPTCHA-Schlüssel.

    REST

    API-Referenzinformationen zu Schlüsseltypen und Integrationstypen finden Sie unter Schlüssel und Integrationstyp.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • DISPLAY_NAME: Name für den Schlüssel. In der Regel ein Websitename.
    • INTEGRATION_TYPE: Art der Integration. Geben Sie score an.
    • DOMAIN_NAME: Domains oder Subdomains von Websites, die den Schlüssel verwenden dürfen.

      Geben Sie mehrere Domains als durch Kommas getrennte Liste an. Optional: Geben Sie --allow-all-domains an, um die Domainbestätigung zu deaktivieren.

      Die Deaktivierung der Domainbestätigung stellt ein Sicherheitsrisiko dar, da Einschränkungen auf der Website, damit dein reCAPTCHA-Schlüssel aufgerufen und verwendet werden kann von irgendjemandem.

    • WAF_FEATURE: Name der WAF-Funktion. Geben Sie session-token an.
    • WAF_SERVICE: Name des WAF-Dienstanbieters. Geben Sie fastly für Fastly an.

    HTTP-Methode und URL:

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

    JSON-Text der Anfrage:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $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

    Sie sollten in etwa folgende JSON-Antwort erhalten:

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

    Notieren Sie sich den Sitzungstoken-Schlüssel für später.

  2. Fügen Sie dem reCAPTCHA-JavaScript den Schlüssel für das Sitzungstoken und waf=session hinzu.

    Das folgende Beispielskript zeigt, wie ein Sitzungs-Token auf einer Webseite implementiert wird:

    <!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

Wenn Sie eine reCAPTCHA-Abrufseite implementieren, wird der Nutzer von reCAPTCHA zu einer Zwischenseite weitergeleitet, auf der ermittelt wird, ob ihm eine CAPTCHA-Herausforderung angezeigt werden muss. Daher sind CAPTCHA-Herausforderungen möglicherweise nicht für alle Nutzer sichtbar.

So implementieren Sie eine reCAPTCHA-Abfrageseite:

  1. Erstellen Sie einen Challenge-Seitenschlüssel für Ihre Website.

    gcloud

    Verwenden Sie den Befehl gcloud recaptcha keys create, um reCAPTCHA-Schlüssel zu erstellen.

    Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

    • DISPLAY_NAME: Name für den Schlüssel. In der Regel ein Websitename.
    • INTEGRATION_TYPE: Integrationstyp. Geben Sie invisible an.
    • DOMAIN_NAME: Domains oder Subdomains von Websites, die verwendet werden dürfen den Schlüssel. Geben Sie --allow-all-domains an.
    • WAF_FEATURE: Name der WAF-Funktion. Geben Sie challenge-page an.
    • WAF_SERVICE: Name des WAF-Dienstanbieter. Geben Sie für Fastly fastly an.

    Führen Sie den gcloud reCAPTCHA-Schlüssel erstellen Befehl:

    Linux, macOS oder 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

    Die Antwort enthält den neu erstellten reCAPTCHA-Schlüssel.

    REST

    API-Referenzinformationen zu Schlüsseltypen und Integrationstypen finden Sie unter Schlüssel und Integrationstyp.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • DISPLAY_NAME: Name für den Schlüssel. In der Regel ein Websitename.
    • INTEGRATION_TYPE: Integrationstyp. Geben Sie invisible an.
    • DOMAIN_NAME: Domains oder Subdomains von Websites, die verwendet werden dürfen den Schlüssel. Geben Sie --allow-all-domains an.
    • WAF_FEATURE: Name der WAF-Funktion. Geben Sie challenge-page an.
    • WAF_SERVICE: Name des WAF-Dienstanbieters. Geben Sie für Fastly fastly an.

    HTTP-Methode und URL:

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

    JSON-Text der Anfrage:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $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

    Sie sollten in etwa folgende JSON-Antwort erhalten:

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

    Notieren Sie sich den Schlüssel für die Challenge-Seite zur späteren Verwendung.

  2. Um Nutzer zur reCAPTCHA-Abfrageseite weiterzuleiten und ein reCAPTCHA-Token erhalten, Erstellen Sie eine Firewallrichtlinie mit dem redirect. auf geschützten Seiten.

Express

Wenn Sie reCAPTCHA Express implementieren möchten, erstellen Sie einen Expressschlüssel.

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. gcloud

    Verwenden Sie den Befehl gcloud recaptcha keys create, um reCAPTCHA-Schlüssel zu erstellen.

    Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

    • DISPLAY_NAME: Name für den Schlüssel. In der Regel ein Websitename.
    • WAF_SERVICE: Name des WAF-Dienstanbieter. Geben Sie fastly für Fastly an.

    Führen Sie den gcloud reCAPTCHA-Schlüssel erstellen Befehl:

    Linux, macOS oder Cloud Shell

    gcloud recaptcha keys create \
    --express \
    --display-name=DISPLAY_NAME  \
    --waf-service=WAF_SERVICE

    Windows (PowerShell)

    gcloud recaptcha keys create `
    --express `
    --display-name=DISPLAY_NAME  `
    --waf-service=WAF_SERVICE

    Windows (cmd.exe)

    gcloud recaptcha keys create ^
    --express ^
    --display-name=DISPLAY_NAME  ^
    --waf-service=WAF_SERVICE

    Die Antwort enthält den neu erstellten reCAPTCHA-Schlüssel.

    REST

    API-Referenzinformationen zu Schlüsseltypen und Integrationstypen finden Sie unter Schlüssel und Integrationstyp.

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • DISPLAY_NAME: Name für den Schlüssel. In der Regel ein Websitename.
    • WAF_SERVICE: Name des WAF-Dienstanbieters. Geben Sie fastly für Fastly an.

    HTTP-Methode und URL:

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

    JSON-Text der Anfrage:

    
    {
      "displayName": "DISPLAY_NAME",
       'wafSettings': "  {
           "wafService": "WAF_SERVICE",
      
    }
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $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

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    
    {
      "name": "projects/project-id/keys/7Ldqgs0UBBBBBIn4k7YxEB-LwEh5S9-Gv6QQIWB8m",
    "displayName": "DISPLAY_NAME,
    
    },
    "wafSettings": {
      "wafService": "fastly",
    
      
    
    }
    }
    
    

    Notieren Sie sich den Expressschlüssel für später.

reCAPTCHA-Firewallrichtlinien erstellen

Sie müssen eine Firewallrichtlinie erstellen, in der Regeln für jede Seite festgelegt sind, die Sie auf Ihrer Website schützen möchten. Sie können Firewallrichtlinien mit einem oder weitere Funktionen von reCAPTCHA für WAF.

Fügen Sie in Ihrer reCAPTCHA-Firewallrichtlinie Regeln in der Reihenfolge der gewünschten Priorität hinzu. Die erste Regel hat die höchste Priorität. Mit ReorderFirewallPoliciesRequest können Sie die Priorität auch neu anordnen. Wenn für eine eingehende Anfrage eine Richtlinienbedingung für den angegebenen Pfad erfüllt ist, implementiert Ihr WAF-Anbieter die definierte Aktion und die nachfolgenden Regeln werden nicht ausgewertet.

  1. Gehen Sie je nach ausgewählter Funktion so vor:
    • Geben Sie den Pfad an, den Sie schützen möchten.
    • Geben Sie die Bedingungen an, unter denen der Zugriff zugelassen, umgeleitet oder blockiert werden soll.
    • Priorisieren Sie die Regeln.
  2. Informationen zu den Komponenten von Firewallrichtlinien und ihren Attributen
  3. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  4. So überschreiben Sie die gcloud CLI, um auf die öffentliche Vorschauversion von zuzugreifen: reCAPTCHA API den folgenden Befehl aus:
        gcloud config set api_endpoint_overrides/recaptchaenterprise https://public-preview-recaptchaenterprise.googleapis.com/
        
  5. Verwenden Sie zum Erstellen von reCAPTCHA-Firewallrichtlinien die gcloud reCAPTCHA-Firewall-policies create erstellen:

    Fügen Sie in Ihrer reCAPTCHA-Firewallrichtlinie Regeln in der gewünschten Prioritätsreihenfolge hinzu. Sie müssen zuerst eine Regel mit der höchsten Priorität hinzufügen. Wenn für eine eingehende Anfrage eine Richtlinienbedingung für den angegebenen Pfad erfüllt ist, implementiert Ihr WAF-Anbieter die definierte Aktion und die nachfolgenden Regeln werden nicht ausgewertet. Standardmäßig ist der Zugriff erlaubt.

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

    Geben Sie folgende Werte an:

    • ACTION: Die Aktionen, die Ihr WAF-Dienstanbieter ausführen muss für die eingehende Anfrage aus. Er kann höchstens eine finale Aktion enthalten, d. h. eine Aktion, die eine Antwort erzwingt. Wählen Sie eine der folgenden Optionen aus:
      • allow: ermöglicht den Zugriff auf die angeforderte Seite. Dies ist eine Terminalaktion.
      • block: verweigert den Zugriff auf die angeforderte Seite. Diese Aktion ist endgültig.
      • redirect: Leitet die eingehende Nutzeranfrage an die reCAPTCHA-Abfrageseite weiter. Diese Aktion ist endgültig.
      • substitute: Bei einer betrügerischen Nutzeranfrage wird eine andere Seite als die angeforderte Seite ausgeliefert. Diese Aktion ist endgültig.
      • set_header: Legt einen benutzerdefinierten Header fest und ermöglicht, dass die eingehende Nutzeranfrage an den Back-End. Das Backend kann dann einen benutzerdefinierten Schutz auslösen. Dies ist eine nicht-terminale Aktion.
    • CONDITION: eine CEL (Common Expression Language) bedingten Ausdruck, der angibt, ob Die reCAPTCHA-Firewallrichtlinie gilt für eine eingehende Nutzeranfrage. Wenn dieses wird die Bedingung als "true" ausgewertet und der angeforderte Pfad stimmt mit dem Pfadmuster überein. Die zugehörigen Aktionen werden vom WAF-Dienstanbieter ausgeführt. Der Bedingungsstring wird bei der Erstellung auf korrekte CEL-Syntax geprüft. Weitere Informationen Informationen zur Sprachdefinition, CEL-Sprachdefinition
    • DESCRIPTION: Eine Beschreibung der Ziele der reCAPTCHA-Firewallrichtlinie. Die Beschreibung darf maximal 256 UTF-8-Zeichen lang sein.
    • PATH: Der Pfad, für den die reCAPTCHA-Firewallrichtlinie gilt. Er muss als glob-Muster angegeben werden. Weitere Informationen zu glob finden Sie in der Anleitung.

    Nach der erfolgreichen Ausführung des Befehls wird eine Ausgabe ähnlich der folgenden angezeigt:

         Created [100].
       

    Im folgenden Beispiel wird eine reCAPTCHA-Firewallrichtlinie erstellt, um Traffic zu /example/page.html zu blockieren, wenn der Score unter 0,1 liegt.

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

Fastly-Rechendienst einbinden

Wenn Sie die reCAPTCHA-Firewallrichtlinien verwenden möchten, müssen Sie einen Fastly-Rechendienst einrichten, um Anfragen abzufangen und zu verarbeiten.

Sie können entweder einen neuen Computing-Dienst erstellen und konfigurieren oder reCAPTCHA einbinden Firewallrichtlinien mit einem vorhandenen Fastly-Dienst durch Verkettung Wenn Sie Verkettungen verwenden möchten, muss der reCAPTCHA-Dienst am weitesten Upstream Fastly-Dienst oder einen anderen Proxy für die korrekte IP-Erkennung.

Für die Erstellung eines Rechendiensts benötigen Sie die folgenden Informationen:

  • Ihr Domainname
  • reCAPTCHA-Paket für FASTLY im ZIP-Format
  • Ursprungsname für Ihren Backend-Server
  • Ursprungsname für den reCAPTCHA-Backend-Server: Recaptcha Enterprise
  • Ursprungsname für den Google-Backend-Server: Google
  • Ihren API-Schlüssel, den Sie für die Authentifizierung erstellt haben
  • Ihre Google Cloud-Projekt-ID
  • Ihre reCAPTCHA-Schlüssel, die Sie für Ihre WAF-Funktionen erstellt haben

So richten Sie einen Fastly-Dienst mit reCAPTCHA-Firewallrichtlinien ein:

  1. Melden Sie sich in Fastly an.
  2. Um einen Compute-Dienst zu erstellen, folgen Sie der Anleitung unter Neuen Compute-Dienst erstellen

    So erstellen Sie einen Compute-Dienst:

    • Geben Sie zum Erstellen eines Ursprungs für den reCAPTCHA-Backend-Server an: folgende Werte:

      • Name Ihres Ursprungs = Recaptcha Enterprise
      • IP-Adresse (oder Hostname) Ihres Ursprungsservers: public-preview-recaptchaenterprise.googleapis.com
    • Geben Sie zum Erstellen eines Ursprungs für den Google-Backend-Server an: folgende Werte:

      • Name des Ursprungs = Google
      • IP-Adresse (oder Hostname) Ihres Ursprungsservers = www.google.com:443
    • Geben Sie die folgenden Werte an, um einen Ursprung für Ihren Back-End-Server zu erstellen:

      • Name der Quelle = beliebiger aussagekräftiger Name für deinen Backend-Server
      • IP-Adresse (oder Hostname) des Ursprungsservers = Hostname für den Backend-Server.
    • Laden Sie das reCAPTCHA-Paket für Fastly recaptcha_fastly_client_0.1.0.tar.gz hoch.

    • Verwenden Sie recaptcha als Namen für Ihr Wörterbuch und fügen Sie Folgendes hinzu: Informationen als Schlüssel/Wert-Paare im Wörterbuch enthalten:

      Schlüssel Wert
      customer_backend_name Der Name, den Sie beim Erstellen eines Ursprungs für Ihr Backend angegeben haben Server.
      recaptcha_backend_name reCAPTCHA Enterprise
      google_backend_name Google
      cloud_api_key Der API-Schlüssel, den Sie für die Authentifizierung erstellt haben.
      cloud_project_number Ihre Google Cloud-Projekt-ID.
      action_site_key reCAPTCHA-WAF-Aktionstokenschlüssel. Dieser Schlüssel ist erforderlich wenn Sie Aktionstokens zum Schutz Ihrer Seiten verwenden.
      session_site_key reCAPTCHA-WAF-Sitzungstokenschlüssel. Dieser Schlüssel ist erforderlich wenn Sie Sitzungstokens zum Schutz Ihrer Seiten verwenden.
      challengepage_site_key Schlüssel für die reCAPTCHA-WAF-Abrufseite. Dieser Schlüssel ist erforderlich, wenn Sie die reCAPTCHA-Abfrageseite zum Schutz Ihrer Seiten verwenden.
      express_site_key reCAPTCHA-Expressschlüssel. Dieser Schlüssel ist erforderlich wenn Sie reCAPTCHA Express zum Schutz Ihrer Seiten verwenden.

Nächste Schritte