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
- Bereiten Sie Ihre Umgebung für Google Cloud Fraud Defense vor.
- 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.
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:
Rufen Sie in der Google Cloud Console die Google Cloud Fraud Defense Seite auf.
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.listMethode auf.Wenn Sie die ID eines vorhandenen Schlüssels mithilfe der gcloud CLI kopieren möchten, führen Sie den
gcloud recaptcha keys listBefehl aus.
Planen Sie Ihre Fraud Defense-Integration, indem Sie die Nutzeraktionen identifizieren, die Sie schützen möchten (z. B.
login,signupoderpassword_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 derprotected_endpoint_group.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:
Rufen Sie in der Google Cloud Console die Fraud Defense Seite auf.
Prüfen Sie, ob Ihr Projekt in der Ressourcenauswahl ausgewählt ist.
Klicken Sie in der Tabelle reCAPTCHA-Schlüssel auf den Namen des Schlüssels, für den Sie Aufgabenrichtlinien konfigurieren möchten.
Rufen Sie auf der Seite Schlüsseldetails den Tab Richtlinie auf.
Im Bereich Regelgruppen können Sie Ihre Aufgabenregeln und Bedingungsausdrücke aufrufen, hinzufügen oder bearbeiten.
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) -> intsize(list) -> intstring.size() -> intlist.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
- Informationen zum Bewerten des reCAPTCHA-Antworttokens finden Sie unter Bewertungen für Websites erstellen.