Atributos compatíveis

Ao configurar extensões usando plug-ins ou callouts para serviços de back-end baseados em ext-proc, é possível especificar os atributos de solicitação e conexão a serem encaminhados para esses serviços. Esta página descreve os atributos compatíveis e especifica quais 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âmicas.
  • Enriquecer os cabeçalhos de solicitação com informações do cliente.
  • Implementar 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 callout. Por exemplo, para extensões de tráfego, consulte Configurar uma extensão de tráfego.

A especificação de atributos com forwardAttributes é compatível com extensões de autorização, rota e tráfego implementadas usando o ext_proc protocolo em balanceadores de carga de aplicativo regionais.

A tabela a seguir lista os atributos e as extensões que os oferecem suporte:

Atributo Descrição Extensões
request.origin O valor do cabeçalho de origem em uma solicitação de casos de uso de compartilhamento de recursos entre origens (CORS) . trânsito
request.method O método de solicitação HTTP, como GET ou POST. autorização, rota, trânsito
request.mcp_method O método de solicitação HTTP, como GET ou POST. autorização
request.host Um equivalente de conveniência para request.headers['host']. autorização, rota, trânsito
request.path O caminho do URL HTTP solicitado. autorização, rota, trânsito
request.query A consulta de URL HTTP, no formato name1=value&name2=value2, conforme aparece na primeira linha da solicitação HTTP. Nenhuma decodificação é executada. autorização, rota, trânsito
request.scheme O esquema de URL HTTP, como HTTP ou HTTPS. Os valores desse atributo estão em letras minúsculas. autorização, rota, trânsito
request.backend_service_name O serviço de back-end para onde a solicitação é encaminhada. autorização, trânsito
request.backend_service_project_number Ao usar a VPC compartilhada, o número do projeto do serviço de back-end para onde a solicitação é encaminhada. autorização, trânsito
request.mcp_param O parâmetro MCP. autorização
source.ip O endereço IP do cliente. rota, trânsito
source.port A porta de origem do cliente. rota, trânsito
source.client_region O país ou região associado ao endereço IP do cliente. O valor é um código de região Unicode CLDR, como US ou FR. Na maioria dos países, esses códigos correspondem diretamente a códigos ISO-3166-2. trânsito
connection.client_encrypted O valor é 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. trânsito
connection.protocol O protocolo HTTP usado para a comunicação entre o cliente e o balanceador de carga. Ele pode ser um de HTTP/1.0, HTTP/1.1, HTTP/2, ou HTTP/3. trânsito
destination.ip O endereço IP do balanceador de carga a que o cliente se conecta. Esse valor pode ser útil quando vários balanceadores de carga compartilham back-ends comuns. Ele é o mesmo que o último endereço IP no X-Forwarded-For cabeçalho. trânsito
destination.port O número da porta de destino à qual o cliente se conecta. trânsito
connection.sni Indicação do nome do servidor (conforme definido na RFC 6066, link em inglês), caso ele seja fornecido por o cliente durante o handshake do TLS ou do QUIC. O nome do host é convertido para letras minúsculas e qualquer ponto à direita é removido. autorização, trânsito
connection.tls_version A versão de TLS negociada entre o cliente e o load balancer durante o handshake de SSL. Os valores possíveis incluem: TLSv1, TLSv1.1, TLSv1.2, e TLSv1.3. Se o cliente se conectar usando QUIC em vez de TLS, o valor será QUIC. trânsito
connection.sha256_peer_certificate_digest O hash SHA256 codificado em hexadecimal do certificado de mesmo nível na conexão TLS de downstream, se houver. autorização, trânsito
connection.tls_cipher_suite O pacote de criptografia negociado durante o handshake de TLS. O valor corresponde a quatro dígitos hexadecimais definidos pelo Registro do pacote de criptografia TLS da IANA. Por exemplo, 009C para TLS_RSA_WITH_AES_128_GCM_SHA256. Esse valor fica em branco para QUIC e conexões do cliente não criptografadas. trânsito
connection.tls_ja3_fingerprint A impressão digital TLS/SSL JA3 se o cliente se conectar usando HTTPS, HTTP/2, ou HTTP/3. trânsito
connection.tls_ja4_fingerprint A impressão digital TLS/SSL JA4 se o cliente se conectar usando HTTPS, HTTP/2, ou HTTP/3. trânsito
connection.client_cert_present O valor é true se o cliente tiver fornecido um certificado durante o handshake de TLS. Caso contrário, será false. autorização, trânsito
connection.client_cert_chain_verified O valor é true se a cadeia de certificados do cliente for verificada em relação a um TrustStore configurado. Caso contrário, será false. autorização, trânsito
connection.client_cert_error Strings predefinidas que representam condições de erro. Para mais informações sobre as strings de erro, consulte os modos de validação de cliente mTLS. autorização, trânsito
connection.client_cert_serial_number O número de série do certificado do cliente. Se o número de série for maior que 50 bytes, o client_cert_error será definido como client_cert_serial_number_exceeded_size_limit, e o número de série será definido como uma string vazia. autorização, trânsito
connection.client_cert_spiffe_id O ID do SPIFFE no campo "Nome alternativo do assunto" (SAN, na sigla em inglês). Se o valor não for válido ou exceder 2.048 bytes, o ID do SPIFFE será definido como uma string vazia. Se o ID SPIFFE for maior que 2.048 bytes, o client_cert_error será definido como client_cert_spiffe_id_exceeded_size_limit. autorização, trânsito
connection.client_cert_uri_sans Uma lista codificada por Base64 separada por vírgula das extensões SAN do tipo URI. As extensões do SAN são extraídas do certificado do cliente. O ID do SPIFFE não está incluído no client_cert_uri_sans campo. Se client_cert_uri_sans for maior que 512 bytes, o client_cert_error será definido como client_cert_uri_sans_exceeded_size_limit, e a lista separada por vírgulas será definida como uma string vazia. autorização, trânsito
connection.client_cert_dnsname_sans Uma lista codificada por Base64 separada por vírgula das extensões SAN do tipo DNSName. As extensões do SAN são extraídas do do certificado do cliente. Se client_cert_dnsname_sans for maior que 512 bytes, o client_cert_error será definido como client_cert_dnsname_sans_exceeded_size_limit, e a lista separada por vírgulas será definida como uma string vazia. autorização, trânsito
connection.client_cert_valid_not_before O carimbo de data/hora (formato de string de data RFC 3339) antes do qual o certificado do cliente não é válido. Por exemplo, 2022-07-01T18:05:09+00:00. autorização, trânsito
connection.client_cert_valid_not_after O carimbo de data/hora (no formato de string de data RFC 3339) após o qual o certificado do cliente não é válido. Por exemplo, 2022-07-01T18:05:09+00:00. autorização, trânsito
connection.client_cert_issuer_dn A codificação DER codificada em Base64 do campo Issuer completo do certificado. Se client_cert_issuer_dn for maior que 512 bytes, a string client_cert_issuer_dn_exceeded_size_limit será adicionada a client_cert_error, e client_cert_issuer_dn será definida como uma string vazia. autorização, trânsito
connection.client_cert_subject_dn A codificação DER codificada em Base64 do campo Subject completo do certificado. Se client_cert_subject_dn for maior que 512 bytes, a string client_cert_subject_dn_exceeded_size_limit será adicionada a client_cert_error, e client_cert_subject_dn será definida como uma string vazia. autorização, trânsito
connection.client_cert_leaf O certificado de folha de cliente para uma conexão mTLS estabelecida onde o certificado passou na validação. A codificação do certificado é compatível com a RFC 9440 (link em inglês). Isso significa que o certificado DER binário é codificado em Base64 e delimitado com dois-pontos em ambos os lados. Se client_cert_leaf exceder 16 KB não codificados, a string client_cert_validated_leaf_exceeded_size_limit será adicionada a client_cert_error, e client_cert_leaf será definida como uma string vazia. autorização, trânsito
connection.client_cert_chain A lista de certificados delimitada por vírgulas, na ordem TLS padrão, da cadeia de certificados do cliente para uma conexão mTLS estabelecida em que o certificado do cliente passou na validação, sem incluir o certificado de folha. A codificação do certificado é compatível com a RFC 9440 (link em inglês). Se o tamanho combinado de client_cert_leaf e client_cert_chain antes da codificação Base64 exceder 16 KB, a string client_cert_validated_chain_exceeded_size_limit será adicionada a client_cert_error, e client_cert_chain será definida como uma string vazia. autorização, trânsito