Aufgabenrichtlinien konfigurieren

In diesem Dokument wird erläutert, wie Sie Aufgabenrichtlinien mit einer vorhandenen Google Cloud Fraud Defense-Integration konfigurieren.

Mit Aufgabenrichtlinien können Sie CAPTCHA-Aufgaben selektiv anhand benutzerdefinierter Regeln auslösen. Diese Regeln legen fest, wann eine Fraud Defense-Aufgabe basierend auf Risikobewertungen, IP-Adressen, User-Agents, ASNs oder verifizierten Bot-Identitäten (KI-Agenten) angezeigt werden soll.

Sie können Challenge-Richtlinien mit den folgenden empfohlenen Funktionen verwenden:

  • AutoExecute-Konfiguration: Vereinfacht die JavaScript-Integration für Clientanwendungen.
  • Challenges: Löst die Nutzerverifizierung aus, wenn dies durch Ihre Challengeregeln erforderlich ist. Fraud Defense unterstützt die folgenden Aufgabentypen:
    • Visuelle Aufgaben: Nutzer werden aufgefordert, Bilder basierend auf einer Eingabeaufforderung auszuwählen. Standardmäßig wird eine visuelle Aufgabe ausgewählt, wenn eine Regel mit der ausgewählten Aufgabenoption konfiguriert wird.
    • Audioaufgaben: Nutzer werden aufgefordert, gesprochene Audioinhalte als eine Alternative für die Barrierefreiheit zu identifizieren.
    • QR-Code-Aufgaben: Nutzer werden aufgefordert, einen QR-Code mit ihrem Mobil gerät zu scannen, um eine Aufgabe zu lösen. Ihr Universalschlüssel muss auf einer Zulassungsliste stehen, um diese Funktion verwenden zu können. Wenn Sie Ihren Universalschlüssel der Zulassungsliste hinzufügen möchten, wenden Sie sich an das Fraud Defense-Team unter fraud-defense@google.com und geben Sie Ihren Universalschlüssel an.

Hinweis

  1. Bereiten Sie Ihre Umgebung für Google Cloud Fraud Defense vor.
  2. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist. Sie können die Abrechnung entweder mit einer Kreditkarte oder einer vorhandenen Google Cloud Abrechnungs-ID für das Projekt aktivieren. Wenn Sie Hilfe bei der Abrechnung benötigen, wenden Sie sich an den Cloud Billing-Support.
  3. Erstellen oder identifizieren Sie einen Universalschlüssel für Ihr Projekt. Informationen zum Erstellen eines Schlüssels finden Sie unter Universalschlüssel erstellen. Alternativ können Sie die ID eines vorhandenen Universalschlüssels kopieren. Führen Sie dazu einen der folgenden Schritte aus:

    • So kopieren Sie die ID eines vorhandenen Schlüssels aus der Google Cloud Console:

      1. Rufen Sie in der Google Cloud Console die Google Cloud Fraud Defense Seite auf.

        Zu Fraud Defense

      2. Suchen Sie in der Liste reCAPTCHA-Schlüssel den Schlüssel, den Sie kopieren möchten, und klicken Sie auf In die Zwischenablage kopieren.

    • Wenn Sie die ID eines vorhandenen Schlüssels mithilfe der REST API kopieren möchten, rufen Sie die projects.keys.list Methode auf.

    • Wenn Sie die ID eines vorhandenen Schlüssels mithilfe der gcloud CLI kopieren möchten, führen Sie den gcloud recaptcha keys list Befehl aus.

  4. Planen Sie Ihre Fraud Defense-Integration, indem Sie die Nutzeraktionen identifizieren, die Sie schützen möchten (z. B. login, signup oder password_reset), und die Seiten auf Ihrer Website, die diese Aktionen auslösen. Wenn Sie die AutoExecute-Konfiguration verwenden, müssen diese Aktionen mit den angegebenen Aktionsnamen übereinstimmen in der protected_endpoint_group.

  5. Integrieren Sie Fraud Defense in Ihre Webseite. Wir empfehlen, die AutoExecute-Konfiguration von Fraud Defense zu verwenden. Allgemeine Anleitungen zur Einrichtung finden Sie unter Universalschlüssel auf Websites installieren.

