Atributos admitidos

Cuando configuras extensiones con complementos o textos destacados, puedes especificar los atributos de solicitud y conexión que se reenviarán a los servicios de extensión. En esta página, se describen los atributos admitidos y se identifican los que están disponibles para cada tipo de extensión.

Si configuras extensiones para reenviar atributos específicos, puedes lograr lo siguiente:

  • Tomar decisiones de enrutamiento dinámico
  • Enriquece los encabezados de la solicitud con información del cliente.
  • Implementa políticas de seguridad personalizadas basadas en la ubicación del cliente o los parámetros de TLS.
  • Generar registros personalizados detallados

Puedes especificar atributos con el campo forwardAttributes en la configuración de YAML para las extensiones de complemento y de texto destacado. Por ejemplo, para las extensiones de tráfico, consulta Configura una extensión de tráfico.

Especifica los atributos con forwardAttributes para los siguientes tipos de extensiones:

  • Extensiones perimetrales de Cloud Load Balancing (LbEdgeExtension) en balanceadores de cargas de aplicaciones externos globales
  • Extensiones de ruta y tráfico de Cloud Load Balancing (LbRouteExtension, LbTrafficExtension) en balanceadores de cargas de aplicaciones
  • Extensiones de autorización (AuthzExtension) con ext_proc en balanceadores de cargas de aplicaciones
  • Extensiones perimetrales de Media CDN (CdnEdgeExtension) en los servicios de almacenamiento en caché perimetral de Media CDN

Atributos de solicitud

Puedes extraer y reenviar los siguientes atributos de las solicitudes:

Atributo Tipo LbEdge LbRoute LbTraffic Authz CdnEdge Descripción y diferencias de comportamiento
request.method cadena ✓ ✓ ✓ ✓ ✓ Es el método de solicitud HTTP, como GET o POST.
request.host cadena ✓ ✓ ✓ ✓ ✓ Es una comodidad equivalente a request.headers['host'].
request.path cadena ✓ ✓ ✓ ✓ ✓ La ruta de URL HTTP solicitada.
request.query cadena ✓ ✓ ✓ ✓ ✓ Es la consulta de URL HTTP con el formato name1=value&name2=value2.
request.scheme cadena ✓ ✓ ✓ ✓ ✓ Es el esquema de URL HTTP (http o https). Los valores están en minúsculas.
request.origin cadena — — ✓ ✓ — Es el valor del encabezado de la solicitud Origin para los casos de uso de uso compartido de recursos de origen cruzado (CORS).
request.user_agent_family cadena ✓ — ✓ — — Es la cadena de familia de usuario-agente analizada. Solo se admite en balanceadores de cargas de aplicaciones externos globales.
request.device_request_type cadena ✓ — ✓ — — Es la categoría de clasificación del dispositivo. Solo se admite en balanceadores de cargas de aplicaciones externos globales.
request.backend_service_name cadena — — ✓ ✓ — Es el servicio de backend de destino. No se aplica a las extensiones perimetrales (LbEdgeExtension o CdnEdgeExtension).
request.backend_service_project_number int — — ✓ ✓ — Es el número de proyecto del servicio de backend en la VPC compartida. No se aplica a las extensiones perimetrales.
request.mcp_method cadena — — — ✓ — Es el nombre del método del Protocolo de contexto del modelo (MCP).

Atributos de conexión

Puedes extraer y reenviar los siguientes atributos de las conexiones:

