Soalan dan senario
Beberapa perkhidmatan mikro menggunakan pengepala W3C baggage untuk konteks penyewa, eksperimen dan sumber permintaan. Sesetengah perkhidmatan merentasi sempadan syarikat atau domain data, jadi korelasi OpenTelemetry mesti dikekalkan sementara data peribadi dan pengecam dalaman kekal berada di luar sistem hiliran yang tidak dipercayai.
Perkara yang diuji oleh penemu bual
- Memisahkan Baggage daripada Trace Context dan mengenali penyebaran kunci-nilai secara sewenang-wenangnya.
- Menggunakan senarai izin (allowlist) sempadan kepercayaan, had saiz, penyuntingan (redaction) dan pemadaman dan bukannya pemajuan secara membuta tuli.
- Mengimbangi kebolehcerapan, keserasian, degradasi anggun (graceful degradation) dan bukti audit.
Soalan penjelasan sebelum menjawab
Jelaskan perkhidmatan mana yang berkongsi domain kepercayaan, katalog medan yang dibenarkan, saiz pengepala maksimum, titik masuk penyemak imbas atau giliran (queue), pengekalan telemetri, dan sama ada sistem hiliran mengekalkan (persist) Baggage. Jelaskan sama ada matlamatnya adalah untuk menyekat kunci sensitif, mengehadkan penyebaran rentas domain atau memindahkan pengepala tersuai.
Kerangka jawapan 30 saat
Saya akan menganggap Baggage sebagai input yang tidak dipercayai. Menghurai dan menormalkannya pada masa ingress, kemudian mengekalkan, menamakan semula, mencincang (hash) atau memadam medan berdasarkan sumber, domain kepercayaan destinasi dan dasar. Get laluan mengehadkan saiz kunci/nilai dan saiz keseluruhan, tidak sekali-kali menyalin nilai mentah ke dalam log atau respons pengguna, dan menggunakan senarai izin serta versi dasar pada egress rentas domain. Traceparent dikendalikan secara berasingan. Jika penapisan gagal, gugurkan medan pilihan, teruskan permintaan teras dan rekodkan tindakan dasar yang boleh diaudit.
Jawapan mendalam langkah demi langkah
- Selenggara katalog medan berversi: tujuan, kelas data, domain sumber dan destinasi yang dibenarkan, panjang maksimum dan kebenaran pengelogan (logging).
- Hurai format standard semasa ingress dan tolak kunci tidak sah, aksara kawalan, nilai bersaiz lebih dan konflik pendua. Simpan ringkasan (digest) permintaan, bukan pengepala sensitif tersebut.
- Sebarkan senarai izin dalam satu domain kepercayaan. Merentasi domain, hantar hanya kunci awam yang diminimumkan, atau alias penyewa yang tidak boleh diterbalikkan atau rujukan bertandatangan jangka pendek.
- Tambahkan penapisan eksplisit pada titik suntikan OpenTelemetry supaya instrumentasi automatik tidak boleh menyalin setiap item Baggage ke dalam span, log atau atribut metrik.
- Hadkan jumlah bait, bilangan item dan bilangan lompatan (hop). Semasa limpahan, alih keluar medan berkeutamaan rendah dan pancarkan peristiwa dasar dalaman tanpa menggemakan semula (echoing) data sensitif.
- Nilaikan semula dasar pada setiap egress; guna semula katalog untuk giliran dan kerja tak segerak. Jangan sekali-kali menggunakan Baggage sebagai kelayakan kebenaran (authorization credential).
- Audit nama medan, versi dasar, tindakan dan destinasi, bukan nilai asal. Uji kebocoran sintetik, serangan saiz dan pengumpulan berbilang lompatan.
incoming baggage: tenant=acme,experiment=A,pii_email=alice@example.org
same-trust output: tenant=acme,experiment=A
cross-trust output: tenant_ref=hash:v3:...,experiment=AContoh jawapan berkualiti tinggi
Saya akan menyatakan terlebih dahulu bahawa Baggage bukan pembawa pengesahan atau kebenaran; setiap nilai tidak dipercayai. Katalog medan berversi memacu penghuraian dan had semasa ingress, dan senarai izin mentadbir penyebaran domain yang sama. Merentasi sempadan kepercayaan, hantar hanya alias yang diminimumkan atau rujukan jangka pendek. Kendalikan konteks surih OpenTelemetry secara berasingan, tapis suntikan automatik dan jangan sekali-kali log nilai mentah. Semasa limpahan atau dasar yang tidak diketahui, gugurkan medan pilihan, teruskan permintaan teras dan rekodkan nama medan, tindakan dan versi dasar. Ujian sintetik berbilang lompatan, ujian sempadan giliran dan pertanyaan audit mengesahkan bahawa risiko privasi dikurangkan tanpa menyembunyikannya di sebalik surih yang sihat.
Kesilapan biasa
- Menganggap Baggage sebagai identiti yang dipercayai, kebenaran atau pengasingan penyewa.
- Membenarkan kunci sewenang-wenangnya merentasi sempadan kepercayaan atau hanya bergantung pada senarai hitam rentetan.
- Menulis pengepala lengkap ke dalam log, surih atau respons ralat.
- Mentadbir HTTP tetapi melupakan giliran, percubaan semula (retry) dan kerja tak segerak.
- Mengembalikan 4xx untuk limpahan pilihan, atau menggugurkan data secara senyap tanpa peristiwa audit.
Soalan susulan dan respons
Apakah perbezaan antara Baggage dan Trace Context?
Trace Context membawa metadata standard yang diperlukan untuk penjejakan teragih. Baggage ialah set kunci-nilai yang ditakrifkan oleh aplikasi yang boleh berfungsi secara bebas, jadi semantik dan risiko privasinya adalah milik aplikasi.
Mengapa memilih senarai izin berbanding senarai hitam?
Kunci Baggage tidak mempunyai semantik perniagaan yang tetap dan medan baharu muncul dari semasa ke semasa. Senarai izin menolak data yang tidak diketahui secara lalai, menghalang perkhidmatan atau vendor baharu daripada menyebarkan nilai sensitif secara tidak sengaja.
Patutkah kegagalan penapisan menyekat permintaan?
Jika medan itu hanya untuk pemerhatian, gugurkannya dan teruskan. Jika aliran perniagaan memerlukannya, kembalikan ralat dasar yang boleh dikenali tanpa menggemakan nilainya. Katalog harus menandakan medan mana yang kritikal.
Bagaimanakah anda membuktikan nilai mentah tidak memasuki telemetri?
Jalankan ujian penyuntingan pada kedua-dua Collector dan SDK, imbas log, atribut span dan label metrik, rekod nama dan versi dasar dan bukannya nilai, serta tetapkan amaran pada kenari sintetik.