Topik wawancara representatif

Wawancara data engineering: Bagaimana Parquet Modular Encryption harus menentukan batasan kunci dan pembacaan?

DataSedang
Tim Redaksi Offer.ccDipublikasikan Diperbarui

Pertanyaan

Sebuah data lake harus melindungi kolom sensitif sambil tetap mempertahankan pembacaan kolumnar. Jelaskan mode footer dan kolom pada Parquet Modular Encryption, lalu rancang kustodi kunci, perilaku kueri, kegagalan legacy reader, dan rotasi.

Petunjuk dan cakupan

Sebuah data lake memiliki kolom publik dan sensitif dalam file Parquet. Tim ingin mengenkripsi data dan metadata sensitif sambil tetap mempertahankan proyeksi, predicate pushdown, dan kompresi. Rancang enkripsi footer, kunci kolom, kustodi kunci, otorisasi baca, perilaku legacy reader, dan pemulihan rotasi.

Pertanyaan ini membahas kemampuan dalam spesifikasi Parquet Modular Encryption; ini tidak mengasumsikan setiap engine atau binding bahasa mendukung konfigurasi kunci yang sama.

Hal yang diuji oleh pewawancara

  • Apakah Anda membedakan footer terenkripsi, kolom terenkripsi, dan proteksi khusus halaman (page-only).
  • Apakah KEK, DEK, metadata kunci, dan izin KMS dipisahkan alih-alih menyimpan master key di dalam file.
  • Apakah Anda memahami bagaimana footer terenkripsi memengaruhi skema, statistik, predicate pushdown, dan legacy reader.
  • Apakah rotasi, pencabutan (revocation), penulisan ulang (rewrite), dan kegagalan dekripsi yang dapat diamati dirancang secara bersamaan.

Pertanyaan klarifikasi

  1. Kolom mana yang sensitif, dan apakah skema, row group, dan statistik juga harus disembunyikan?
  2. Kolom mana yang dibutuhkan oleh engine kueri, dan apakah engine tersebut mendukung kunci kolom serta dekripsi footer?
  3. Apakah kustodi kunci berupa layanan terpusat, cloud HSM, atau kunci yang disuntikkan pemanggil (caller-injected)?
  4. Apakah file direplikasi lintas akun atau wilayah, dan bagaimana cadangan (backup) memperoleh izin dekripsi?
  5. Apakah rotasi menargetkan file baru, penulisan ulang historis, atau pencabutan langsung?

Jawaban 30 detik

“Parquet Modular Encryption dapat melindungi data dan metadata file sambil mempertahankan fitur kolumnar, tetapi footer yang terenkripsi menyembunyikan informasi skema dan row group dari pembaca tanpa kuncinya. Saya akan memisahkan master key KMS dari kunci file atau kolom dan mengotorisasi pembaca per kolom. Legacy reader harus melaporkan enkripsi yang tidak didukung daripada menyebut file tersebut rusak (corrupt). Rotasi menulis file baru dengan kunci yang baru dibungkus (wrapped) dan menulis ulang riwayat secara terkendali, sambil mencatat versi kunci dan kegagalan. Matriks kapabilitas harus memverifikasi predicate pushdown untuk setiap engine.”

Desain langkah demi langkah

1. Memilih cakupan perlindungan

Enkripsi footer melindungi FileMetaData, termasuk row group dan column chunk; enkripsi kolom dapat menggunakan kunci yang berbeda untuk kolom sensitif. Jika footer tetap berupa plaintext, pembaca mungkin melihat skema atau statistik meskipun tidak dapat membaca halaman terenkripsi. Pilih cakupan berdasarkan model ancaman (threat model).

2. Memisahkan tanggung jawab kunci

KMS atau HSM menyimpan key-encryption keys (KEK). Proses penulisan membuat atau memperoleh data-encryption keys (DEK) dan menyimpan metadata kunci yang dilindungi di dalam file. Layanan otorisasi pembaca menyelesaikan metadata dan meminta KMS untuk membuka bungkus (unwrap) hanya kunci yang diizinkan; file tidak boleh berisi master key yang dapat digunakan secara langsung.

3. Mengevaluasi kapabilitas kueri

Apache Parquet mendokumentasikan bahwa modular encryption dapat mengenkripsi dan mengautentikasi data serta metadata sambil mempertahankan proyeksi, predicate pushdown, encoding, dan kompresi. Engine kueri tetap memerlukan kunci yang relevan terlebih dahulu. Footer yang terenkripsi dapat memblokir pemindai tanpa kunci untuk membaca skema dan statistik, jadi uji proyeksi khusus publik, filter kolom sensitif, dan proyeksi campuran.

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

