Topik temu duga representatif

Temu duga kejuruteraan data: Bagaimanakah Parquet Modular Encryption patut mentakrifkan sempadan kunci dan bacaan?

DataSederhana
Pasukan Editorial Offer.ccDiterbitkan Dikemas kini

Soalan

Sebuah data lake mesti melindungi lajur sensitif sambil mengekalkan pembacaan kolumnar. Terangkan mod footer dan lajur Parquet Modular Encryption, kemudian reka bentuk jagaan kunci, tingkah laku pertanyaan, kegagalan legacy reader, dan giliran.

Gesaan dan skop

Sebuah data lake mempunyai lajur awam dan sensitif dalam fail Parquet. Pasukan ingin menyulitkan data dan metadata sensitif sambil mengekalkan unjuran (projection), predicate pushdown, dan pemampatan. Reka bentuk penyulitan footer, kunci lajur, jagaan kunci, kebenaran membaca, tingkah laku pembaca legasi, dan pemulihan giliran.

Soalan ini membincangkan keupayaan dalam spesifikasi Parquet Modular Encryption; ia tidak menganggap setiap enjin atau binding bahasa menyokong konfigurasi kunci yang sama.

Perkara yang diuji oleh penemu duga

  • Sama ada anda membezakan footer yang disulitkan, lajur yang disulitkan, dan perlindungan halaman sahaja (page-only).
  • Sama ada KEK, DEK, metadata kunci, dan kebenaran KMS diasingkan dan bukannya menyimpan kunci induk (master key) di dalam fail.
  • Sama ada anda memahami bagaimana footer yang disulitkan mempengaruhi skema, statistik, predicate pushdown, dan pembaca legasi.
  • Sama ada giliran, pembatalan (revocation), penulisan semula (rewrite), dan kegagalan penyahsulitan yang boleh diperhatikan direka bentuk bersama.

Soalan penjelasan

  1. Lajur manakah yang sensitif, dan adakah skema, kumpulan baris (row groups), dan statistik juga mesti disembunyikan?
  2. Lajur manakah yang diperlukan oleh enjin pertanyaan, dan adakah enjin tersebut menyokong kunci lajur dan penyahsulitan footer?
  3. Adakah jagaan kunci merupakan perkhidmatan pusat, HSM awan, atau kunci yang disuntik oleh pemanggil?
  4. Adakah fail direplikasi merentas akaun atau rantau, dan bagaimanakah sandaran memperoleh kebenaran menyahsulit?
  5. Adakah giliran menyasarkan fail baharu, penulisan semula sejarah, atau pembatalan serta-merta?

Jawapan 30 saat

“Parquet Modular Encryption boleh melindungi data dan metadata fail sambil mengekalkan ciri kolumnar, tetapi footer yang disulitkan menyembunyikan maklumat skema dan kumpulan baris daripada pembaca tanpa kuncinya. Saya akan mengasingkan kunci induk KMS daripada kunci fail atau lajur dan membenarkan pembaca mengikut lajur. Pembaca legasi harus melaporkan penyulitan yang tidak disokong dan bukannya menganggap fail itu rosak (corrupt). Giliran menulis fail baharu dengan kunci yang baru dibalut (wrapped) dan menulis semula sejarah secara terkawal, sambil merekodkan versi kunci dan kegagalan. Matriks keupayaan mesti mengesahkan predicate pushdown untuk setiap enjin.”

Reka bentuk langkah demi langkah

1. Pilih skop perlindungan

Penyulitan footer melindungi FileMetaData, termasuk kumpulan baris dan ketulan lajur (column chunks); penyulitan lajur boleh menggunakan kunci berbeza untuk lajur sensitif. Jika footer kekal sebagai teks biasa (plaintext), pembaca mungkin melihat skema atau statistik walaupun ia tidak dapat membaca halaman yang disulitkan. Pilih skop daripada model ancaman (threat model).

2. Asingkan tanggungjawab kunci

KMS atau HSM menyimpan kunci penyulitan kunci (KEK). Proses menulis mencipta atau memperoleh kunci penyulitan data (DEK) dan menyimpan metadata kunci yang dilindungi dalam fail. Perkhidmatan kebenaran pembaca menyelesaikan metadata dan meminta KMS untuk membuka balutan (unwrap) kunci yang dibenarkan sahaja; fail tidak boleh mengandungi kunci induk yang boleh digunakan secara terus.

3. Nilaikan keupayaan pertanyaan

Apache Parquet mendokumenkan bahawa penyulitan modular boleh menyulitkan dan mengesahkan data serta metadata sambil mengekalkan unjuran, predicate pushdown, pengekodan, dan pemampatan. Enjin pertanyaan masih memerlukan kunci yang berkaitan terlebih dahulu. Footer yang disulitkan boleh menghalang pengimbas tanpa kunci daripada membaca skema dan statistik, jadi uji unjuran awam sahaja, penapis lajur sensitif, dan unjuran bercampur.