Übersicht über die Fraud Defense-Richtlinienkonfiguration

Mit der Fraud Defense-Richtlinienkonfiguration können Sie das Verhalten Ihres Fraud Defense-Schutzes anpassen. Sie können Aufgabenrichtlinien im Abschnitt challenge_rule_groups konfigurieren.

Sie können die Richtlinienkonfiguration in der Google Cloud Console, der gcloud CLI oder der reCAPTCHA Enterprise REST API aufrufen und aktualisieren.

Console

So rufen Sie Ihre Richtlinienkonfiguration in der Google Cloud Console auf oder aktualisieren sie:

  1. Rufen Sie in der Google Cloud Console die Fraud Defense Seite auf.

    Zu Fraud Defense

  2. Prüfen Sie, ob Ihr Projekt in der Ressourcenauswahl ausgewählt ist.

  3. Klicken Sie in der Tabelle reCAPTCHA-Schlüssel auf den Namen des Schlüssels, für den Sie Aufgabenrichtlinien konfigurieren möchten.

  4. Rufen Sie auf der Seite Schlüsseldetails den Tab Richtlinie auf.

  5. Im Bereich Regelgruppen können Sie Ihre Aufgabenregeln und Bedingungsausdrücke aufrufen, hinzufügen oder bearbeiten.

  6. Klicken Sie auf Speichern.

gcloud

Führen Sie den Befehl gcloud alpha recaptcha policies update aus, um die Richtlinienkonfiguration für einen Schlüssel zu aktualisieren:

gcloud alpha recaptcha policies update --key=KEY_ID --policy=POLICY.yaml

Führen Sie den gcloud alpha recaptcha policies describe Befehl aus, um die aktuelle Richtlinienkonfiguration für einen Schlüssel aufzurufen:

gcloud alpha recaptcha policies describe --key=KEY_ID

REST API

Rufen Sie die projects.keys.updatePolicy Methode auf, um die Richtlinienkonfiguration für einen Schlüssel zu aktualisieren:

PATCH https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys/KEY_ID/policy

{
  "clientSettings": {
    "allowedDomains": [
      "example.com"
    ]
  },
  "challengeRuleGroups": [
    {
      "actions": ["login"],
      "challengeRules": [
        {
          "condition": "score < 0.7",
          "challenge": {}
        }
      ]
    }
  ]
}

Rufen Sie die projects.keys.getPolicy Methode auf, um die aktuelle Richtlinienkonfiguration für einen Schlüssel aufzurufen:

GET https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys/KEY_ID/policy

Die Richtlinienkonfiguration verwendet das YAML-Format für die Google Cloud CLI und das JSON-Format für die REST API. Das vollständige Schema des Abschnitts challenge_rule_groups finden Sie unter Aufgabenrichtlinien konfigurieren.

Beispiele für verschiedene Anwendungsfälle finden Sie unter Beispielkonfigurationen für Challenge-Regeln.

Aufgabenrichtlinien konfigurieren

Sie konfigurieren Aufgabenrichtlinien im Abschnitt challenge_rule_groups der Fraud Defense-Richtlinienkonfiguration. Wenn Sie bereits eine Richtlinie mit client_settings haben, einschließlich der Domaininformationen, können Sie die Richtlinie aktualisieren, um Ihre Aufgabenrichtlinienregeln einzubeziehen.

Der Abschnitt challenge_rule_groups hat die folgende Struktur:

challenge_rule_groups:
  - actions: [string, ...]
    challenge_rules:
      - condition: string
        challenge:
          # difficulty is optional: USABILITY | BALANCE (default) | SECURITY
          difficulty: BALANCE
        # OR no_challenge: {}
      - condition: string
        challenge:
          difficulty: BALANCE
        # OR no_challenge: {}

