reCAPTCHA Enterprise for WAF in Fastly einbinden

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

Zum Abschließen der Integration müssen Sie eine oder mehrere Features von reCAPTCHA Enterprise for WAF implementieren, reCAPTCHA-Firewallrichtlinien erstellen und den Fastly-Computing-Dienst einbinden.

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 Ihre Google Cloud-Projekt-ID zur späteren Verwendung.

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

  3. reCAPTCHA Enterprise API aktivieren.

    Aktivieren Sie die 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 den API-Schlüssel zur späteren Verwendung.

  5. Planen Sie, wie Sie die Funktionen von reCAPTCHA Enterprise für WAF zum Schutz Ihrer Website implementieren möchten.

    1. Wählen Sie ein oder mehrere WAF-Features aus, die Ihrem Anwendungsfall am besten entsprechen.
    2. Identifizieren Sie die Seiten, die Sie schützen möchten, und den Typ des WAF-Features, das Sie auf diesen Seiten implementieren möchten.
    3. Bestimmen Sie die Bedingungen zum Zulassen oder Blockieren des Zugriffs.
    4. Informieren Sie sich über die Komponenten der reCAPTCHA-Firewallrichtlinie und ihre Attribute, mit denen Sie reCAPTCHA-Firewallrichtlinien erstellen können. 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. Erstellen Sie ein Fastly-Konto mit Compute@Edge-Funktionen.

Features von reCAPTCHA Enterprise for WAF implementieren

Je nach Ihren Anforderungen können Sie ein oder mehrere Features von reCAPTCHA Enterprise for WAF in einer einzigen Anwendung verwenden.

Wenn Sie mehr als ein Feature verwenden möchten, müssen Sie für jedes dieser Features einen reCAPTCHA-Schlüssel erstellen und in Ihrer Anwendung verwenden. Wenn Sie beispielsweise reCAPTCHA-Aktionstokens und reCAPTCHA-Herausforderungen verwenden möchten, müssen Sie einen Schlüssel für ein Aktionstoken und einen Schlüssel für die Challenge-Seite erstellen und in Ihrer Anwendung verwenden.

Aktionstoken

Sie müssen reCAPTCHA Enterprise auf Ihren Webseiten ausführen, um Aktionstokens generieren zu können. Nachdem reCAPTCHA Enterprise ein Aktionstoken generiert hat, hängen Sie das Aktionstoken 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 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 Aktionstokensschlüssel für Ihre Website.

    gcloud

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

    Bevor Sie die folgenden Befehlsdaten verwenden, ersetzen Sie die folgenden Werte:

    • DISPLAY_NAME: Name des Schlüssels. 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.

      Das Deaktivieren der Domainbestätigung stellt ein Sicherheitsrisiko dar, da es für die Website keine Einschränkungen gibt. Ihr reCAPTCHA-Schlüssel kann daher von allen Personen aufgerufen und verwendet werden.

    • WAF_FEATURE: Name des WAF-Features. 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.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • DISPLAY_NAME: Name des Schlüssels. 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.

      Das Deaktivieren der Domainbestätigung stellt ein Sicherheitsrisiko dar, da es für die Website keine Einschränkungen gibt. Ihr reCAPTCHA-Schlüssel kann daher von allen Personen aufgerufen und verwendet werden.

    • WAF_FEATURE: Name des WAF-Features. Geben Sie action-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": "ACTION_TOKEN"
    
    }
    }
    
    

    Notieren Sie sich den Schlüssel Ihres Aktionstokens zur späteren Verwendung.

  2. Binden Sie reCAPTCHA-JavaScript mit dem von Ihnen erstellten Aktionstokensschlüssel in Ihre Webseiten ein. Anleitungen dazu finden Sie im Dokument, das dem Integrationstyp Ihres Aktionstokens entspricht.
  3. Nachdem Sie das Token von reCAPTCHA Enterprise erhalten haben, hängen Sie es im folgenden Format an einen vordefinierten Anfrageheader an:
     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 Anfrageheader anzuhängen.

    Das folgende Beispielskript zeigt, wie Sie die Aktion execute schützen und das Token mithilfe von JavaScript + XHR an einen vordefinierten Anfrageheader anhängen:

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