text
KMS KEK -> wraps file/column DEK -> protected key metadata
reader authorization -> unwrap allowed DEK -> decrypt footer/pages

4. Kenal pasti fail dan pembaca legasi

Fail footer yang disulitkan menggunakan bait ajaib (magic bytes) yang berbeza: Apache Parquet mendokumenkan PARE, manakala fail teks biasa menggunakan PAR1. Pembaca legasi mungkin mengklasifikasikan fail yang disulitkan sebagai tidak disokong. Tandakan keupayaan dalam pendaftaran atau probe, dan bukannya menunggu ralat kerosakan yang tidak jelas semasa pertanyaan.

5. Reka bentuk giliran dan pembatalan

Giliran harus mempengaruhi fail baharu terlebih dahulu: DEK baharu dibalut oleh KEK baharu, dan fail lama ditulis semula mengikut pengekalan (retention). Pembatalan serta-merta menyebabkan KMS menolak pembukaan balutan dan bacaan gagal; platform memerlukan barisan gilir penulisan semula, versi kunci, dan langkah pemulihan. Tulis semula ke fail sementara dan gantikan secara atomik supaya gangguan tidak meninggalkan fail yang separa disulitkan.

6. Perhatikan kegagalan mengikut lapisan

Rekodkan ID fail, versi kunci footer atau lajur, prinsipal, kependaman KMS, jenis kegagalan penyahsulitan, dan lajur yang ditanya; jangan sekali-kali log kunci atau nilai teks biasa. Asingkan penafian kebenaran, kehilangan kunci, kegagalan tag pengesahan, pembaca legasi yang tidak disokong, dan kerosakan fail untuk makluman serta pemulihan.

Model jawapan berkualiti tinggi

“Saya akan memilih sama ada untuk menyembunyikan footer daripada model ancaman. Penyulitan modular boleh melindungi footer, lajur, dan halaman; penyulitan footer menyembunyikan skema dan statistik, manakala kunci lajur mengehadkan akses lajur sensitif. KMS memegang KEK, dan DEK fail atau lajur dirujuk melalui metadata yang dilindungi; pembaca membuka balutan hanya selepas kebenaran. Matriks keupayaan menguji unjuran awam, penapis sensitif, dan predicate pushdown. PARE berbanding PAR1 teks biasa membolehkan platform mengenal pasti risiko pembaca legasi lebih awal. Giliran menggunakan fail baharu, penulisan semula terkawal, dan penggantian atomik, dengan versi kunci dan kelas kegagalan direkodkan; pembatalan menggunakan penolakan KMS ditambah barisan gilir pemulihan.”

Kesilapan biasa

  • Menulis KEK terus ke dalam fail → pemilikan fail membolehkan penyahsulitan → simpan metadata kunci yang dilindungi sahaja.
  • Menyulitkan lajur tanpa menilai footer → skema dan statistik mungkin masih bocor → pilih mod footer daripada model ancaman.
  • Menganggap setiap enjin menyokong kunci lajur → pertanyaan pengeluaran mendedahkan jurang keupayaan → kekalkan matriks enjin dan binding.
  • Menulis ganti fail di tempat asal semasa giliran → gangguan meninggalkan output separa yang tidak boleh dibaca → tulis output sementara dan ganti secara atomik.
  • Memanggil kegagalan pengesahan sebagai fail rosak → penyiasatan mengikut laluan yang salah → asingkan ralat KMS, kebenaran, tag, dan format.

Soalan susulan dan respons

Adakah penyulitan footer melumpuhkan predicate pushdown?

Tidak semestinya. Selepas memperoleh footer dan kunci lajur yang diperlukan, format boleh mengekalkan pembacaan kolumnar dan predicate pushdown. Pengimbas tanpa kunci footer tidak boleh membaca statistik; tingkah laku sebenar bergantung pada sokongan penyulitan enjin.

Mengapa menggunakan kunci peringkat lajur?

Prinsipal yang berbeza mungkin dibenarkan membaca lajur yang berbeza. Kunci lajur menyempitkan kebenaran daripada keseluruhan fail kepada lajur sensitif dan mengurangkan pendedahan apabila memberikan akses kepada lajur awam.

Apakah yang perlu dilakukan oleh pembaca legasi dengan PARE?

Ia harus melaporkan dengan jelas penyulitan modular yang tidak disokong dan mengarahkan pengendali ke pembaca yang serasi atau laluan penyahsulitan-dan-penulisan-semula. Ia tidak sepatutnya menganggap fail PARE secara senyap-senyap sebagai fail PAR1 yang rosak.

Sumber awam

Soalan berkaitan