Masalah dan skop
Sebuah data lake menyimpan alamat e-mel, pengecam pembayaran, rantau, dan agregat awam dalam fail Parquet yang sama. Storan objek, perkhidmatan metadata, dan kluster pengiraan dimiliki oleh pasukan yang berbeza. Kerja yang dibenarkan harus membaca hanya lajur yang diperlukan; pembaca yang tidak dibenarkan tidak boleh melihat nilai sensitif atau metadata yang mendedahkan identiti. Reka bentuk penyulitan peringkat lajur dan pengurusan kunci, kemudian bincangkan footer, indeks, tolakan predikat, putaran, pembaca warisan, dan pemulihan.
Apache Parquet Modular Encryption melindungi modul yang disiri secara berasingan seperti halaman, pengepala halaman, indeks lajur, indeks offset, penapis Bloom, dan footer sambil mengekalkan unjuran lajur biasa, tolakan predikat, pengekodan, dan pilihan pemampatan. Jawapan yang kukuh memisahkan data yang disulitkan, metadata yang dilindungi, kebenaran kunci, dan bukti bahawa bacaan dan tulisan adalah betul.
Apa yang diuji oleh penemuduga
- Bolehkah anda menerangkan hubungan antara kunci lajur, kunci footer, kunci penyulitan data, dan kunci induk?
- Adakah anda tahu bahawa menyulitkan hanya lajur sensitif masih boleh mendedahkan skema, statistik, atau petunjuk identiti?
- Bolehkah anda membandingkan footer yang disulitkan dan footer teks biasa dari segi keselamatan, keserasian, dan kos migrasi?
- Adakah anda memahami integriti AES-GCM dan pengikatan AAD, serta had halaman CTR?
- Bolehkah anda menghubungkan KMS, kebenaran, putaran, sandaran, kegagalan pertanyaan, dan audit ke dalam reka bentuk yang boleh dilaksanakan?
Jawapan yang lemah berkata "guna AES-256 untuk fail tersebut." Jawapan yang kukuh membuktikan modul Parquet mana yang dilindungi, kerja mana yang boleh mendapatkan kunci mana, dan apa yang pembaca warisan dan tolakan predikat perlu lepaskan.
Soalan penjelasan untuk ditanya terlebih dahulu
- Adakah skema, bilangan baris, dan statistik perlu disembunyikan, atau hanya nilai lajur? Ini menentukan sama ada footer perlu disulitkan.
- Kerja, penyewa, dan lajur mana yang boleh dibaca bersama? Ini mentakrifkan domain kunci lajur dan sempadan polisi KMS.
- Adakah enjin pertanyaan dan pustaka PyArrow/Parquet-nya menyokong Modular Encryption? Jika tidak, laluan baca/tulis tidak boleh beralih secara terus.
- Adakah pembaca warisan perlu terus membaca lajur yang tidak disulitkan? Ini menentukan sama ada peralihan footer teks biasa boleh diterima.
- Adakah fail merupakan partition tidak boleh ubah atau ditimpa, disalin, dan diulang semula? Ini menentukan identiti AAD, putaran, dan pengesanan ulang semula.
Jawapan 30 saat
"Saya akan terlebih dahulu memutuskan sama ada footer dan statistik adalah sensitif, kemudian mentakrifkan domain akses mengikut lajur. Setiap fail atau lajur mendapat DEK rawak yang dibungkus oleh MEK atau KEK yang diurus oleh KMS; halaman lajur, pengepala, indeks, dan metadata lajur yang diperlukan menggunakan kunci lajur, manakala footer dilindungi secara berasingan. Saya akan mengutamakan AES-GCM kerana ia menyediakan kerahsiaan dan integriti, dan mengikat jadual, partition, versi fail, dan identiti modul melalui AAD untuk mencegah penggantian. Jika pembaca warisan mesti membaca lajur awam, footer teks biasa boleh menjadi mod peralihan terhad masa, tetapi ia mendedahkan sebahagian metadata; set data sensitif dengan kerahsiaan skema yang ketat harus menggunakan footer yang disulitkan. Saya akan mengesahkan kebenaran KMS, putaran, tolakan predikat, pemulihan ralat, tingkah laku warisan, dan kes gangguan sebelum pelancaran."
Penaakulan langkah demi langkah
1. Senaraikan modul Parquet yang memerlukan perlindungan
Parquet bukan kotak hitam dengan hanya kawasan data. Halaman dan pengepala halaman membawa nilai; indeks lajur, indeks offset, dan penapis Bloom boleh mendedahkan julat atau taburan; footer mengandungi skema, bilangan baris, maklumat pengisihan, statistik, dan metadata nilai kunci. Menyulitkan hanya halaman lajur masih boleh mendedahkan kategori pelanggan atau tetingkap masa.
file
├── row-group
│ └── column chunk
│ ├── dictionary/data pages
│ ├── page headers
│ ├── column index
│ ├── offset index
│ └── bloom-filter modules
└── footer / FileMetaDataGunakan model ancaman untuk memilih set perlindungan. Lajur sensitiviti rendah boleh kekal boleh dibaca untuk alat warisan; lajur sensitif dan statistik, skema, serta identiti fail mereka memerlukan perlindungan footer dan metadata lajur yang lebih kukuh. Keputusan ini lebih penting daripada memilih panjang kunci AES secara berasingan.
2. Reka bentuk penyulitan sampul dan sempadan akses
Berikan setiap fail atau lajur kunci penyulitan data (DEK) rawak, yang dibungkus oleh kunci penyulitan induk (MEK) atau kunci penyulitan kunci (KEK). Simpan MEK dalam KMS organisasi. Sebuah kerja menerima kebenaran pembungkusan melalui identiti jangka pendek; storan objek mengandungi teks sifir dan metadata kunci yang diperlukan, bukan kunci induk teks biasa.
authorized job -> KMS policy -> unwrap DEK -> decrypt footer/columns
object storage -> ciphertext + key metadata onlyPisahkan kunci lajur mengikut penyewa, domain data, atau sensitiviti supaya satu kerja tidak menerima kebenaran untuk keseluruhan jadual. Metadata kunci boleh berupa ID kunci KMS, pengecam bahan terbungkus, atau rujukan luaran; ia bukan rahsia itu sendiri tetapi mempengaruhi audit dan putaran. Semasa putaran kunci induk, bungkus semula DEK terlebih dahulu. Jangan tulis semula semua halaman data tidak boleh ubah hanya kerana MEK berubah.
3. Pilih antara footer yang disulitkan dan footer teks biasa
Footer yang disulitkan menyembunyikan skema, bilangan baris, nama lajur, maklumat pengisihan, dan lebih banyak metadata lajur. Ia memberikan sempadan yang lebih kukuh, tetapi setiap pembaca fail sensitif mesti menyokong penyulitan modular. Parquet menggunakan bait magic PARE untuk fail footer yang disulitkan, jadi pembaca warisan yang mengharapkan PAR1 boleh menolak format tersebut dengan serta-merta.
Footer teks biasa membolehkan pembaca lama melihat sebahagian metadata dan membaca lajur yang tidak disulitkan. Mereka tidak boleh membaca data lajur yang disulitkan, manakala footer ditandatangani untuk integriti. Ini boleh menjadi mod migrasi terhad masa, bukan pengganti keselamatan apabila statistik adalah sensitif.
Uji matriks pembaca: adakah enjin boleh mengesan lajur yang disulitkan, adakah akses yang tidak dibenarkan gagal, bolehkah pertanyaan awam sahaja masih menolak predikat, dan adakah pembaca warisan melaporkan ralat penyulitan tidak disokong yang jelas dan bukannya menganggap fail itu rosak?
4. Pilih algoritma dan ikat AAD
AES-GCM menyediakan penyulitan dan tag pengesahan. AAD mengikat jadual, partition, versi fail, dan kedudukan modul kepada teks sifir, menghalang penyerang daripada menggantikan fail semasa, partition lain, atau kumpulan baris lain di bawah kunci yang sama. Nonce rawak mesti kekal unik untuk sesuatu kunci, dan belanjawan pemanggilan kunci mesti diurus merentas penulis.
Parquet juga mentakrifkan AESGCMCTRV1: modul bukan halaman menggunakan GCM manakala halaman data menggunakan CTR untuk daya pemprosesan. Halaman CTR tidak mempunyai integriti pengesahan GCM. Jika model ancaman memerlukan pengesanan gangguan halaman, utamakan AESGCM_V1 dan bukannya memilih hanya berdasarkan kelajuan CPU.
5. Kekalkan keupayaan pertanyaan dan takrifkan laluan kegagalan
Penyulitan digunakan pada halaman yang dimampatkan dan modul lain, jadi format masih boleh menyatakan unjuran, tolakan predikat, pengekodan, dan pemampatan. Perancang boleh membaca footer atau indeks yang kelihatan dan meminta hanya lajur yang dibenarkan. Namun, jika footer atau indeks lajur disulitkan, perancang memerlukan kebenaran nyahsulit yang sepadan; "saya hanya menanya lajur awam" tidak bermakna secara automatik "tiada kunci diperlukan."
Rekodkan kegagalan nyahsulit, tamat masa KMS, kebenaran yang dibatalkan, ketidakpadanan AAD, dan kegagalan tag pengesahan secara berasingan. Jangan sesekali kembali secara senyap ke teks biasa dan jangan labelkan setiap kegagalan sebagai fail rosak. Simpan ID fail, metadata kunci, versi algoritma, dan prinsipal audit, tetapi jangan log DEK, nilai teks biasa, atau bahan kunci yang lengkap.
6. Sahkan putaran, gangguan, dan pemulihan bencana
Uji bacaan lajur sensitif yang tidak dibenarkan, bacaan lajur awam yang dibenarkan, bacaan sensitif yang dibenarkan, penggantian fail lama, pertukaran kumpulan baris, pengeditan halaman teks sifir, penolakan KMS, bacaan selepas putaran, dan pemulihan merentas rantau. Untuk setiap ujian, rekodkan ralat yang dijangkakan, sama ada teks biasa dikembalikan, dan peristiwa audit.
Pemulihan memerlukan fail yang disulitkan, metadata kunci, pemetaan versi kunci KMS, dan identiti fail AAD. Memulihkan storan tanpa kebenaran KMS menghasilkan fail yang tidak boleh dibaca; memulihkan KMS tanpa awalan AAD mungkin menghalang pengesahan identiti fail. Simpan versi kunci lama melalui tetingkap pengesahan snapshot, ulang semula, dan sandaran sebelum pemusnahan.
Contoh jawapan berkualiti tinggi
"Saya akan bermula dengan mentakrifkan model ancaman: adakah skema, bilangan baris, dan statistik perlu disembunyikan, dan kerja mana yang boleh membaca lajur mana? Parquet Modular Encryption boleh melindungi bukan sahaja halaman lajur tetapi juga pengepala halaman, indeks lajur, indeks offset, penapis Bloom, dan footer. Saya akan menjana DEK rawak untuk fail atau lajur dan membungkusnya dengan MEK/KEK dalam KMS. Kerja mendapat kebenaran pembungkusan melalui identiti jangka pendek, dan fail hanya mengandungi metadata kunci yang boleh diaudit.
Untuk sempadan yang lengkap saya akan menggunakan footer yang disulitkan. Jika pembaca warisan mesti mengakses lajur awam, saya akan menggunakan migrasi footer teks biasa terhad masa dan mendokumenkan metadata yang didedahkannya. Saya akan mengutamakan AES-GCM dengan pengikatan AAD jadual, partition, versi fail, dan identiti modul, dan tidak akan mengorbankan integriti halaman semata-mata kerana halaman CTR lebih laju. Sebelum pelancaran, saya akan menguji unjuran dan tolakan predikat, penolakan KMS, gangguan AAD, putaran kunci, pemulihan merentas rantau, dan tingkah laku warisan. Log akan mengecualikan DEK, teks biasa, dan bahan kunci. Reka bentuk ini menjadikan penyulitan, kebenaran, tingkah laku pertanyaan, dan pemulihan boleh diuji secara bebas."
Kesilapan biasa
- Menggunakan hanya penyulitan lapisan storan → sesiapa yang mempunyai akses objek boleh membaca setiap lajur → reka bentuk sempadan pada lajur, footer, dan modul.
- Menyulitkan halaman sensitif tetapi bukan footer → skema, statistik, dan bilangan baris boleh bocor → pilih footer yang disulitkan atau nyatakan pendedahan footer teks biasa secara eksplisit.
- Melayan DEK sebagai kunci induk jangka panjang → satu kebocoran fail memperluaskan impak putaran dan pembatalan → bungkus DEK rawak dengan MEK atau KEK KMS.
- Mengabaikan AAD → fail lama atau partition lain di bawah kunci yang sama boleh digantikan → ikat identiti fail dan modul serta uji pertukaran.
- Memanggil AESGCMCTR_V1 sebagai pengesahan penuh → halaman CTR mungkin tidak mempunyai pengesahan halaman GCM → pilih berdasarkan keperluan integriti dan uji gangguan.
- Memadam kunci lama dengan serta-merta selepas putaran → snapshot, sandaran, dan kerja ulang semula tidak dapat dipulihkan → kekalkan pemetaan versi dan tetingkap kunci lama yang terkawal.
Soalan susulan dan respons
Pembaca warisan mesti terus membaca lajur awam. Bagaimana anda berhijrah?
Gunakan footer teks biasa buat sementara waktu sambil menyulitkan halaman data lajur sensitif, dan biarkan pembaca warisan mengakses hanya lajur awam. Ukur skema dan statistik yang didedahkan, tetapkan tarikh akhir naik taraf, kemudian beralih ke footer yang disulitkan selepas liputan pembaca baharu dan ujian ulang semula lulus. Simpan versi fail rollback.
Bagaimana anda menghalang halaman daripada partition lain disalin ke dalam fail ini?
Bina identiti AAD yang stabil daripada fail, jadual, partition, kumpulan baris, dan modul. Ketidakpadanan mesti gagal pengesahan. Uji pertukaran versi lama, merentas partition, dan merentas lajur di bawah kunci yang sama dan sahkan bahawa semuanya ditolak.
Adakah setiap bacaan halaman memerlukan perjalanan pulang pergi KMS?
Tidak. Bungkus DEK atau KEK melalui KMS, kemudian cache bahan jangka pendek di dalam proses yang terkawal. Hadkan skop cache dan TTL, batalkan pada putaran atau pembatalan, dan pantau kegagalan KMS dan capain cache. Jangan letakkan panggilan KMS pada laluan panas halaman.
Mengapa tidak guna hanya AES-CTR untuk daya pemprosesan yang lebih tinggi?
CTR tidak mengesahkan integriti, jadi halaman yang diubah suai mungkin tidak dikesan. Gunakan AES-GCM apabila model ancaman memerlukan pengesanan gangguan. Pertimbangkan CTR hanya apabila pertukaran integriti adalah eksplisit dan mekanisme integriti luar disahkan.
Bagaimana anda membuktikan tolakan predikat tidak memintas kebenaran?
Jalankan pertanyaan awam sahaja, penapisan sensitif, dan unjuran sensitif di bawah identiti yang dibenarkan dan tidak dibenarkan. Periksa modul yang diminta dan kebenaran KMS. Rekod audit harus menghubungkan pertanyaan, fail, lajur, metadata kunci, dan sebab penolakan; bilangan baris akhir sahaja tidak mencukupi.