In jeder Aufgabenregel ist das Feld condition optional. Wenn condition nicht angegeben oder leer ist, wird die Regel bedingungslos angewendet. Außerdem schließen sich die Felder challenge und no_challenge gegenseitig aus und genau eines von ihnen muss in jeder Regel vorhanden sein.

Regelauswertungsreihenfolge

Regelgruppen und die darin enthaltenen Regeln werden nacheinander von oben nach unten ausgewertet. Die erste zutreffende Regel wird angewendet. Wenn weder eine Gruppe noch eine Regel auf die Interaktion zutrifft, erfolgt die Auswertung standardmäßig ohne Aufgabe, aber für die Anfrage wird eine Risikobewertung generiert.

Schwierigkeitsstufen für Aufgaben

Sie können den Schwierigkeitsgrad angeben, wenn Sie eine Aufgabe auslösen. Eine vollständige Liste der gültigen Schwierigkeitswerte finden Sie in der ChallengeSecurityPreference API-Referenz.

Bedingungssyntax

Das Feld condition ist ein optionaler String, der als CEL-Ausdruck (Common Expression Language) formatiert ist. Wenn condition nicht angegeben oder leer ist, wird die Regel bedingungslos angewendet. CEL bietet standardmäßige C-ähnliche Operatoren, einschließlich relationaler (<, <=, >, >=, ==, !=), arithmetischer (+, -, /, *, %), logischer (!, &&, ||) und Containeroperatoren ([], in). CEL unterstützt gängige einfache Datentypen (bool, int, uint, double, string), grundlegende Containertypen (lists, messages) und Konstanten (z. B. true, 1, 0.5, "hello", und [1, 2, 3]).

Während der Laufzeit sind die folgenden Fraud Defense-Variablen zugänglich:

Variable Typ Beschreibung
score double Die Fraud Defense-Bot-Bewertung.
user_ip_address string Die IP-Adresse (IPv4 oder IPv6) des Nutzers, der die Anfrage stellt.
user_agent string Der User-Agent des Nutzers, der die Anfrage stellt.
user_asn int Die autonome Systemnummer (Autonomous System Number, ASN) des Nutzers, der die Anfrage stellt. Lassen Sie das AS Präfix weg (verwenden Sie z. B. 12345 anstelle von AS12345).
verified_bots list(Bot) Eine Liste verifizierter automatisierter Crawler oder Agenten (z. B. Suchmaschinenindexierer, KI-Suchassistenten und Partnerinhalts-Scraper), die von Fraud Defense identifiziert wurden.

Die folgenden zusätzlichen nicht einfachen Typen sind definiert. Die vollständige Liste der Werte finden Sie unter Bot.

message Bot {
  name [string] - the name of the bot
  bot_type [BotType] - the type of automated agent
}

Weitere Informationen zu möglichen name-Werten finden Sie in der Bot API-Referenz. Weitere Informationen zu gültigen bot_type Enum-Werten finden Sie in der BotType API-Referenz.

In Fraud Defense-Aufgabenrichtlinien können Sie jede dieser Variablen verwenden, um einen booleschen Ausdruck zu erstellen. Beispielsweise sind score > 0.5, user_ip_address == "192.0.2.1" und user_asn == 12345 gültige Bedingungsausdrücke, die zu einem booleschen Wert ausgewertet werden. Da user_asn ein Ganzzahltyp ist, müssen Sie das Präfix AS weglassen, wenn Sie ASNs prüfen.

Die folgenden Funktionen können in den Bedingungen für Fraud Defense-Aufgabenrichtlinien verwendet werden:

Name Unterschrift Beschreibung
contains string.contains(string) -> bool Prüft, ob der String-Operand den Teilstring enthält.
startsWith string.startsWith(string) -> bool Prüft, ob der String-Operand mit dem angegebenen Präfix beginnt.
endsWith string.endsWith(string) -> bool Prüft, ob der String-Operand mit dem angegebenen Suffix endet.
size size(string) -> int
size(list) -> int
string.size() -> int
list.size() -> int
Gibt die Größe eines Strings (Anzahl der Codepoints) oder einer Liste (Anzahl der Elemente) zurück.

