Atributos compatíveis

Ao configurar extensões usando plug-ins ou chamadas, é possível especificar os atributos de solicitação e conexão a serem encaminhados para os serviços de extensão. Nesta página, descrevemos os atributos de suporte e identificamos aqueles que estão disponíveis para cada tipo de extensão.

Ao configurar extensões para encaminhar atributos específicos, é possível:

  • Tomar decisões de roteamento dinâmico.
  • Enriqueça os cabeçalhos da solicitação com informações do cliente.
  • Implemente políticas de segurança personalizadas com base na localização do cliente ou nos parâmetros de TLS.
  • Gerar registros personalizados detalhados.

É possível especificar atributos com o campo forwardAttributes na configuração YAML para extensões de plug-in e de chamada. Por exemplo, para extensões de tráfego, consulte Configurar uma extensão de tráfego.

Especifique atributos com forwardAttributes para os seguintes tipos de extensões:

  • Extensões de borda do Cloud Load Balancing (LbEdgeExtension) em balanceadores de carga de aplicativo externos globais
  • Extensões de rota e tráfego do Cloud Load Balancing (LbRouteExtension, LbTrafficExtension) em balanceadores de carga de aplicativo
  • Extensões de autorização (AuthzExtension) usando ext_proc em balanceadores de carga de aplicativo
  • Extensões de borda do Media CDN (CdnEdgeExtension) em serviços de armazenamento em cache de borda do Media CDN

Atributos de solicitação

É possível extrair e encaminhar os seguintes atributos de solicitações:

Atributo Tipo LbEdge LbRoute LbTraffic Authz CdnEdge Descrição e diferenças de comportamento
request.method string ✓ ✓ ✓ ✓ ✓ O método de solicitação HTTP, como GET ou POST.
request.host string ✓ ✓ ✓ ✓ ✓ Uma conveniência equivalente a request.headers['host'].
request.path string ✓ ✓ ✓ ✓ ✓ O caminho do URL HTTP solicitado.
request.query string ✓ ✓ ✓ ✓ ✓ A consulta de URL HTTP no formato name1=value&name2=value2.
request.scheme string ✓ ✓ ✓ ✓ ✓ O esquema de URL HTTP (http ou https). Os valores estão em letras minúsculas.
request.origin string — — ✓ ✓ — O valor do cabeçalho da solicitação Origin para casos de uso de compartilhamento de recursos entre origens (CORS).
request.user_agent_family string ✓ — ✓ — — A string analisada da família de user agents. Compatível apenas com balanceadores de carga de aplicativo externos globais.
request.device_request_type string ✓ — ✓ — — A categoria de classificação do dispositivo. Compatível apenas com balanceadores de carga de aplicativo externos globais.
request.backend_service_name string — — ✓ ✓ — O serviço de back-end de destino. Não relevante para extensões de borda (LbEdgeExtension ou CdnEdgeExtension).
request.backend_service_project_number int — — ✓ ✓ — O número do projeto do serviço de back-end na VPC compartilhada. Não relevante para extensões de borda.
request.mcp_method string — — — ✓ — O nome do método do Protocolo de Contexto de Modelo (MCP).

Atributos de conexão

É possível extrair e encaminhar os seguintes atributos das conexões:

