Les règles de stratégie de sécurité Google Cloud Armor qui filtrent en fonction d'une adresse IP utilisent généralement l'adresse IP du client de l'appelant. Lorsque vos services sont derrière un intermédiaire, tel qu'un réseau de diffusion de contenu (CDN) tiers, l'adresse IP du client dans le champ origin.ip est celle du dernier intermédiaire, et non celle du client d'origine.
La fonctionnalité d'adresse IP de l'utilisateur vous permet de configurer un champ alternatif, origin.user_ip, à résoudre à partir d'un en-tête renseigné par le fournisseur en amont. Vous pouvez ensuite utiliser le champ origin.user_ip dans les règles de votre stratégie de sécurité pour spécifier l'adresse IP utilisée dans ces fonctionnalités. Vous pouvez configurer l'option userIpRequestHeaders[] dans le champ advancedOptionsConfig de la stratégie de sécurité lorsque vous utilisez origin.user_ip.
Fonctionnement des adresses IP des utilisateurs
Vous configurez Cloud Armor pour extraire l'adresse IP de l'utilisateur final à partir d'un en-tête de requête spécifique. Cette valeur remplit le champ origin.user_ip, que vous pouvez ensuite utiliser dans les règles de votre stratégie de sécurité.
Si les en-têtes spécifiés dans userIpRequestHeaders[] n'existent pas ou si leurs valeurs ne sont pas des adresses IP valides, Cloud Armor utilise à la place l'adresse IP du client (origin.ip). L'exemple suivant montre une comparaison directe pour le cas par défaut.
origin.ip != origin.user_ip
Les exemples suivants montrent comment utiliser origin.user_ip dans le langage des règles, avec Google Threat Intelligence et dans les groupes d'adresses.
inIpRange
inIpRange(origin.user_ip, '9.9.9.0/24')
Pour en savoir plus sur l'utilisation de inIpRange avec origin.user_ip, consultez Attributs.
Google Threat Intelligence
evaluateThreatIntelligence('iplist-known-malicious-ips', origin.user_ip)
Pour en savoir plus, consultez Appliquer Google Threat Intelligence.
Groupes d'adresses
evaluateAddressGroup('example-address-group', origin.user_ip)
Pour en savoir plus, consultez Configurer des groupes d'adresses.
Groupes d'adresses au niveau de l'organisation
evaluateOrganizationAddressGroup('example-org-address-group', origin.user_ip)
Pour en savoir plus, consultez Utiliser des groupes d'adresses au niveau de l'organisation.
Bonnes pratiques
Étant donné que origin.user_ip est résolu à partir d'un en-tête de requête qu'un client non fiable peut manipuler, vous devez valider que le trafic provient d'une source en amont fiable.
Pour valider la source en amont, créez une règle de sécurité avec au moins deux règles. La première règle, qui a une priorité plus élevée, vérifie que l'adresse IP du client immédiat (origin.ip) appartient à votre fournisseur en amont de confiance. La deuxième règle, de priorité inférieure, applique la logique souhaitée à l'aide du champ origin.user_ip.
Par exemple, vous pouvez créer un règlement avec les deux règles suivantes :
- Règle 1 :
evaluateThreatIntelligence('iplist-public-clouds', origin.ip) - Règle 2 :
inIpRange(origin.user_ip, '9.9.9.0/24')
Étapes suivantes
- Configurer les attributs de langage des règles personnalisées
- Appliquer Google Threat Intelligence
- Configurer des groupes d'adresses
- Utiliser des groupes d'adresses au niveau de l'organisation