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) usandoext_procem 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
forwardAttributesda 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.