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ámicas
- 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, 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, ruta, tráfico |
request.path |
La ruta de URL HTTP solicitada. | autorizació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, 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, 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. | ruta, tráfico |
source.port |
El puerto de origen del cliente. | 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. |
tráfico |
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, 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. |
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, 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 el registro de conjuntos de algoritmos de cifrado 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. |
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, separada por 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, separada por 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 (string con formato 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 (en el 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
tiene más de 512 bytes, se agrega la cadena
client_cert_issuer_dn_exceeded_size_limit en client_cert_error y
se establece client_cert_issuer_dn 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 en client_cert_error y
se establece client_cert_subject_dn 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 DER binario está codificado en Base64 y delimitado con dos puntos en cada lado. 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, la cadena
client_cert_validated_chain_exceeded_size_limit se
agrega en client_cert_error, y
client_cert_chain se establece en una cadena vacía. |
autorización, tráfico |