Atributo Tipo LbEdge LbRoute LbTraffic Authz CdnEdge Descrição e diferenças de comportamento
source.ip string ✓ ✓ ✓ ✓ — O endereço IP do cliente.
source.port int ✓ ✓ ✓ ✓ ✓ O número da porta de origem do cliente.
source.client_region string ✓ — ✓ — ✓ O código de região ISO-3166-1 ou CLDR de duas letras associado ao endereço IP do cliente (por exemplo, US ou DE).
source.client_region_subdivision string ✓ — ✓ — — O código de subdivisão da região, como um estado ou província. Compatível apenas com balanceadores de carga de aplicativo externos globais.
source.client_city string ✓ — ✓ — — A cidade associada ao endereço IP do cliente. Compatível apenas com balanceadores de carga de aplicativo externos globais.
source.client_city_lat_long string ✓ — ✓ — — A latitude e a longitude associadas à cidade do cliente. Compatível apenas com balanceadores de carga de aplicativo externos globais.
destination.ip string — — ✓ ✓ — O endereço IP do balanceador de carga a que o cliente se conecta.
destination.port int — — ✓ ✓ — O número da porta de destino à qual o cliente se conecta.
connection.client_encrypted bool — — ✓ ✓ — O valor será true se a conexão entre o cliente e o balanceador de carga for criptografada (usando HTTPS, HTTP/2 ou HTTP/3). Caso contrário, será false.
connection.protocol string — — ✓ ✓ — O protocolo HTTP usado para comunicação (HTTP/1.0, HTTP/1.1, HTTP/2 ou HTTP/3).
connection.sni string ✓ — ✓ ✓ ✓ A indicação de nome do servidor (SNI, na sigla em inglês) solicitada da conexão TLS downstream.
connection.tls_version string ✓ — ✓ ✓ ✓ A versão do TLS negociada com o cliente (TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 ou QUIC).
connection.tls_cipher_suite string — — ✓ ✓ — O pacote de criptografia hexadecimal de quatro dígitos negociado durante o handshake de TLS, por exemplo, 009C.
connection.tls_ja3_fingerprint string — — ✓ — — A impressão digital TLS/SSL JA3 se o cliente se conectar usando HTTPS, HTTP/2 ou HTTP/3.
connection.tls_ja4_fingerprint string ✓ — ✓ — — A impressão digital TLS/SSL JA4 se o cliente se conectar usando HTTPS, HTTP/2 ou HTTP/3.
connection.client_rtt_msec int — — ✓ ✓ — O tempo de retorno (RTT, na sigla em inglês) do cliente medido em milissegundos.
connection.sha256_peer_certificate_digest string ✓ — ✓ ✓ — O hash do certificado de peering SHA-256 codificado em hexadecimal.
connection.client_cert_present bool — — ✓ ✓ — O valor será true se o cliente tiver fornecido um certificado durante o handshake de TLS. Caso contrário, será false.
connection.client_cert_chain_verified bool — — ✓ ✓ — O valor será true se a cadeia de certificados do cliente for verificada em relação a um TrustStore configurado. Caso contrário, será false.
connection.client_cert_error string — — ✓ ✓ — Strings predefinidas que representam as condições de erro de mTLS. Para mais informações, consulte Modos de validação do cliente do mTLS.
connection.client_cert_serial_number string — — ✓ ✓ — O número de série do certificado do cliente.
connection.client_cert_spiffe_id string — — ✓ ✓ — O ID do SPIFFE no campo Nome Alternativo do Assunto (SAN, na sigla em inglês).
connection.client_cert_uri_sans string — — ✓ ✓ — Uma lista separada por vírgulas e codificada em Base64 de extensões SAN de URI extraídas do certificado do cliente.
connection.client_cert_dnsname_sans string — — ✓ ✓ — Uma lista separada por vírgulas e codificada em Base64 de extensões SAN DNSName extraídas do certificado do cliente.
connection.client_cert_valid_not_before string — — ✓ ✓ — O carimbo de data/hora (formato RFC 3339) antes do qual o certificado do cliente não é válido.
connection.client_cert_valid_not_after string — — ✓ ✓ — O carimbo de data/hora (formato RFC 3339) após o qual o certificado do cliente não é válido.
connection.client_cert_issuer_dn string — — ✓ ✓ — A codificação DER codificada em Base64 do campo Issuer do certificado.
connection.client_cert_subject_dn string — — ✓ ✓ — A codificação DER codificada em Base64 do campo Subject do certificado.
connection.client_cert_leaf string — — ✓ ✓ — O certificado de folha de cliente codificado em Base64 para uma conexão mTLS estabelecida e validada (RFC 9440).
connection.client_cert_chain string — — ✓ ✓ — A cadeia de certificados do cliente delimitada por vírgulas e codificada em Base64 na ordem TLS padrão, excluindo o certificado de folha (RFC 9440).

Limitações

  • Disponibilidade de atributos: nem todos os atributos são compatíveis com todos os tipos de extensão. Para mais informações, consulte a tabela nesta página.

  • Configuração obrigatória: para enviar atributos à extensão, é necessário listar explicitamente os atributos no campo forwardAttributes da configuração da extensão. Se você não listar um atributo nesse campo, o balanceador de carga ou o Media CDN não vai encaminhar esse atributo específico para sua extensão.

  • Limites de tamanho: é possível configurar no máximo 16 atributos para uma única extensão.

  • Atributos mTLS: os atributos do certificado do cliente (connection.client_cert_*) são preenchidos nos dados transmitidos para a extensão somente se você tiver ativado o mTLS e o cliente apresentar um certificado.