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, conexã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, conexão, rota, trânsito
request.path O caminho do URL HTTP solicitado. autorização, conexã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 é realizada. autorização, conexã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, conexão, rota, trânsito
request.backend_service_name O serviço de back-end para o qual 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. conexão, rota, trânsito
source.port A porta de origem do cliente. conexão, 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. conexão, trânsito
source.client_region_subdivision A subdivisão (por exemplo, uma província ou um estado) do país associado ao endereço IP do cliente. Este é um ID de subdivisão Unicode CLDR, como USCA ou CAON. Esses códigos Unicode são derivados das subdivisões definidas pelo padrão ISO-3166-2. conexão
source.client_city O nome da cidade de origem da solicitação, por exemplo, Mountain View para Mountain View, Califórnia. Não há uma lista canônica de valores válidos para essa variável. Os nomes das cidades podem conter letras US-ASCII, números, espaços e os seguintes caracteres: !#$%&'*+-.^_`|~. conexão
source.client_city_lat_long A latitude e longitude da cidade de origem da solicitação. Por exemplo, 37.386051,-122.083851 para uma solicitação de Mountain View. conexão
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. Esse é 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, 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, conexã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. conexão, 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, conexã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 está vazio para conexões de cliente QUIC e 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. conexão, 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á definido 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á definido 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á definido 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á definido como uma string vazia. autorização, trânsito