Comprehension-Funktionen sind eine Art Makro, das in CEL integriert ist. Die folgenden Comprehensions sind verfügbar:

Name Unterschrift Beschreibung Beispiel
has has(message.field) -> bool Prüft, ob ein Feld verfügbar ist. has(verified_bots[0].name)
all list(A).all(A, predicate(A) -> bool) -> bool Prüft, ob alle Elemente x in einer Liste e mit dem Prädikat p übereinstimmen. [1, 2, 3].all(x, x > 0)
exists list(A).exists(A, predicate(A) -> bool) -> bool Prüft, ob ein Element x in einer Liste e mit dem Prädikat p übereinstimmt. [1, 2, 3].exists(i, i % 2 != 0)
exists_one list(A).exists_one(A, predicate(A)) -> bool Prüft, ob genau ein Element x in einer Liste e mit dem Prädikat p übereinstimmt. [1, 2, 2].exists_one(i, i < 2)

Beispielkonfigurationen für Challenge-Regeln

Dieser Abschnitt enthält gültige Beispiele für die Konfiguration von Aufgabenregeln.

Aufgabe für alle Anfragen mit einer niedrigen Bewertung

challenge_rule_groups:
  - actions: ['*']
    challenge_rules:
      - condition: 'score < 0.5'
        challenge: {}

Aufgabe mit hohem Aufwand für alle Anfragen mit einer niedrigen Bewertung auswählen

challenge_rule_groups:
  - actions: ['*']
    challenge_rules:
      - condition: 'score < 0.5'
        challenge:
          difficulty: 'SECURITY'

Aufgabe für bestimmte Aktionen mit einer niedrigen Bewertung

challenge_rule_groups:
  - actions: ['login', 'signup']
    challenge_rules:
      - condition: 'score < 0.5'
        challenge: {}

Verschiedene Regelschwellenwerte für verschiedene Aktionen konfigurieren

challenge_rule_groups:
  - actions: ['login']
    challenge_rules:
      - condition: 'score < 0.5'
        challenge: {}
  - actions: ['signup']
    challenge_rules:
      - condition: 'score < 0.7'
        challenge: {}

Keine Aufgabe für IP-Adressen auf der Zulassungsliste anzeigen

challenge_rule_groups:
  - actions: ['*']
    challenge_rules:
      - condition: 'user_ip_address in ["123.255.255.001", "123.255.255.002"]'
        no_challenge: {}

Hinweis: Diese Regel unterscheidet sich von der Funktion für IP-Zulassungslisten von Fraud Defense.

Keine Aufgabe für ein Subnetz von IP-Adressen anzeigen

challenge_rule_groups:
  - actions: ['*']
    challenge_rules:
      - condition: 'user_ip_address.startsWith("123.255.255")'
        no_challenge: {}

Keine Aufgabe für Anfragen von bestimmten ASNs anzeigen

challenge_rule_groups:
  - actions: ['*']
    challenge_rules:
      # Note that ASNs must be specified as integers without the AS prefix (e.g., 12345 instead of AS12345)
      - condition: 'user_asn in [12345, 67890]'
        no_challenge: {}

Keine Aufgabe für einen Google-Agenten anzeigen

challenge_rule_groups:
  - actions: ['*']
    challenge_rules:
      - condition: 'verified_bots.exists(e, e.name == "google-agent")'
        no_challenge: {}

Aufgabe basierend auf komplexen Bedingungen anzeigen

challenge_rule_groups:
  - actions: ['*']
    challenge_rules:
      - condition: '(user_agent.contains("Chrome/143") && score < 0.5) || (user_agent.contains("Chrome/149") && score < 0.7)'
        challenge: {}

Nächste Schritte