Saat mengonfigurasi ekstensi menggunakan plugin atau callout untuk layanan backend berbasis ext-proc, Anda dapat menentukan atribut permintaan dan koneksi untuk diteruskan ke layanan tersebut. Halaman ini menjelaskan atribut yang didukung dan
menentukan atribut yang tersedia untuk setiap jenis ekstensi.
Dengan mengonfigurasi ekstensi untuk meneruskan atribut tertentu, Anda dapat mencapai hal berikut:
- Membuat keputusan pemilihan rute dinamis.
- Memperkaya header permintaan dengan informasi klien.
- Menerapkan kebijakan keamanan kustom berdasarkan lokasi klien atau parameter TLS.
- Buat log kustom mendetail.
Anda dapat menentukan atribut dengan kolom forwardAttributes dalam konfigurasi YAML untuk plugin dan ekstensi info. Misalnya, untuk ekstensi traffic, lihat Mengonfigurasi ekstensi traffic.
Menentukan atribut dengan forwardAttributes didukung untuk otorisasi, ekstensi rute, dan traffic yang diterapkan menggunakan protokol ext_proc di Load Balancer Aplikasi regional.
Tabel berikut mencantumkan atribut dan ekstensi yang mendukungnya:
| Atribut | Deskripsi | Ekstensi |
|---|---|---|
request.origin |
Nilai header asal dalam permintaan untuk kasus penggunaan Cross-Origin Resource Sharing (CORS). | lalu lintas |
request.method |
Metode permintaan HTTP, seperti GET atau
POST. |
otorisasi, edge, rute, traffic |
request.mcp_method |
Metode permintaan HTTP, seperti GET atau
POST. |
otorisasi |
request.host |
Setara dengan request.headers['host']. |
otorisasi, edge, rute, traffic |
request.path |
Jalur URL HTTP yang diminta. | otorisasi, edge, rute, traffic |
request.query |
Kueri URL HTTP, dalam format name1=value&name2=value2,
seperti yang muncul di baris pertama permintaan HTTP. Tidak ada decoding yang
dilakukan. |
otorisasi, edge, rute, traffic |
request.scheme |
Skema URL HTTP, seperti HTTP atau
HTTPS. Nilai untuk atribut ini menggunakan huruf kecil. |
otorisasi, edge, rute, traffic |
request.backend_service_name |
Layanan backend yang menjadi tujuan penerusan permintaan. | otorisasi, traffic |
request.backend_service_project_number |
Saat menggunakan VPC Bersama, nomor project layanan backend yang menjadi tujuan penerusan permintaan. | otorisasi, traffic |
request.mcp_param |
Parameter MCP. | otorisasi |
source.ip |
Alamat IP klien. | tepi, rute, lalu lintas |
source.port |
Port sumber klien. | tepi, rute, lalu lintas |
source.client_region |
Negara atau wilayah yang terkait dengan alamat IP klien.
Nilainya adalah kode wilayah CLDR Unicode, seperti US
atau FR. Untuk sebagian besar negara, kode ini sesuai
langsung dengan kode ISO-3166-2. |
edge, traffic |
source.client_region_subdivision |
Subdivisi (misalnya, provinsi atau negara bagian) negara yang
terkait dengan alamat IP klien. Ini adalah ID subbagian
Unicode CLDR, seperti USCA atau CAON. Kode Unicode ini berasal dari subdivisi yang ditentukan oleh standar ISO-3166-2. |
tepi |
source.client_city |
Nama kota tempat permintaan berasal, misalnya, Mountain View untuk Mountain View, California.
Tidak ada daftar kanonis nilai valid untuk variabel ini.
Nama kota dapat berisi huruf, angka, spasi US-ASCII, dan karakter berikut: !#$%&'*+-.^_`|~. |
tepi |
source.client_city_lat_long |
Lintang dan bujur kota asal permintaan—misalnya, 37.386051,-122.083851 untuk permintaan dari Mountain View. |
tepi |
connection.client_encrypted |
Nilainya adalah true jika koneksi antara
klien dan load balancer dienkripsi
(dengan menggunakan HTTPS, HTTP/2, atau
HTTP/3); jika tidak, nilainya adalah false. |
lalu lintas |
connection.protocol |
Protokol HTTP yang digunakan untuk komunikasi antara klien dan
load balancer. Nilainya dapat berupa HTTP/1.0,
HTTP/1.1, HTTP/2,
atau HTTP/3. |
lalu lintas |
destination.ip |
Alamat IP load balancer yang terhubung ke klien.
Nilai ini dapat berguna saat beberapa load balancer berbagi backend umum. Nilai ini sama dengan alamat IP terakhir di header
X-Forwarded-For. |
lalu lintas |
destination.port |
Nomor port tujuan yang dihubungkan klien. | lalu lintas |
connection.sni |
Server Name Indication (seperti yang ditentukan dalam RFC 6066), jika disediakan oleh klien selama TLS atau QUIC handshake. Nama host dikonversi menjadi huruf kecil dan titik di akhir dihapus. | otorisasi, tepi, traffic |
connection.tls_version |
Versi TLS yang dinegosiasikan antara klien dan load balancer selama handshake SSL. Nilai yang mungkin mencakup:
TLSv1, TLSv1.1, TLSv1.2,
dan TLSv1.3. Jika klien terhubung menggunakan QUIC, bukan TLS, nilainya adalah QUIC. |
edge, traffic |
connection.sha256_peer_certificate_digest |
Hash SHA256 berenkode heksadesimal dari sertifikat peer dalam koneksi TLS downstream, jika ada. | otorisasi, tepi, traffic |
connection.tls_cipher_suite |
Suite cipher yang dinegosiasikan selama TLS handshake. Nilainya
adalah empat digit heksadesimal yang ditentukan oleh IANA TLS Cipher Suite
Registry—misalnya, 009C untuk
TLS_RSA_WITH_AES_128_GCM_SHA256. Nilai ini kosong
untuk QUIC dan koneksi klien yang tidak dienkripsi. |
lalu lintas |
connection.tls_ja3_fingerprint |
Sidik jari TLS/SSL JA3 jika klien terhubung menggunakan
HTTPS, HTTP/2, atau HTTP/3. |
lalu lintas |
connection.tls_ja4_fingerprint |
Sidik jari TLS/SSL JA4 jika klien terhubung menggunakan HTTPS,
HTTP/2, atau HTTP/3. |
edge, traffic |
connection.client_cert_present |
Nilainya adalah true jika klien memberikan
sertifikat selama handshake TLS; jika tidak, false. |
otorisasi, traffic |
connection.client_cert_chain_verified |
Nilainya adalah true jika rantai sertifikat klien
diverifikasi berdasarkan TrustStore yang dikonfigurasi; jika tidak,
nilainya adalah false. |
otorisasi, traffic |
connection.client_cert_error |
String standar yang mewakili kondisi error. Untuk mengetahui informasi selengkapnya tentang string error, lihat Mode validasi klien mTLS. | otorisasi, traffic |
connection.client_cert_serial_number |
Nomor seri sertifikat klien. Jika nomor seri
lebih panjang dari 50 byte, client_cert_error akan disetel
ke client_cert_serial_number_exceeded_size_limit,
dan nomor seri akan disetel ke string kosong. |
otorisasi, traffic |
connection.client_cert_spiffe_id |
ID SPIFFE dari kolom Nama Alternatif Subjek (SAN). Jika
nilai tidak valid atau melebihi 2.048 byte, SPIFFE ID akan
ditetapkan ke string kosong. Jika ID SPIFFE lebih panjang dari 2048
byte, client_cert_error akan ditetapkan ke
client_cert_spiffe_id_exceeded_size_limit. |
otorisasi, traffic |
connection.client_cert_uri_sans |
Daftar ekstensi SAN berenkode Base64 yang dipisahkan koma dan berjenis
URI. Ekstensi SAN diekstrak dari
sertifikat klien. SPIFFE ID tidak disertakan dalam
kolom client_cert_uri_sans. Jika
client_cert_uri_sans lebih panjang dari 512 byte, maka
client_cert_error akan ditetapkan ke
client_cert_uri_sans_exceeded_size_limit, dan
daftar yang dipisahkan koma akan ditetapkan ke string kosong. |
otorisasi, traffic |
connection.client_cert_dnsname_sans |
Daftar ekstensi SAN berenkode Base64 yang dipisahkan koma dan berjenis
DNSName. Ekstensi SAN diekstrak dari
sertifikat klien. Jika client_cert_dnsname_sans
lebih panjang dari 512 byte, client_cert_error akan
ditetapkan ke client_cert_dnsname_sans_exceeded_size_limit,
dan daftar yang dipisahkan koma akan ditetapkan ke string kosong. |
otorisasi, traffic |
connection.client_cert_valid_not_before |
Stempel waktu (format string tanggal RFC 3339) sebelum
sertifikat klien tidak valid—misalnya,
2022-07-01T18:05:09+00:00.
|
otorisasi, traffic |
connection.client_cert_valid_not_after |
Stempel waktu (dalam format string tanggal RFC 3339) setelah
sertifikat klien tidak valid—misalnya,
2022-07-01T18:05:09+00:00.
|
otorisasi, traffic |
connection.client_cert_issuer_dn |
Encoding DER berenkode Base64 dari kolom Issuer
lengkap dari sertifikat. Jika client_cert_issuer_dn
lebih panjang dari 512 byte, string
client_cert_issuer_dn_exceeded_size_limit ditambahkan
ke client_cert_error, dan
client_cert_issuer_dn ditetapkan ke string kosong. |
otorisasi, traffic |
connection.client_cert_subject_dn |
Encoding DER berenkode Base64 dari kolom Subject
lengkap dari sertifikat. Jika client_cert_subject_dn
lebih panjang dari 512 byte, string
client_cert_subject_dn_exceeded_size_limit ditambahkan
ke client_cert_error, dan
client_cert_subject_dn ditetapkan ke string kosong. |
otorisasi, traffic |
connection.client_cert_leaf |
Sertifikat leaf klien untuk koneksi mTLS yang sudah dibuat
dengan sertifikat yang lulus validasi. Encoding sertifikat
sesuai dengan RFC 9440. Artinya, sertifikat DER biner
dienkode Base64 dan dibatasi dengan titik dua di kedua sisinya. Jika
client_cert_leaf melebihi 16 KB yang tidak dienkode, string
client_cert_validated_leaf_exceeded_size_limit
ditambahkan ke client_cert_error, dan
client_cert_leaf disetel ke string kosong. |
otorisasi, traffic |
connection.client_cert_chain |
Daftar sertifikat yang dipisahkan koma, dalam urutan TLS standar,
dari rantai sertifikat klien untuk koneksi mTLS yang sudah dibuat
dengan sertifikat klien yang lulus validasi, tidak termasuk
sertifikat leaf. Enkode sertifikat sesuai
dengan RFC 9440. Jika ukuran gabungan
client_cert_leaf dan client_cert_chain
sebelum encoding Base64 melebihi 16 KB, string
client_cert_validated_chain_exceeded_size_limit akan
ditambahkan ke client_cert_error, dan
client_cert_chain akan disetel ke string kosong. |
otorisasi, traffic |