Google Cloud Armor-Sicherheitsrichtlinienregeln, die nach einer IP-Adresse filtern, verwenden in der Regel die Client-IP-Adresse des Aufrufers. Wenn sich Ihre Dienste hinter einem Vermittler befinden, z. B. einem Content Delivery Network (CDN) eines Drittanbieters, ist die Client-IP-Adresse im Feld origin.ip die IP-Adresse des letzten Vermittlers, nicht die des ursprünglichen Clients.
Mit der Nutzer-IP-Funktion können Sie ein alternatives Feld, origin.user_ip, konfigurieren, das aus einem Header aufgelöst wird, den der Upstream-Anbieter füllt. Anschließend können Sie das Feld origin.user_ip in den Regeln Ihrer Sicherheitsrichtlinie verwenden, um die IP-Adresse anzugeben, die in diesen Funktionen verwendet wird. Sie können die Option userIpRequestHeaders[] im Feld advancedOptionsConfig der Sicherheitsrichtlinie konfigurieren, wenn Sie origin.user_ip verwenden.
Funktionsweise von Nutzer-IP-Adressen
Sie konfigurieren Cloud Armor so, dass die IP-Adresse des Endnutzers aus einem bestimmten Anfrageheader extrahiert wird. Dieser Wert füllt das Feld origin.user_ip, das Sie dann in Ihren Sicherheitsrichtlinienregeln verwenden können.
Wenn die in userIpRequestHeaders[] angegebenen Header nicht vorhanden sind oder ihre Werte keine gültigen IP-Adressen sind, greift Cloud Armor stattdessen auf die Client-IP-Adresse (origin.ip) zurück. Das folgende Beispiel zeigt einen direkten Vergleich für den Standardfall.
origin.ip != origin.user_ip
In den folgenden Beispielen wird gezeigt, wie Sie origin.user_ip in der Regelsprache, mit Google Threat Intelligence und in Adressgruppen verwenden.
inIpRange
inIpRange(origin.user_ip, '9.9.9.0/24')
Weitere Informationen zur Verwendung von inIpRange mit origin.user_ip finden Sie unter Attribute.
Google Threat Intelligence
evaluateThreatIntelligence('iplist-known-malicious-ips', origin.user_ip)
Weitere Informationen finden Sie unter Google Threat Intelligence anwenden.
Adressgruppen
evaluateAddressGroup('example-address-group', origin.user_ip)
Weitere Informationen finden Sie unter Adressgruppen konfigurieren.
Adressgruppen auf Organisationsebene
evaluateOrganizationAddressGroup('example-org-address-group', origin.user_ip)
Weitere Informationen finden Sie unter Adressgruppen auf Organisationsebene verwenden.
Best Practices
Da origin.user_ip aus einem Anfrageheader aufgelöst wird, der von einem nicht vertrauenswürdigen Client manipuliert werden kann, müssen Sie prüfen, ob der Traffic von einer vertrauenswürdigen Upstream-Quelle stammt.
Erstellen Sie eine Sicherheitsrichtlinie mit mindestens zwei Regeln, um die Upstream-Quelle zu validieren. Die erste Regel mit einer höheren Priorität prüft, ob die unmittelbare Client-IP (origin.ip) zu Ihrem vertrauenswürdigen Upstream-Anbieter gehört. Die zweite Regel mit einer niedrigeren Priorität wendet die gewünschte Logik mithilfe des Felds origin.user_ip an.
Sie können beispielsweise eine Richtlinie mit den folgenden beiden Regeln erstellen:
- Regel 1:
evaluateThreatIntelligence('iplist-public-clouds', origin.ip) - Regel 2:
inIpRange(origin.user_ip, '9.9.9.0/24')