Lorsque vous configurez des extensions à l'aide de plug-ins ou d'appels pour les services de backend basés sur ext-proc, vous pouvez spécifier les attributs de requête et de connexion à transférer vers ces services. Cette page décrit les attributs acceptés et indique ceux qui sont disponibles pour chaque type d'extension.
En configurant des extensions pour transférer des attributs spécifiques, vous pouvez effectuer les actions suivantes :
- Prenez des décisions de routage dynamiques.
- Enrichissez les en-têtes de requête avec des informations sur le client.
- Implémentez des règles de sécurité personnalisées basées sur l'emplacement du client ou les paramètres TLS.
- Générez des journaux personnalisés détaillés.
Vous pouvez spécifier des attributs avec le champ forwardAttributes dans la configuration YAML pour les extensions de plug-in et d'encart. Par exemple, pour les extensions de trafic, consultez Configurer une extension de trafic.
La spécification d'attributs avec forwardAttributes est acceptée pour les extensions d'autorisation, de route et de trafic implémentées à l'aide du protocole ext_proc sur les équilibreurs de charge d'application régionaux.
Le tableau suivant répertorie les attributs et les extensions qui les acceptent :
| Attribut | Description | Extensions |
|---|---|---|
request.origin |
Valeur de l'en-tête d'origine dans une requête pour les cas d'utilisation CORS (Cross-Origin Resource Sharing). | trafic |
request.method |
Méthode de requête HTTP, telle que GET ou POST. |
autorisation, périphérie, itinéraire, trafic |
request.mcp_method |
Méthode de requête HTTP, telle que GET ou POST. |
autorisation |
request.host |
Équivalent de commodité à request.headers['host']. |
autorisation, périphérie, itinéraire, trafic |
request.path |
Chemin d'URL HTTP demandé. | autorisation, périphérie, itinéraire, trafic |
request.query |
Requête d'URL HTTP au format name1=value&name2=value2, telle qu'elle apparaît sur la première ligne de la requête HTTP. Aucun décodage n'est effectué. |
autorisation, périphérie, itinéraire, trafic |
request.scheme |
Schéma d'URL HTTP, tel que HTTP ou HTTPS. Les valeurs de cet attribut sont en minuscules. |
autorisation, périphérie, itinéraire, trafic |
request.backend_service_name |
Service de backend auquel la requête est transférée. | autorisation, trafic |
request.backend_service_project_number |
Lorsqu'un VPC partagé est utilisé, il s'agit du numéro de projet du service de backend auquel la requête est transférée. | autorisation, trafic |
request.mcp_param |
Paramètre MCP. | autorisation |
source.ip |
Adresse IP du client. | bord, itinéraire, trafic |
source.port |
Port source du client. | bord, itinéraire, trafic |
source.client_region |
Pays ou région associé à l'adresse IP du client.
La valeur est un code de région CLDR au format Unicode, tel que US ou FR. Pour la plupart des pays, ces codes correspondent directement aux codes ISO-3166-2. |
edge, trafic |
source.client_region_subdivision |
Subdivision (une province ou un État, par exemple) du pays associé à l'adresse IP du client. Il s'agit d'un ID de subdivision CLDR au format Unicode, tel que USCA ou CAON. Ces codes Unicode sont dérivés des subdivisions définies par la norme ISO-3166-2. |
de Google |
source.client_city |
Nom de la ville d'origine de la requête, par exemple Mountain View pour Mountain View en Californie.
Il n'existe pas de liste canonique de valeurs valides pour cette variable.
Les noms de villes peuvent contenir des lettres, des chiffres et des espaces au format US-ASCII, ainsi que les caractères suivants : !#$%&'*+-.^_`|~. |
de Google |
source.client_city_lat_long |
Latitude et longitude de la ville d'origine de la requête. Par exemple, 37.386051,-122.083851 pour une requête provenant de Mountain View. |
de Google |
connection.client_encrypted |
La valeur est true si la connexion entre le client et l'équilibreur de charge est chiffrée (à l'aide de HTTPS, HTTP/2 ou HTTP/3), sinon elle est false. |
trafic |
connection.protocol |
Protocole HTTP utilisé pour la communication entre le client et l'équilibreur de charge. Il peut s'agir de HTTP/1.0, HTTP/1.1, HTTP/2 ou HTTP/3. |
trafic |
destination.ip |
Adresse IP de l'équilibreur de charge auquel le client se connecte.
Cette valeur peut être utile lorsque plusieurs équilibreurs de charge partagent des backends communs. Cette valeur est identique à la dernière adresse IP de l'en-tête X-Forwarded-For. |
trafic |
destination.port |
Numéro du port de destination auquel le client se connecte. | trafic |
connection.sni |
L'indication du nom du serveur (telle que définie dans la RFC 6066), si ce nom est fourni par le client lors du handshake TLS ou QUIC. Le nom d'hôte est converti en minuscules et tous les points se trouvant à la fin du nom sont supprimés. | autorisation, périphérie, trafic |
connection.tls_version |
Version de TLS négociée entre le client et l'équilibreur de charge lors du handshake SSL. Les valeurs possibles sont TLSv1, TLSv1.1, TLSv1.2 et TLSv1.3. Si le client se connecte à l'aide de QUIC au lieu de TLS, la valeur est QUIC. |
edge, trafic |
connection.sha256_peer_certificate_digest |
Hachage SHA256 encodé en hexadécimal du certificat de pair dans la connexion TLS en aval, le cas échéant. | autorisation, périphérie, trafic |
connection.tls_cipher_suite |
La suite de chiffrement négociée lors du handshake TLS. La valeur se compose de quatre chiffres hexadécimaux définis par le Registre des suites de chiffrement TLS de l'IANA. Par exemple, 009C correspond à TLS_RSA_WITH_AES_128_GCM_SHA256. Cette valeur est vide pour QUIC et les connexions clientes non chiffrées. |
trafic |
connection.tls_ja3_fingerprint |
Empreinte JA3 TLS/SSL si le client se connecte à l'aide de HTTPS, HTTP/2 ou HTTP/3. |
trafic |
connection.tls_ja4_fingerprint |
Empreinte JA4 TLS/SSL si le client se connecte à l'aide de HTTPS, HTTP/2 ou HTTP/3. |
edge, trafic |
connection.client_cert_present |
La valeur est true si le client a fourni un certificat lors du handshake TLS. Sinon, elle est false. |
autorisation, trafic |
connection.client_cert_chain_verified |
La valeur est true si la chaîne de certificats client est validée par rapport à une configuration TrustStore configurée ou false. |
autorisation, trafic |
connection.client_cert_error |
Chaînes prédéfinies représentant les conditions d'erreur. Pour en savoir plus sur les chaînes d'erreur, consultez Modes de validation des clients mTLS. | autorisation, trafic |
connection.client_cert_serial_number |
Numéro de série du certificat client. Si le numéro de série dépasse 50 octets, client_cert_error est défini sur client_cert_serial_number_exceeded_size_limit et le numéro de série est défini sur une chaîne vide. |
autorisation, trafic |
connection.client_cert_spiffe_id |
L'ID SPIFFE du champ "Autre nom de l'objet (SAN)". Si la valeur n'est pas valide ou dépasse 2 048 octets, l'ID SPIFFE est défini sur une chaîne vide. Si l'ID SPIFFE dépasse 2 048 octets, client_cert_error est défini sur client_cert_spiffe_id_exceeded_size_limit. |
autorisation, trafic |
connection.client_cert_uri_sans |
Liste des extensions SAN de type URI encodées en base64 et séparées par une virgule. Les extensions SAN sont extraites du certificat client. L'ID SPIFFE n'est pas inclus dans le champ client_cert_uri_sans. Si client_cert_uri_sans dépasse 512 octets, client_cert_error est défini sur client_cert_uri_sans_exceeded_size_limit et la liste d'éléments séparés par des virgules est définie sur une chaîne vide. |
autorisation, trafic |
connection.client_cert_dnsname_sans |
Liste des extensions SAN de type DNSName encodées en base64 et séparées par une virgule. Les extensions SAN sont extraites du certificat client. Si client_cert_dnsname_sans dépasse 512 octets, client_cert_error est défini sur client_cert_dnsname_sans_exceeded_size_limit et la liste d'éléments séparés par des virgules est définie sur une chaîne vide. |
autorisation, trafic |
connection.client_cert_valid_not_before |
Horodatage (format de chaîne de date RFC 3339) avant lequel le certificat client n'est pas valide (par exemple, 2022-07-01T18:05:09+00:00).
|
autorisation, trafic |
connection.client_cert_valid_not_after |
Code temporel (au format de chaîne de date RFC 3339) après lequel le certificat client n'est pas valide (par exemple, 2022-07-01T18:05:09+00:00).
|
autorisation, trafic |
connection.client_cert_issuer_dn |
Encodage DER en base64 du champ Issuer complet du certificat. Si client_cert_issuer_dn dépasse 512 octets, la chaîne client_cert_issuer_dn_exceeded_size_limit est ajoutée à client_cert_error et client_cert_issuer_dn est défini sur une chaîne vide. |
autorisation, trafic |
connection.client_cert_subject_dn |
Encodage DER en base64 du champ Subject complet du certificat. Si client_cert_subject_dn dépasse 512 octets, la chaîne client_cert_subject_dn_exceeded_size_limit est ajoutée à client_cert_error et client_cert_subject_dn est défini sur une chaîne vide. |
autorisation, trafic |
connection.client_cert_leaf |
Certificat d'entité finale du client pour une connexion mTLS établie où le certificat a été validé. L'encodage du certificat est conforme à la norme RFC 9440. Cela signifie que le certificat DER binaire est encodé en base64 et délimité de chaque côté par des signes deux-points. Si client_cert_leaf dépasse 16 Ko non encodé, la chaîne client_cert_validated_leaf_exceeded_size_limit est ajoutée à client_cert_error et client_cert_leaf est défini sur une chaîne vide. |
autorisation, trafic |
connection.client_cert_chain |
Liste de certificats séparés par une virgule (dans l'ordre TLS standard) de la chaîne de certificats client pour une connexion mTLS établie où le certificat client a été validé, sans inclure le certificat d'entité finale. L'encodage du certificat est conforme à la norme RFC 9440. Si la taille combinée de client_cert_leaf et client_cert_chain avant encodage en base64 dépasse 16 Ko, la chaîne client_cert_validated_chain_exceeded_size_limit est ajoutée à client_cert_error et client_cert_chain est défini sur une chaîne vide. |
autorisation, trafic |