Auf dieser Seite finden Sie Informationen zum Konfigurieren von Cloud Armor-Sicherheitsrichtlinienregeln 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 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 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:
- Cloud Armor-Sicherheitsrichtlinien konfigurieren, ändern, aktualisieren und löschen
- Mit den 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:
- Cloud Armor-Sicherheitsrichtlinie für einen Back-End-Dienst festlegen
- Mit den folgenden API-Methoden:
BackendServices setSecurityPolicy
BackendServices list
(nurgcloud
)
Nutzer mit der Rolle „Sicherheitsadministrator“ (roles/iam.securityAdmin
) und der Rolle „Compute-Netzwerkadministrator“ können sich 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 Cloud Armor verwenden möchten, müssen Sie Ihren reCAPTCHA WAF-Websiteschlüssel (reCAPTCHA-Schlüssel) vom Typ CHALLENGEPAGE
einer Sicherheitsrichtlinie zuordnen. 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 die Verknüpfung aufzuheben:
gcloud compute security-policies update SECURITY_POLICY \ --recaptcha-redirect-site-key SITE_KEY
Ersetzen Sie Folgendes:
SECURITY_POLICY
: der Name der SicherheitsrichtlinieSITE_KEY
: Ihr reCAPTCHA-SchlüsselCHALLENGEPAGE
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"
Zuordnung 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
Wenn Sie Ihren reCAPTCHA-Schlüssel mit Ihrer Sicherheitsrichtlinie verknüpft haben, können Sie in dieser Richtlinie eine Regel erstellen, um Traffic für die reCAPTCHA-Prüfung intern weiterzuleiten. Verwenden Sie das folgende Format in der gcloud CLI, um Traffic umzuleiten:
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 Regel erstellen möchtenSECURITY_POLICY
: der Name der SicherheitsrichtlinieEXPRESSION
: Der Sprachausdruck für benutzerdefinierte Regeln, der mit dem Traffic übereinstimmt, für den Sie die reCAPTCHA-Prüfung erzwingen möchten.SRC_IP_RANGE
ist ein IP-Adressbereich. Damit 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 Cloud Armor.
Verwenden Sie token.recaptcha_session.ATTRIBUTE
, 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 Aktions-Token kann von einer Webanwendung, einer iOS-Anwendung oder einer Android-Anwendung stammen, während ein Sitzungs-Token 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 allen diesen Plattformen. Um Tokens von verschiedenen Plattformen zu unterscheiden und Token-Diebstahl zu verhindern, empfehlen wir, reCAPTCHA-Schlüssel zuzuordnen, wenn Sie Regeln konfigurieren, die diese Ausdrücke verwenden.
Beispiele
Im ersten Beispiel wird eine Regel erstellt, die Traffic für /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 ist dasselbe wie das erste, erfordert aber auch, 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 für /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
: die Priorität, mit der Sie die Regel erstellen möchtenSECURITY_POLICY
: der Name der SicherheitsrichtlinieEXPRESSION
: Der Sprachausdruck für benutzerdefinierte Regeln, der mit dem Traffic übereinstimmt, für den Sie die reCAPTCHA-Prüfung erzwingen möchten.SRC_IP_RANGE
ist ein IP-Adressbereich. Damit können Sie die reCAPTCHA-Bewertung für alle Anfragen aus diesem Bereich erzwingen.REDIRECT_URL
: die URL, zu der Sie Traffic weiterleiten möchten
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öchtenSECURITY_POLICY
: der Name der SicherheitsrichtlinieEXPRESSION
: Der Sprachausdruck für benutzerdefinierte Regeln, der mit dem Traffic übereinstimmt, für den Sie die reCAPTCHA-Prüfung erzwingen möchten.SRC_IP_RANGE
ist ein IP-Adressbereich. Damit können Sie die reCAPTCHA-Bewertung für alle Anfragen aus diesem Bereich erzwingen.HEADER_#
: Der Name des Anfrageheaders, mit dem Sie die Anfrage versehen möchten.VALUE_#
: Der Wert des Anfrageheaders, mit dem Sie die Anfrage versehen möchten.
Im folgenden Beispiel wird eine Regel erstellt, die Traffic für /login.html
zulässt, sofern die Anfrage auch einen reCAPTCHA-Aktionstoken-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"