Atributo Tipo LbEdge LbRoute LbTraffic Authz CdnEdge Descripción y diferencias de comportamiento
source.ip cadena ✓ ✓ ✓ ✓ — La dirección IP de cliente.
source.port int ✓ ✓ ✓ ✓ ✓ Es el número de puerto de origen del cliente.
source.client_region cadena ✓ — ✓ — ✓ Es el código de región ISO-3166-1 o CLDR de dos letras asociado a la dirección IP del cliente (por ejemplo, US o DE).
source.client_region_subdivision cadena ✓ — ✓ — — Es el código de subdivisión de la región, como el de un estado o una provincia. Solo se admite en balanceadores de cargas de aplicaciones externos globales.
source.client_city cadena ✓ — ✓ — — Es la ciudad asociada a la dirección IP del cliente. Solo se admite en balanceadores de cargas de aplicaciones externos globales.
source.client_city_lat_long cadena ✓ — ✓ — — La latitud y la longitud asociadas con la ciudad del cliente. Solo se admite en balanceadores de cargas de aplicaciones externos globales.
destination.ip cadena — — ✓ ✓ — La dirección IP del balanceador de cargas al que se conecta el cliente.
destination.port int — — ✓ ✓ — El número de puerto de destino al que se conecta el cliente.
connection.client_encrypted booleano — — ✓ ✓ — El valor es true si la conexión entre el cliente y el balanceador de cargas está encriptada (con HTTPS, HTTP/2 o HTTP/3); de lo contrario, es false.
connection.protocol cadena — — ✓ ✓ — Es el protocolo HTTP que se usa para la comunicación (HTTP/1.0, HTTP/1.1, HTTP/2 o HTTP/3).
connection.sni cadena ✓ — ✓ ✓ ✓ La indicación de nombre del servidor (SNI) solicitada de la conexión TLS downstream.
connection.tls_version cadena ✓ — ✓ ✓ ✓ Es la versión de TLS negociada con el cliente (TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 o QUIC).
connection.tls_cipher_suite cadena — — ✓ ✓ — Es el conjunto de algoritmos de cifrado hexadecimal de cuatro dígitos que se negocia durante el protocolo de enlace TLS, por ejemplo, 009C.
connection.tls_ja3_fingerprint cadena — — ✓ — — La huella digital de TLS/SSL de JA3 si el cliente se conecta con HTTPS, HTTP/2 o HTTP/3.
connection.tls_ja4_fingerprint cadena ✓ — ✓ — — La huella digital de TLS/SSL de JA4 si el cliente se conecta con HTTPS, HTTP/2 o HTTP/3.
connection.client_rtt_msec int — — ✓ ✓ — Es el tiempo de ida y vuelta (RTT) del cliente medido en milisegundos.
connection.sha256_peer_certificate_digest cadena ✓ — ✓ ✓ — Es el hash del certificado de par SHA-256 con codificación hexadecimal.
connection.client_cert_present booleano — — ✓ ✓ — El valor es true si el cliente proporcionó un certificado durante el protocolo de enlace TLS; de lo contrario, es false.
connection.client_cert_chain_verified booleano — — ✓ ✓ — El valor es true si la cadena de certificados de cliente se verifica con un TrustStore configurado; de lo contrario, es false.
connection.client_cert_error cadena — — ✓ ✓ — Son cadenas predefinidas que representan las condiciones de error de mTLS. Para obtener más información, consulta los modos de validación del cliente de mTLS.
connection.client_cert_serial_number cadena — — ✓ ✓ — El número de serie del certificado de cliente.
connection.client_cert_spiffe_id cadena — — ✓ ✓ — El ID de SPIFFE del campo Nombre alternativo del sujeto (SAN).
connection.client_cert_uri_sans cadena — — ✓ ✓ — Es una lista separada por comas y codificada en Base64 de extensiones de SAN de URI extraídas del certificado de cliente.
connection.client_cert_dnsname_sans cadena — — ✓ ✓ — Es una lista separada por comas y codificada en Base64 de extensiones de SAN de DNSName extraídas del certificado de cliente.
connection.client_cert_valid_not_before cadena — — ✓ ✓ — La marca de tiempo (formato RFC 3339) antes de la cual el certificado de cliente no es válido.
connection.client_cert_valid_not_after cadena — — ✓ ✓ — La marca de tiempo (formato RFC 3339) después de la cual el certificado de cliente no es válido.
connection.client_cert_issuer_dn cadena — — ✓ ✓ — La codificación DER codificada en Base64 del campo Issuer del certificado.
connection.client_cert_subject_dn cadena — — ✓ ✓ — La codificación DER codificada en Base64 del campo Subject del certificado.
connection.client_cert_leaf cadena — — ✓ ✓ — Es el certificado de hoja del cliente codificado en Base64 para una conexión mTLS establecida y validada (RFC 9440).
connection.client_cert_chain cadena — — ✓ ✓ — La cadena de certificados de cliente codificada en Base64 y delimitada por comas en el orden TLS estándar, sin incluir el certificado de hoja (RFC 9440).

Limitaciones

  • Disponibilidad de atributos: No todos los atributos son compatibles con todos los tipos de extensiones. Para obtener más información, consulta la tabla de esta página.

  • Configuración obligatoria: Para enviar atributos a la extensión, debes enumerar de forma explícita los atributos en el campo forwardAttributes de la configuración de la extensión. Si no incluyes un atributo en este campo, el balanceador de cargas o Media CDN no reenvía ese atributo específico a tu extensión.

  • Límites de tamaño: Puedes configurar un máximo de 16 atributos para una sola extensión.

  • Atributos de mTLS: Los atributos del certificado de cliente (connection.client_cert_*) se propagan en los datos que se pasan a tu extensión solo si habilitaste mTLS y el cliente presenta un certificado.