Bot-Verwaltung konfigurieren

Auf dieser Seite finden Sie Informationen zum Konfigurieren der Sicherheitsrichtlinienregeln von Google Cloud Armor für die Bot-Verwaltung. Bevor Sie die Bot-Verwaltung konfigurieren, sollten Sie sich mit den Informationen in der Übersicht über die Bot-Verwaltung vertraut machen.

Hinweise

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

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 Identity and Access Management (IAM) erforderlich:

  • Google Cloud Armor-Sicherheitsrichtlinien konfigurieren, ändern, aktualisieren und löschen
  • 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

Manuelle reCAPTCHA-Herausforderungen zur Unterscheidung zwischen menschlichen und automatisierten Clients verwenden

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 einer Sicherheitsrichtlinie verknüpfen. Weitere Informationen zu reCAPTCHA-Schlüsseln finden Sie in der Übersicht zu reCAPTCHA-Schlüsseln.

Verwenden Sie den folgenden Befehl, um Ihren eigenen reCAPTCHA-Schlüssel mit einer Sicherheitsrichtlinie zu verknüpfen oder zu trennen:

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 diesen 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 die 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: Priorität, mit der Sie die Regel erstellen möchten
  • SECURITY_POLICY: der Name der Sicherheitsrichtlinie
  • EXPRESSION: Der Sprachausdruck für benutzerdefinierte Regeln, der mit dem Traffic übereinstimmt, für den Sie die reCAPTCHA-Bewertung erzwingen möchten
  • SRC_IP_RANGE ist ein IP-Adressbereich. Mit dieser Option können Sie die reCAPTCHA-Bewertung für alle Anfragen aus diesem Bereich erzwingen.

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

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.

Mit token.recaptcha_action.ATTRIBUTE können Sie Attribute aus einem reCAPTCHA-Aktionstoken extrahieren. 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 zur Syntax der verfügbaren reCAPTCHA-Tokenattribute finden Sie in der Sprachreferenz 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 Traffic zu /login.html mit einem reCAPTCHA-Aktionstoken zulässt, dessen Score nicht kleiner als 0.8 ist.

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 entspricht dem ersten Beispiel, erfordert aber zusätzlich, dass das Aktionstoken mit einem reCAPTCHA-Schlüssel von example-site-key-1 oder example-site-key-2 ausgestellt wird:

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 folgendes Format in der Google Cloud CLI, um eine Regel zum Weiterleiten des Traffics an eine vom Nutzer konfigurierte URL zu erstellen:

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: Priorität, mit der Sie die Regel erstellen möchten
  • 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

Verwenden Sie das folgende Format in der gcloud CLI, um eine Regel zu erstellen, die Traffic zulässt, aber benutzerdefinierte Header und benutzerdefinierte statische Werte hinzufügt, bevor sie an geschützte Back-Ends gesendet werden:

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 Sprachausdruck für benutzerdefinierte Regeln, der mit dem Traffic übereinstimmt, für den Sie die reCAPTCHA-Bewertung erzwingen möchten
  • SRC_IP_RANGE ist ein IP-Adressbereich. Mit dieser Option können Sie die reCAPTCHA-Bewertung für alle Anfragen aus diesem Bereich erzwingen.
  • 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 Wert unter 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