Cuando configuras extensiones con complementos o callouts para servicios de backend basados en ext-proc, puedes especificar los atributos de solicitud y conexión para reenviar a esos servicios. En esta página, se describen los atributos admitidos y se especifica cuáles 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
- Enriquecer los encabezados de solicitud con información del cliente
- Implementar 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 extensiones de complementos y callouts. Por ejemplo, para las extensiones de tráfico, consulta Configura una extensión de tráfico.
La especificación de atributos con forwardAttributes es compatible con las extensiones de autorización,
ruta y tráfico implementadas con el
ext_proc
protocolo en los balanceadores de cargas de aplicaciones regionales.
En la siguiente tabla, se enumeran los atributos y las extensiones que los admiten:
| Atributo | Descripción | Extensiones |
|---|---|---|
request.origin |
El valor del encabezado de origen en una solicitud de casos de uso de uso compartido de recursos entre dominios (CORS) . | tráfico |
request.method |
Es el método de solicitud HTTP, como GET o
POST. |
autorización, conexión de integración, ruta, tráfico |
request.mcp_method |
Es el método de solicitud HTTP, como GET o
POST. |
autorización |
request.host |
Es un equivalente conveniente a request.headers['host']. |
autorización, conexión de integración, ruta, tráfico |
request.path |
La ruta de URL HTTP solicitada. | autorización, conexión de integración, ruta, tráfico |
request.query |
Es la consulta de URL HTTP en el formato name1=value&name2=value2,
como aparece en la primera línea de la solicitud HTTP. No se realiza ninguna decodificación. |
autorización, conexión de integración, ruta, tráfico |
request.scheme |
Es el esquema de URL HTTP, como HTTP o
HTTPS. Los valores de este atributo están en minúsculas. |
autorización, conexión de integración, ruta, tráfico |
request.backend_service_name |
El servicio de backend al que se reenvía la solicitud. | autorización, tráfico |
request.backend_service_project_number |
Cuando se usa la VPC compartida, el número de proyecto del servicio de backend al que se reenvía la solicitud. | autorización, tráfico |
request.mcp_param |
El parámetro MCP. | autorización |
source.ip |
La dirección IP del cliente. | conexión de integración, ruta, tráfico |
source.port |
El puerto de origen del cliente. | conexión de integración, ruta, tráfico |
source.client_region |
El país o la región asociado a la dirección IP del cliente.
El valor es un código regional CLDR de Unicode, como US
o FR. Para la mayoría de los países, estos códigos corresponden
directamente a los códigos ISO-3166-2. |
conexión de integración, tráfico |
source.client_region_subdivision |
La subdivisión (por ejemplo, una provincia o un estado) del país
asociado a la dirección IP del cliente. Este es un ID de subdivisión CLDR de Unicode, como USCA o CAON. Estos
códigos Unicode se derivan de las subdivisiones definidas por el
estándar ISO-3166-2. |
conexión de integración |
source.client_city |
El nombre de la ciudad desde la que se originó la solicitud, por
ejemplo, Mountain View para Mountain View, California.
No hay una lista canónica de valores válidos para esta variable.
Los nombres de las ciudades pueden contener letras, números, espacios y los
siguientes caracteres de US-ASCII: !#$%&'*+-.^_`|~. |
conexión de integración |
source.client_city_lat_long |
La latitud y longitud de la ciudad en la que se originó la solicitud, por ejemplo, 37.386051,-122.083851 para una solicitud de Mountain View. |
conexión de integración |
connection.client_encrypted |
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. |
tráfico |
connection.protocol |
El protocolo HTTP que se usa para la comunicación entre el cliente y
el balanceador de cargas. Puede ser uno de HTTP/1.0,
HTTP/1.1, HTTP/2,
o HTTP/3. |
tráfico |
destination.ip |
La dirección IP del balanceador de cargas al que se conecta el cliente.
Este valor puede ser útil cuando varios balanceadores de cargas comparten
backends comunes. Es lo mismo que la última dirección IP en el
X-Forwarded-For encabezado. |
tráfico |
destination.port |
El número de puerto de destino al que se conecta el cliente. | tráfico |
connection.sni |
Indicación del nombre del servidor (como se define en RFC 6066), si el cliente la proporciona durante el protocolo de enlace de TLS o QUIC. El nombre de host se pasa a minúsculas y se quita cualquier punto final. | autorización, conexión de integración, tráfico |
connection.tls_version |
La versión de TLS negociada entre el cliente y el balanceador de cargas durante el protocolo de enlace SSL. Los valores posibles incluyen:
TLSv1, TLSv1.1, TLSv1.2,
y TLSv1.3. Si el cliente se conecta con QUIC
en lugar de TLS, el valor es QUIC. |
conexión de integración, tráfico |
connection.sha256_peer_certificate_digest |
El hash SHA256 con codificación hexadecimal del certificado con intercambio de tráfico en la conexión TLS downstream, si está presente. | autorización, conexión de integración, tráfico |
connection.tls_cipher_suite |
El conjunto de algoritmos de cifrado negociado durante el protocolo de enlace TLS. El valor
son cuatro dígitos hexadecimales definidos por Cipher Suite
Registry de TLS de IANA, por ejemplo, 009C para
TLS_RSA_WITH_AES_128_GCM_SHA256. Este valor está vacío
para QUIC y las conexiones de cliente no encriptadas. |
tráfico |
connection.tls_ja3_fingerprint |
La huella digital de TLS/SSL de JA3 si el cliente se conecta con
HTTPS, HTTP/2, o HTTP/3. |
tráfico |
connection.tls_ja4_fingerprint |
La huella digital de TLS/SSL de JA4 si el cliente se conecta con HTTPS,
HTTP/2, o HTTP/3. |
conexión de integración, tráfico |
connection.client_cert_present |
El valor es true si el cliente proporcionó un
certificado durante el protocolo de enlace TLS, de lo contrario, es false. |
autorización, tráfico |
connection.client_cert_chain_verified |
El valor es true si la cadena de certificados de cliente se
verifica con un TrustStore configurado, de lo contrario,
es false. |
autorización, tráfico |
connection.client_cert_error |
Strings predefinidas que representan las condiciones de error. Para obtener más información sobre las strings de error, consulta los modos de validación de cliente mTLS. | autorización, tráfico |
connection.client_cert_serial_number |
El número de serie del certificado de cliente. Si el número de serie
supera los 50 bytes, se establece client_cert_error en client_cert_serial_number_exceeded_size_limit,
y el número de serie se establece en una string vacía. |
autorización, tráfico |
connection.client_cert_spiffe_id |
El ID de SPIFFE del campo Nombre alternativo del sujeto (SAN). Si
el valor no es válido o supera los 2,048 bytes, el ID de SPIFFE se
establece en una string vacía. Si el ID de SPIFFE supera los 2048
bytes, se establece client_cert_error en
client_cert_spiffe_id_exceeded_size_limit. |
autorización, tráfico |
connection.client_cert_uri_sans |
Lista codificada en Base64 de comas de las extensiones de SAN de
tipo URI. Las extensiones de SAN se extraen del
certificado de cliente. El ID de SPIFFE no está incluido en el
client_cert_uri_sans campo. Si
client_cert_uri_sans tiene más de 512 bytes, se establece
client_cert_error en
client_cert_uri_sans_exceeded_size_limit y la
lista separada por comas se establece en una string vacía. |
autorización, tráfico |
connection.client_cert_dnsname_sans |
Lista codificada en Base64 de comas de las extensiones de SAN de
tipo DNSName. Las extensiones de SAN se extraen de
el certificado de cliente. Si client_cert_dnsname_sans
tiene más de 512 bytes, se establece client_cert_error en client_cert_dnsname_sans_exceeded_size_limit,
y la lista separada por comas se establece en una string vacía. |
autorización, tráfico |
connection.client_cert_valid_not_before |
La marca de tiempo (formato de string de fecha RFC 3339) antes de la cual el
certificado de cliente no es válido, por ejemplo,
2022-07-01T18:05:09+00:00.
|
autorización, tráfico |
connection.client_cert_valid_not_after |
La marca de tiempo (formato de string de fecha RFC 3339) después de la cual
el certificado de cliente no es válido, por ejemplo,
2022-07-01T18:05:09+00:00.
|
autorización, tráfico |
connection.client_cert_issuer_dn |
La codificación DER codificada en Base64 del campo Issuer
completo del certificado. Si client_cert_issuer_dn
es más largo que 512 bytes, la cadena
client_cert_issuer_dn_exceeded_size_limit se agrega
a client_cert_error, y
client_cert_issuer_dn se establece en una cadena vacía. |
autorización, tráfico |
connection.client_cert_subject_dn |
La codificación DER codificada en Base64 del campo Subject
completo del certificado. Si client_cert_subject_dn
tiene más de 512 bytes, se agrega la cadena
client_cert_subject_dn_exceeded_size_limit a client_cert_error y
client_cert_subject_dn se establece en una cadena vacía. |
autorización, tráfico |
connection.client_cert_leaf |
El certificado de hoja del cliente para una conexión mTLS establecida
donde el certificado pasó la validación. La codificación del certificado cumple con RFC 9440. Esto significa que el certificado binario DER
está codificado en Base64 y delimitado por dos puntos en ambos lados. Si
client_cert_leaf excede los 16 KB sin codificación, la
cadena client_cert_validated_leaf_exceeded_size_limit
se agrega a client_cert_error, y
client_cert_leaf se establece en una cadena vacía. |
autorización, tráfico |
connection.client_cert_chain |
La lista delimitada por comas de certificados, en orden TLS estándar,
de la cadena de certificados de cliente para una conexión mTLS establecida en la que el certificado de cliente pasó la validación, sin incluir el certificado de hoja. La codificación del certificado cumple con RFC 9440. Si el tamaño combinado de
client_cert_leaf y client_cert_chain
antes de que la codificación en base64 supere los 16 KB, se agrega la cadena
client_cert_validated_chain_exceeded_size_limit a client_cert_error, y
client_cert_chain se establece en una cadena vacía. |
autorización, tráfico |