4. Mengidentifikasi file dan legacy reader

File dengan footer terenkripsi menggunakan magic bytes yang berbeda: Apache Parquet mendokumentasikan PARE, sedangkan file plaintext menggunakan PAR1. Legacy reader dapat mengklasifikasikan file terenkripsi sebagai tidak didukung. Tandai kapabilitas dalam registri atau probe, daripada menunggu kesalahan kerusakan yang tidak jelas selama kueri.

5. Merancang rotasi dan pencabutan

Rotasi pertama-tama harus memengaruhi file baru: DEK baru dibungkus oleh KEK baru, dan file lama ditulis ulang sesuai dengan retensi. Pencabutan langsung membuat KMS menolak unwrapping dan pembacaan gagal; platform membutuhkan antrean penulisan ulang, versi kunci, dan langkah-langkah pemulihan. Tulis ulang ke file sementara dan ganti secara atomik sehingga gangguan tidak dapat meninggalkan file yang setengah terenkripsi.

6. Mengamati kegagalan berdasarkan lapisan

Catat ID file, versi kunci footer atau kolom, prinsipal, latensi KMS, jenis kegagalan dekripsi, dan kolom yang dikueri; jangan pernah mencatat kunci atau nilai plaintext. Pisahkan penolakan otorisasi, kunci yang hilang, kegagalan tag autentikasi, legacy reader yang tidak didukung, dan kerusakan file untuk peringatan serta remediasi.

Contoh jawaban berkualitas tinggi

“Saya akan memilih apakah akan menyembunyikan footer berdasarkan model ancaman. Modular encryption dapat melindungi footer, kolom, dan halaman; enkripsi footer menyembunyikan skema dan statistik, sementara kunci kolom membatasi akses kolom sensitif. KMS menyimpan KEK, dan DEK file atau kolom dirujuk melalui metadata yang dilindungi; pembaca melakukan unwrap hanya setelah otorisasi. Matriks kapabilitas menguji proyeksi publik, filter sensitif, dan predicate pushdown. PARE versus PAR1 plaintext memungkinkan platform mengidentifikasi risiko legacy reader lebih awal. Rotasi menggunakan file baru, penulisan ulang terkendali, dan penggantian atomik, dengan versi kunci dan kelas kegagalan dicatat; pencabutan menggunakan penolakan KMS ditambah antrean pemulihan.”

Kesalahan umum

  • Menulis KEK langsung ke dalam file → kepemilikan file memungkinkan dekripsi → simpan hanya metadata kunci yang dilindungi.
  • Mengenkripsi kolom tanpa mengevaluasi footer → skema dan statistik mungkin masih bocor → pilih mode footer dari model ancaman.
  • Mengasumsikan setiap engine mendukung kunci kolom → kueri produksi mengungkap kesenjangan kapabilitas → pelihara matriks engine dan binding.
  • Menimpa file secara in-place selama rotasi → gangguan meninggalkan output parsial yang tidak dapat dibaca → tulis output sementara dan ganti secara atomik.
  • Menyebut kegagalan autentikasi sebagai file corrupt → investigasi mengikuti jalur yang salah → pisahkan kesalahan KMS, otorisasi, tag, dan format.

Pertanyaan lanjutan dan tanggapan

Apakah enkripsi footer menonaktifkan predicate pushdown?

Tidak selalu. Setelah memperoleh footer dan kunci kolom yang diperlukan, format dapat mempertahankan pembacaan kolumnar dan predicate pushdown. Pemindai tanpa kunci footer tidak dapat membaca statistik; perilaku sebenarnya bergantung pada dukungan enkripsi engine.

Mengapa menggunakan kunci tingkat kolom?

Prinsipal yang berbeda mungkin diizinkan untuk membaca kolom yang berbeda. Kunci kolom mempersempit otorisasi dari seluruh file ke kolom sensitif dan mengurangi paparan saat memberikan akses ke kolom publik.

Apa yang harus dilakukan legacy reader terhadap PARE?

Ia harus dengan jelas melaporkan modular encryption yang tidak didukung dan mengarahkan operator ke pembaca yang kompatibel atau jalur dekripsi-dan-tulis-ulang. Ia tidak boleh secara diam-diam memperlakukan file PARE sebagai file PAR1 yang rusak.

Sumber publik

Pertanyaan terkait