Sitzungstoken

Das reCAPTCHA-JavaScript setzt ein reCAPTCHA-Sitzungstoken als Cookie im Browser des Endnutzers nach der Bewertung. Der Browser des Endnutzers hängt das Cookie an und aktualisiert es, solange das reCAPTCHA-JavaScript aktiv bleibt.

Wenn Sie ein Sitzungstoken als Cookie bereitstellen möchten, müssen Sie einen Sitzungstokenschlüssel auf mindestens einer Ihrer Webseiten installieren, die der Endnutzer besucht, bevor die zu schützende Seite aufgerufen wird. Wenn Sie beispielsweise die Zahlungsseite schützen möchten, installieren Sie einen Sitzungstokenschlüssel auf der Startseite oder Produktseite.

Informationen zum Installieren von Sitzungstokenschlüsseln auf Ihren Webseiten finden Sie unter Punktzahlbasierte Schlüssel in das Frontend einbinden.

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

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

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 recaptcha keys create.

    Bevor Sie die folgenden Befehlsdaten verwenden, ersetzen Sie die folgenden Werte:

    • DISPLAY_NAME: Name des Schlüssels. 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.

      Das Deaktivieren der Domainbestätigung stellt ein Sicherheitsrisiko dar, da es für die Website keine Einschränkungen gibt. Ihr reCAPTCHA-Schlüssel kann daher von allen Personen aufgerufen und verwendet werden.

    • WAF_FEATURE: Name des WAF-Features. Geben Sie session-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.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • DISPLAY_NAME: Name des Schlüssels. 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.

      Das Deaktivieren der Domainbestätigung stellt ein Sicherheitsrisiko dar, da es für die Website keine Einschränkungen gibt. Ihr reCAPTCHA-Schlüssel kann daher von allen Personen aufgerufen und verwendet werden.

    • WAF_FEATURE: Name des WAF-Features. 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"
    
    }
    }
    
    

    Zeichnen Sie Ihren Sitzungstokenschlüssel zur späteren Verwendung auf.

  2. Fügen Sie dem reCAPTCHA-JavaScript den Sitzungstokenschlüssel 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-Seite

Wenn Sie eine reCAPTCHA-Abfrageseite implementieren, leitet reCAPTCHA Enterprise zu einer Interstitial-Seite weiter, auf der ermittelt wird, ob einem Nutzer eine CAPTCHA-Aufgabe 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 Schlüssel für die Herausforderungsseite für Ihre Website.

    gcloud

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

    Bevor Sie die folgenden Befehlsdaten verwenden, ersetzen Sie die folgenden Werte:

    • DISPLAY_NAME: Name des Schlüssels. In der Regel ein Websitename.
    • INTEGRATION_TYPE: Art der Integration. Geben Sie invisible an.
    • DOMAIN_NAME: Domains oder Subdomains von Websites, die den Schlüssel verwenden dürfen. Geben Sie --allow-all-domains an.
    • WAF_FEATURE: Name des WAF-Features. Geben Sie challenge-page 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.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • DISPLAY_NAME: Name des Schlüssels. In der Regel ein Websitename.
    • INTEGRATION_TYPE: Art der Integration. Geben Sie invisible an.
    • DOMAIN_NAME: Domains oder Subdomains von Websites, die den Schlüssel verwenden dürfen. Geben Sie --allow-all-domains an.
    • WAF_FEATURE: Name des WAF-Features. Geben Sie challenge-page 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": "INVISIBLE",
    
    },
    "wafSettings": {
      "wafService": "fastly",
      "wafFeature": "CHALLENGE_PAGE"
    
    }
    }
    
    

    Zeichne deinen Schlüssel für die Herausforderungsseite zur späteren Verwendung auf.

  2. Wenn Sie Nutzer zur reCAPTCHA-Abfrageseite weiterleiten und ein reCAPTCHA-Token erhalten möchten, erstellen Sie eine Firewallrichtlinie mit der Aktion redirect für geschützte Seiten.

