Las reglas de la política de seguridad de Google Cloud Armor que filtran según una dirección IP
suelen usar la IP del cliente del emisor. Cuando tus servicios están detrás de un
intermediario, como una red de distribución de contenidos (CDN) de terceros, la IP del cliente
en el campo origin.ip es la dirección IP del último intermediario, no la del
cliente original.
La función de IP del usuario te permite configurar un campo alternativo, origin.user_ip, para
resolver desde un encabezado que propaga el proveedor upstream. Luego, puedes usar el campo origin.user_ip en las reglas de tu política de seguridad para especificar la dirección IP que se usa en esas funciones. Puedes configurar la opción userIpRequestHeaders[]
en el campo advancedOptionsConfig de la política de seguridad cuando uses
origin.user_ip.
Cómo funcionan las direcciones IP de los usuarios
Configuras Cloud Armor para extraer la dirección IP del usuario final de un encabezado de la solicitud específico. Este valor propaga el campo origin.user_ip, que
puedes usar en tus reglas de política de seguridad.
Si los encabezados especificados en userIpRequestHeaders[] no existen o si sus
valores no son direcciones IP válidas, Cloud Armor recurre a la
dirección IP del cliente (origin.ip). En el siguiente ejemplo, se muestra una comparación directa para el caso predeterminado.
origin.ip != origin.user_ip
En los siguientes ejemplos, se muestra cómo usar origin.user_ip en el lenguaje de reglas, con Google Threat Intelligence y en grupos de direcciones.
inIpRange
inIpRange(origin.user_ip, '9.9.9.0/24')
Para obtener más información sobre el uso de inIpRange con origin.user_ip, consulta Atributos.
Google Threat Intelligence
evaluateThreatIntelligence('iplist-known-malicious-ips', origin.user_ip)
Para obtener más información, consulta Aplica Google Threat Intelligence.
Grupos de direcciones
evaluateAddressGroup('example-address-group', origin.user_ip)
Para obtener más información, consulta Configura grupos de direcciones.
Grupos de direcciones con permiso de la organización
evaluateOrganizationAddressGroup('example-org-address-group', origin.user_ip)
Para obtener más información, consulta Usa grupos de direcciones con permiso de la organización.
Prácticas recomendadas
Debido a que origin.user_ip se resuelve a partir de un encabezado de la solicitud, que un cliente no confiable puede manipular, debes validar que el tráfico se origine en una fuente upstream confiable.
Para validar la fuente upstream, crea una política de seguridad con al menos dos
reglas. La primera regla, con una prioridad más alta, verifica que la IP del cliente inmediato (origin.ip) pertenezca a tu proveedor ascendente de confianza. La segunda regla,
con una prioridad más baja, aplica la lógica prevista con el campo
origin.user_ip.
Por ejemplo, puedes crear una política con las siguientes dos reglas:
- Regla 1:
evaluateThreatIntelligence('iplist-public-clouds', origin.ip) - Regla 2:
inIpRange(origin.user_ip, '9.9.9.0/24')