Le regole delle policy di sicurezza di Google Cloud Armor che filtrano in base a un indirizzo IP in genere utilizzano l'IP client del chiamante. Quando i tuoi servizi si trovano dietro un intermediario, ad esempio una rete CDN (Content Delivery Network) di terze parti, l'IP client nel campo origin.ip è l'indirizzo IP dell'ultimo intermediario, non del client originale.
La funzionalità IP utente ti consente di configurare un campo alternativo, origin.user_ip, da risolvere da un'intestazione compilata dal provider upstream. Puoi quindi utilizzare il campo origin.user_ip nelle regole delle policy di sicurezza per specificare l'indirizzo IP utilizzato in queste funzionalità. Puoi configurare l'opzione userIpRequestHeaders[] nel campo advancedOptionsConfig della policy di sicurezza quando utilizzi origin.user_ip.
Come funzionano gli indirizzi IP utente
Devi configurare Cloud Armor in modo che estragga l'indirizzo IP dell'utente finale da un'intestazione della richiesta specifica. Questo valore compila il campo origin.user_ip, che puoi poi utilizzare nelle regole delle policy di sicurezza.
Se le intestazioni specificate in userIpRequestHeaders[] non esistono o se i loro valori non sono indirizzi IP validi, Cloud Armor ricorre all'indirizzo IP di origine del client (origin.ip). L'esempio seguente mostra un confronto diretto per lo scenario predefinito.
origin.ip != origin.user_ip
Gli esempi seguenti mostrano come utilizzare origin.user_ip nel linguaggio di regole, con Google Threat Intelligence e nei gruppi di indirizzi.
inIpRange
inIpRange(origin.user_ip, '9.9.9.0/24')
Per saperne di più sull'utilizzo di inIpRange con origin.user_ip, consulta Attributi.
Google Threat Intelligence
evaluateThreatIntelligence('iplist-known-malicious-ips', origin.user_ip)
Per saperne di più, consulta Applica Google Threat Intelligence.
Gruppi di indirizzi
evaluateAddressGroup('example-address-group', origin.user_ip)
Per saperne di più, consulta Configura i gruppi di indirizzi.
Gruppi di indirizzi con ambito a livello di organizzazione
evaluateOrganizationAddressGroup('example-org-address-group', origin.user_ip)
Per saperne di più, consulta Utilizza gruppi di indirizzi con ambito a livello di organizzazione.
Best practice
Poiché origin.user_ip viene risolto da un'intestazione della richiesta, che un client non attendibile può manipolare, devi verificare che il traffico provenga da un'origine upstream attendibile.
Per verificare l'origine upstream, crea una policy di sicurezza con almeno due regole. La prima regola, con una priorità più alta, verifica che l'IP di origine immediata (origin.ip) appartenga al tuo provider upstream attendibile. La seconda regola, con una priorità inferiore, applica la logica che intendi usare utilizzando il campo origin.user_ip.
Ad esempio, puoi creare una policy con le seguenti due regole:
- Regola 1:
evaluateThreatIntelligence('iplist-public-clouds', origin.ip) - Regola 2:
inIpRange(origin.user_ip, '9.9.9.0/24')
Passaggi successivi
- Configura gli attributi del linguaggio delle regole personalizzate
- Applica Google Threat Intelligence
- Configura i gruppi di indirizzi
- Utilizza gruppi di indirizzi con ambito a livello di organizzazione