Express

Erstellen Sie einen Expressschlüssel, um den reCAPTCHA-WAF-Expressschutz zu implementieren.

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  2. gcloud

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

    Bevor Sie die folgenden Befehlsdaten verwenden, ersetzen Sie die folgenden Werte:

    • DISPLAY_NAME: Name des Schlüssels. 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 --allow-all-domains an.
    • WAF_FEATURE: Name des WAF-Features. Geben Sie express an.
    • WAF_SERVICE: Name des WAF-Dienstanbieters.

    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.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • DISPLAY_NAME: Name des Schlüssels. 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 --allow-all-domains an.
    • WAF_FEATURE: Name des WAF-Features. Geben Sie express an.
    • WAF_SERVICE: Name des WAF-Dienstanbieters.

    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": "EXPRESS"
    
    }
    }
    
    

    Notieren Sie sich Ihre Express-Taste zur späteren Verwendung.

reCAPTCHA-Firewallrichtlinien erstellen

Sie müssen eine Firewallrichtlinie erstellen, die Regeln für jede Seite definiert, die Sie auf Ihrer Website schützen möchten. Sie können Firewallrichtlinien mit einem oder mehreren Features von reCAPTCHA Enterprise for WAF erstellen.

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

  1. Gehen Sie je nach Auswahl der Funktionen so vor:
    • Identifizieren Sie den Pfad, den Sie schützen möchten.
    • Bestimmen Sie die Bedingungen zum Zulassen, Weiterleiten oder Blockieren des Zugriffs.
    • Priorisieren Sie die Regeln.
  2. Machen Sie sich mit den Komponenten von Firewallrichtlinien und ihren Attributen vertraut.
  3. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  4. Führen Sie den folgenden Befehl aus, um die gcloud CLI für den Zugriff auf die öffentliche Vorschauversion der reCAPTCHA Enterprise API zu überschreiben:
        gcloud config set api_endpoint_overrides/recaptchaenterprise https://public-preview-recaptchaenterprise.googleapis.com/
        
  5. Verwenden Sie zum Erstellen von reCAPTCHA-Firewallrichtlinien den Befehl gcloud recaptchafirewall-policies create:

    Fügen Sie in Ihrer reCAPTCHA-Firewallrichtlinie Regeln in der Reihenfolge der beabsichtigten Priorität hinzu. Sie müssen zuerst eine Regel mit der höchsten Priorität hinzufügen. Wenn bei einer eingehenden Anfrage eine Richtlinienbedingung für den angegebenen Pfad erfüllt ist, implementiert Ihr WAF-Dienstanbieter die definierte Aktion und die nachfolgenden Regeln werden nicht ausgewertet. Die Standardregel ist das Zulassen des Zugriffs.

       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 für die eingehende Anfrage ausführen muss. Er darf höchstens eine Terminalaktion enthalten, bei der es sich um eine Aktion handelt, die eine Antwort erzwingt. Wählen Sie eine der folgenden Aktionen aus:
      • allow: Ermöglicht den Zugriff auf die angeforderte Seite. Dies ist eine Terminalaktion.
      • block: verweigert den Zugriff auf die angeforderte Seite. Dies ist eine Terminalaktion.
      • redirect: leitet die eingehende Nutzeranfrage auf die reCAPTCHA-Abfrageseite weiter. Dies ist eine Terminalaktion.
      • substitute: stellt bei betrügerischen Nutzeranfragen eine andere Seite als die angeforderte Seite bereit. Dies ist eine Terminalaktion.
      • set_header: Legt einen benutzerdefinierten Header fest und ermöglicht, dass die eingehende Nutzeranfrage zum Back-End weitergeleitet wird. Das Backend kann dann einen benutzerdefinierten Schutz auslösen. Diese Aktion ist keine Terminalaktion.
    • CONDITION: Ein bedingter CEL-Ausdruck (Common Expression Language), der angibt, ob die reCAPTCHA-Firewallrichtlinie für eine eingehende Nutzeranfrage gilt. Wenn diese Bedingung als wahr ausgewertet wird und der angeforderte Pfad mit dem Pfadmuster übereinstimmt, werden die zugehörigen Aktionen vom WAF-Dienstanbieter ausgeführt. Der Bedingungsstring wird beim Erstellen auf Korrektheit der CEL-Syntax geprüft. Weitere Informationen zur Sprachdefinition finden Sie unter CEL-Sprachdefinition.
    • DESCRIPTION: eine Beschreibung dessen, was mit der reCAPTCHA-Firewallrichtlinie erreicht werden soll. Die Beschreibung darf höchstens 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 auf der Anleitungsseite.

    Nach erfolgreicher Ausführung des Befehls wird in etwa folgende Ausgabe angezeigt:

         Created [100].
       

    Im folgenden Beispiel wird eine reCAPTCHA-Firewallrichtlinie erstellt, um das Traffic-Targeting für „/beispiel/seite.html“ zu blockieren, wenn der Wert unter 0,1 liegt.

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

