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 |