支持的属性

使用插件或标注配置扩展程序时,您可以指定要转发到扩展程序服务的请求和连接属性。本页面介绍了支持的属性,并指出了每种扩展程序类型可用的属性。

通过将扩展程序配置为转发特定属性,您可以实现以下目标:

  • 做出动态路由决策。
  • 使用客户端信息丰富请求标头。
  • 根据客户端位置或 TLS 参数实施自定义安全政策。
  • 生成详细的自定义日志。

您可以在插件和标注扩展程序的 YAML 配置中使用 forwardAttributes 字段指定属性。例如,对于流量扩展,请参阅配置流量扩展。

为以下类型的扩展程序指定具有 forwardAttributes 的属性:

  • 全球外部应用负载均衡器上的 Cloud Load Balancing 边缘扩展程序 (LbEdgeExtension)
  • 应用负载均衡器上的 Cloud Load Balancing 路由和流量扩展程序(LbRouteExtension、LbTrafficExtension)
  • 在应用负载均衡器上使用 ext_proc 的授权扩展 (AuthzExtension)
  • 媒体 CDN 边缘缓存服务上的媒体 CDN 边缘扩展程序 (CdnEdgeExtension)

请求属性

您可以从请求中提取并转发以下属性:

属性 类型 LbEdge LbRoute LbTraffic Authz CdnEdge 说明和行为差异
request.method 字符串 ✓ ✓ ✓ ✓ ✓ HTTP 请求方法,例如 GET 或 POST。
request.host 字符串 ✓ ✓ ✓ ✓ ✓ 等同于 request.headers['host'] 的便捷方法。
request.path 字符串 ✓ ✓ ✓ ✓ ✓ 所请求的 HTTP 网址路径。
request.query 字符串 ✓ ✓ ✓ ✓ ✓ 采用 name1=value&name2=value2 格式的 HTTP 网址查询。
request.scheme 字符串 ✓ ✓ ✓ ✓ ✓ HTTP 网址协议(http 或 https)。值采用小写形式。
request.origin 字符串 — — ✓ ✓ — 跨域资源共享 (CORS) 用例的 Origin 请求标头的值。
request.user_agent_family 字符串 ✓ — ✓ — — 解析后的用户代理系列字符串。仅在全球外部应用负载均衡器上受支持。
request.device_request_type 字符串 ✓ — ✓ — — 设备分类类别。仅在全球外部应用负载均衡器上受支持。
request.backend_service_name 字符串 — — ✓ ✓ — 目标后端服务。不适用于边缘扩展程序(LbEdgeExtension 或 CdnEdgeExtension)。
request.backend_service_project_number 整数 — — ✓ ✓ — 共享 VPC 中后端服务的项目编号。不适用于 Edge 扩展程序。
request.mcp_method 字符串 — — — ✓ — Model Context Protocol (MCP) 方法名称。

连接特性

您可以从连接中提取和转发以下属性:

属性 类型 LbEdge LbRoute LbTraffic Authz CdnEdge 说明和行为差异
source.ip 字符串 ✓ ✓ ✓ ✓ — 客户端 IP 地址。
source.port 整数 ✓ ✓ ✓ ✓ ✓ 客户端来源端口号。
source.client_region 字符串 ✓ — ✓ — ✓ 与客户端 IP 地址关联的由两个字母组成的 ISO-3166-1 或 CLDR 区域代码(例如 US 或 DE)。
source.client_region_subdivision 字符串 ✓ — ✓ — — 地区下属行政单位代码,例如州或省。 仅在全局外部应用负载均衡器上受支持。
source.client_city 字符串 ✓ — ✓ — — 与客户端 IP 地址关联的城市。仅在全球外部应用负载均衡器上受支持。
source.client_city_lat_long 字符串 ✓ — ✓ — — 与客户端所在城市关联的纬度和经度。 仅在全局外部应用负载均衡器上受支持。
destination.ip 字符串 — — ✓ ✓ — 客户端所连接的负载均衡器的 IP 地址。
destination.port 整数 — — ✓ ✓ — 客户端所连接的目标端口号。
connection.client_encrypted 布尔值 — — ✓ ✓ — 如果客户端和负载均衡器之间的连接已加密(使用 HTTPS、HTTP/2 或 HTTP/3),则值为 true;否则为 false。
connection.protocol 字符串 — — ✓ ✓ — 用于通信的 HTTP 协议(HTTP/1.0、HTTP/1.1、HTTP/2 或 HTTP/3)。
connection.sni 字符串 ✓ — ✓ ✓ ✓ 下行 TLS 连接中所请求的服务器名称指示 (SNI)。
connection.tls_version 字符串 ✓ — ✓ ✓ ✓ 与客户端协商的 TLS 版本(TLSv1、TLSv1.1、TLSv1.2、TLSv1.3 或 QUIC)。
connection.tls_cipher_suite 字符串 — — ✓ ✓ — 在 TLS 握手期间协商的四位十六进制加密套件,例如 009C。
connection.tls_ja3_fingerprint 字符串 — — ✓ — — JA3 TLS/SSL 指纹(如果客户端使用 HTTPS、HTTP/2 或 HTTP/3 进行连接)。
connection.tls_ja4_fingerprint 字符串 ✓ — ✓ — — JA4 TLS/SSL 指纹(如果客户端使用 HTTPS、HTTP/2 或 HTTP/3 进行连接)。
connection.client_rtt_msec 整数 — — ✓ ✓ — 客户端往返时间 (RTT),以毫秒为单位。
connection.sha256_peer_certificate_digest 字符串 ✓ — ✓ ✓ — 十六进制编码的 SHA-256 对等证书哈希。
connection.client_cert_present 布尔值 — — ✓ ✓ — 如果客户端在 TLS 握手期间提供了证书,则值为 true;否则为 false。
connection.client_cert_chain_verified 布尔值 — — ✓ ✓ — 如果根据配置的 TrustStore 验证了客户端证书链,则值为 true;否则为 false。
connection.client_cert_error 字符串 — — ✓ ✓ — 代表 mTLS 错误情况的预定义字符串。如需了解详情,请参阅 mTLS 客户端验证模式。
connection.client_cert_serial_number 字符串 — — ✓ ✓ — 客户端证书的序列号。
connection.client_cert_spiffe_id 字符串 — — ✓ ✓ — 主题备用名称 (SAN) 字段中的 SPIFFE ID。
connection.client_cert_uri_sans 字符串 — — ✓ ✓ — 从客户端证书中提取的 URI SAN 扩展的 Base64 编码列表(以逗号分隔)。
connection.client_cert_dnsname_sans 字符串 — — ✓ ✓ — 从客户端证书中提取的 DNSName SAN 扩展的 Base64 编码列表(以逗号分隔)。
connection.client_cert_valid_not_before 字符串 — — ✓ ✓ — 在此时间戳(RFC 3339 格式)之前,客户端证书无效。
connection.client_cert_valid_not_after 字符串 — — ✓ ✓ — 在此时间戳(RFC 3339 格式)之后,客户端证书无效。
connection.client_cert_issuer_dn 字符串 — — ✓ ✓ — 证书 Issuer 字段的 Base64 编码 DER 编码。
connection.client_cert_subject_dn 字符串 — — ✓ ✓ — 证书 Subject 字段的 Base64 编码 DER 编码。
connection.client_cert_leaf 字符串 — — ✓ ✓ — 已建立且经过验证的 mTLS 连接的 Base64 编码客户端叶证书 (RFC 9440)。
connection.client_cert_chain 字符串 — — ✓ ✓ — 采用 Base64 编码的客户端证书链,以英文逗号分隔,按标准 TLS 顺序排列,不包括叶证书 (RFC 9440)。

限制

  • 属性可用性:并非所有属性都支持所有扩展程序类型。如需了解详情,请参阅本页中的表格。

  • 必需配置:如需将属性发送到扩展程序,您必须在扩展程序配置的 forwardAttributes 字段中明确列出这些属性。如果您未在此字段中列出某个属性,则负载均衡器或 Media CDN 不会将该特定属性转发到您的扩展程序。

  • 大小限制:您最多可以为单个扩展程序配置 16 个属性。

  • mTLS 属性:仅当您启用了 mTLS 且客户端出示了证书时,系统才会在传递给扩展程序的数据中填充客户端证书属性 (connection.client_cert_*)。