Bot-Verwaltung konfigurieren

Diese Seite enthält Informationen zum Konfigurieren von Google Cloud Armor Sicherheitsrichtlinienregeln für die Botverwaltung. Bevor Sie die Bot-Verwaltung konfigurieren, sollten Sie sich mit den Informationen in der Bot-Verwaltung.

Hinweise

In den folgenden Abschnitten werden alle IAM-Rollen (Identity and Access Management) und Berechtigungen, die zum Konfigurieren von Google Cloud Armor-Sicherheitsrichtlinien erforderlich sind. Für die Anwendungsfälle in diesem Dokument entsprechen, compute.securityPolicies.create und compute.securityPolicies.update Berechtigungen.

IAM-Berechtigungen für Google Cloud Armor-Sicherheitsrichtlinien einrichten

Für die folgenden Vorgänge ist die Rolle Compute-Sicherheitsadministrator (roles/compute.securityAdmin) für die Identitäts- und Zugriffsverwaltung (IAM) erforderlich:

  • Google Cloud Armor konfigurieren, ändern, aktualisieren und löschen Sicherheitsrichtlinie
  • Mithilfe der folgenden API-Methoden:
    • SecurityPolicies insert
    • SecurityPolicies delete
    • SecurityPolicies patch
    • SecurityPolicies addRule
    • SecurityPolicies patchRule
    • SecurityPolicies removeRule

Ein Nutzer mit der Rolle Compute-Netzwerkadministrator (roles/compute.networkAdmin) kann die folgenden Vorgänge ausführen:

  • Google Cloud Armor-Sicherheitsrichtlinie für einen Back-End-Dienst festlegen
  • Mithilfe der folgenden API-Methoden:
    • BackendServices setSecurityPolicy
    • BackendServices list (nur gcloud)

Nutzer mit der Rolle Sicherheitsadministrator (roles/iam.securityAdmin) und der Rolle „Compute-Netzwerkadministrator“ können sich die Google Cloud Armor-Sicherheitsrichtlinien mithilfe der SecurityPolicies API-Methoden get, list und getRule ansehen.

IAM-Berechtigungen für benutzerdefinierte Rollen einrichten

In der folgenden Tabelle sind die grundlegenden Berechtigungen der IAM-Rollen und die zugehörigen API-Methoden aufgeführt.

IAM-Berechtigung API-Methoden
compute.securityPolicies.create SecurityPolicies insert
compute.securityPolicies.delete SecurityPolicies delete
compute.securityPolicies.get SecurityPolicies get
SecurityPolicies getRule
compute.securityPolicies.list SecurityPolicies list
compute.securityPolicies.use BackendServices setSecurityPolicy
compute.securityPolicies.update SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
compute.backendServices.setSecurityPolicy BackendServices setSecurityPolicy

Verwenden Sie eine manuelle reCAPTCHA-Aufgabe, um zwischen menschlichen und automatisierten Clients zu unterscheiden

Wenn Sie reCAPTCHA mit Google Cloud Armor verwenden möchten, müssen Sie Ihren reCAPTCHA WAF-Websiteschlüssel (reCAPTCHA-Schlüssel) vom Typ CHALLENGEPAGE mit einem Sicherheitsrichtlinie. Weitere Informationen zu reCAPTCHA-Schlüsseln finden Sie in der Übersicht über reCAPTCHA-Schlüssel.

Um Ihren eigenen reCAPTCHA-Schlüssel mit einer Sicherheitsrichtlinie zu verknüpfen oder die Verknüpfung aufzuheben, verwenden Sie folgenden Befehl:

gcloud compute security-policies update SECURITY_POLICY \
    --recaptcha-redirect-site-key SITE_KEY

Ersetzen Sie Folgendes:

  • SECURITY_POLICY: der Name der Sicherheitsrichtlinie
  • SITE_KEY: Ihr reCAPTCHA-CHALLENGEPAGE-Schlüssel

reCAPTCHA-Schlüssel verknüpfen