In Fastly-Computing-Dienst einbinden

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

Sie können entweder einen neuen Compute-Dienst erstellen und konfigurieren oder reCAPTCHA-Firewallrichtlinien durch Verkettung in einen vorhandenen Fastly-Dienst einbinden. Wenn Sie Verkettung verwenden möchten, muss der reCAPTCHA-Dienst der am weitesten vorgelagerte Fastly-Dienst oder ein anderer Proxy für eine korrekte IP-Erkennung sein.

Zum Erstellen eines Compute-Dienstes 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 Enterprise-Backend-Server: Recaptcha Enterprise
  • Ursprungsname für den Google-Backend-Server: Google
  • Ihr 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-Features erstellt haben

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

  1. Melden Sie sich bei Fastly an.
  2. Folgen Sie der Anleitung unter Neuen Compute-Dienst erstellen, um einen Compute-Dienst zu erstellen.

    So erstellen Sie einen Compute-Dienst:

    • Geben Sie die folgenden Werte an, um einen Ursprung für den reCAPTCHA Enterprise-Backend-Server zu erstellen:

      • Name Ihres Ursprungs = Recaptcha Enterprise
      • IP-Adresse (oder Hostname) Ihres Ursprungsservers = public-preview-recaptchaenterprise.googleapis.com
    • Geben Sie die folgenden Werte an, um einen Ursprung für den Backend-Server von Google zu erstellen:

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

      • Name Ihres Ursprungs = ein beliebiger aussagekräftigen Namen für Ihren Backend-Server.
      • IP-Adresse (oder Hostname) Ihres Ursprungsservers = Hostname für Ihren Back-End-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 dem Wörterbuch die folgenden Informationen als Schlüssel/Wert-Paare hinzu:

      Schlüssel Wert
      customer_backend_name Der Name, den Sie beim Erstellen eines Ursprungs für Ihren Backend-Server angegeben haben.
      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-Aktionstokensschlü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 reCAPTCHA-WAF-Abfrageseitenschlüssel. Dieser Schlüssel ist erforderlich, wenn Sie die reCAPTCHA-Abfrageseite zum Schutz Ihrer Seiten verwenden.
      express_site_key reCAPTCHA-WAF-Expressschlüssel. Dieser Schlüssel ist erforderlich, wenn Sie reCAPTCHA WAF-Express zum Schutz Ihrer Seiten verwenden.

Nächste Schritte