Im folgenden Beispiel wird ein reCAPTCHA-Schlüssel einer Sicherheitsrichtlinie zugeordnet. Der zugehörige reCAPTCHA-Schlüssel gilt für alle Regeln, die die manuelle Aufgabe gemäß der angegebenen Sicherheitsrichtlinie verwenden.

gcloud compute security-policies update SECURITY_POLICY \
    --recaptcha-redirect-site-key "SITE_KEY"

Verknüpfung eines reCAPTCHA-Schlüssels aufheben

Verwenden Sie den folgenden Befehl, um die Verknüpfung eines reCAPTCHA-Schlüssels mit einer Sicherheitsrichtlinie aufzuheben:

gcloud compute security-policies update SECURITY_POLICY \
    --recaptcha-redirect-site-key ""

Traffic für reCAPTCHA-Bewertung weiterleiten

Nachdem Sie Ihren reCAPTCHA-Schlüssel mit Ihrer Sicherheitsrichtlinie verknüpft haben, können Sie in dieser Richtlinie eine Regel erstellen, um Traffic intern für die reCAPTCHA-Bewertung weiterzuleiten. Verwenden Sie das folgende Format in der gcloud CLI, um Traffic weiterzuleiten:

gcloud compute security-policies rules create PRIORITY \
  --security-policy SECURITY_POLICY \
  {--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \
  --action redirect \
  --redirect-type google-recaptcha

Ersetzen Sie Folgendes:

  • PRIORITY: Die Priorität, mit der Sie die Klasse erstellen möchten. Regel
  • SECURITY_POLICY: der Name der Sicherheitsrichtlinie
  • EXPRESSION: der Ausdruck der benutzerdefinierten Regelsprache, der stimmt mit dem Traffic überein, für den Sie die reCAPTCHA-Bewertung erzwingen möchten
  • SRC_IP_RANGE ist ein IP-Adressbereich. Hiermit können Sie die reCAPTCHA-Bewertung für alle Anfragen aus diesem Bereich.

Im folgenden Beispiel wird eine Regel erstellt, die Traffic weiterleitet, der /login.html für eine manuelle reCAPTCHA-Aufgabe:

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\")" \
    --action redirect \
    --redirect-type google-recaptcha

Reibungslose reCAPTCHA-Bewertung erzwingen

Bevor Sie fortfahren, lesen Sie sich in der Übersicht über die Bot-Verwaltung die Voraussetzungen zur Verwendung von reCAPTCHA-Aktions- oder Sitzungs-Tokens durch.

Zum Extrahieren von Attributen aus einem reCAPTCHA-Aktionstoken können Sie Folgendes verwenden: token.recaptcha_action.ATTRIBUTE Ersetzen Sie ATTRIBUTE durch ein gültiges Tokenattribut in der Regelsprache von Google Cloud Armor. Ebenso können Sie token.recaptcha_session.ATTRIBUTE verwenden, um Attribute aus einem reCAPTCHA-Sitzungstoken zu extrahieren. Weitere Informationen Informationen zur Syntax des verfügbaren reCAPTCHA-Tokens finden Sie in der Referenz zur Sprache für Regeln

Ein Aktionstoken kann von einer Webanwendung, einer iOS-Anwendung oder einer Android-Anwendung stammen, während ein Sitzungstoken nur von einer Webanwendung stammen kann. Für jede Plattform ist ein separater reCAPTCHA-Schlüssel erforderlich. Die Ausdrücke token.recaptcha_action.ATTRIBUTE und token.recaptcha_session.ATTRIBUTE gelten für Tokens von jeder dieser Plattformen. Um Tokens von verschiedenen Plattformen zu unterscheiden und Tokendiebstahl zu verhindern, empfehlen wir, reCAPTCHA-Schlüssel zuzuordnen, wenn Sie Regeln mit diesen Ausdrücken konfigurieren.

Beispiele

Im ersten Beispiel wird eine Regel erstellt, die das Traffic-Targeting zulässt /login.html mit einem reCAPTCHA-Aktionstoken mit folgendem Wert: mindestens 0.8.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \
    --action allow

Das zweite Beispiel ist dasselbe wie das erste, aber es muss auch Folgendes angegeben werden: Das Aktionstoken wird mit dem reCAPTCHA-Schlüssel example-site-key-1 oder example-site-key-2:

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \
    --recaptcha-action-site-keys "example-site-key-1,example-site-key-2" \
    --action allow

Im dritten Beispiel wird eine Regel erstellt, die Traffic zu /login.html mit einem reCAPTCHA-Sitzungstoken zulässt, das mit einem reCAPTCHA-Schlüssel von example-site-key-3 ausgestellt wurde und einen Score von mindestens 0.8 hat.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches(\"/login.html\") && token.recaptcha_session.score >= 0.8" \
    --recaptcha-session-site-keys "example-site-key-3" \
    --action allow

Weiterleitung (302-Antwort)

Verwenden Sie die Methode im folgenden Format in der Google Cloud CLI:

gcloud compute security-policies rules create PRIORITY \
    --security-policy SECURITY_POLICY \
    {--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \
    --action redirect \
    --redirect-type external-302 \
    --redirect-target REDIRECT_URL

Ersetzen Sie Folgendes:

  • PRIORITY: Die Priorität, mit der Sie die Klasse erstellen möchten. Regel
  • SECURITY_POLICY: der Name der Sicherheitsrichtlinie
  • EXPRESSION: Der Sprachausdruck für benutzerdefinierte Regeln, der den Traffic abgleicht, für den die reCAPTCHA-Bewertung erzwungen werden soll
  • SRC_IP_RANGE ist ein IP-Adressbereich. Mit dieser Option können Sie die reCAPTCHA-Bewertung für alle Anfragen aus diesem Bereich erzwingen.
  • REDIRECT_URL: die URL, an die der Traffic weitergeleitet werden soll

Im folgenden Beispiel wird eine Regel erstellt, die den Traffic von 10.10.10.0/24 an https://www.example.com weiterleitet.

gcloud compute security-policies rules create 1000 \
   --security-policy SECURITY_POLICY \
   --src-ip-ranges "10.10.10.0/24" \
   --action redirect \
   --redirect-type external-302 \
   --redirect-target "https://www.example.com"

Anfrage gestalten

Um eine Regel zu erstellen, die Traffic zulässt, aber benutzerdefinierte Header und benutzerdefinierte statische Werte, bevor Sie sie an geschützte Back-Ends senden, verwenden Sie Folgendes: Format in der gcloud CLI:

gcloud compute security-policies rules create PRIORITY \
    --security-policy SECURITY_POLICY \
    {--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \
    --action allow \
    --request-headers-to-add HEADER_1=VALUE_1,HEADER_2=VALUE_2,...

Ersetzen Sie Folgendes:

  • PRIORITY: die Priorität, mit der Sie die Regel erstellen möchten
  • SECURITY_POLICY: der Name der Sicherheitsrichtlinie
  • EXPRESSION: der Ausdruck der benutzerdefinierten Regelsprache, der stimmt mit dem Traffic überein, für den Sie die reCAPTCHA-Bewertung erzwingen möchten
  • SRC_IP_RANGE ist ein IP-Adressbereich. Hiermit können Sie die reCAPTCHA-Bewertung für alle Anfragen aus diesem Bereich.
  • HEADER_#: Name der Anfrage-Header, mit der Sie die Anfrage dekorieren möchten
  • VALUE_#: Wert des Anfrageheaders, mit dem Sie die Anfrage dekorieren möchten

Im folgenden Beispiel wird eine Regel erstellt, die Traffic zu /login.html zulässt, sofern die Anfrage auch ein reCAPTCHA-Aktionstoken mit einem Score von weniger als 0.2 hat.

gcloud compute security-policies rules create 1000 \
    --security-policy SECURITY_POLICY \
    --expression "request.path.matches("/login.html") && token.recaptcha_action.score < 0.2" \
    --action allow \
    --request-headers-to-add "reCAPTCHA-Warning=high"

Nächste Schritte