Gesaan dan skop
Platform berbilang penyewa sudah menyimpan peristiwa audit, tetapi pasukan keselamatannya memerlukan kaedah bebas untuk menentukan sama ada rekod sejarah telah dipadam, disusun semula, atau dikira semula oleh seseorang yang mempunyai akses pangkalan data utama. Reka bentuk protokol pengesahan, dengan fokus pada kanonikalisasi, rantai cincangan bersegmen, tandatangan, sauh luaran, output pengesah, dan pengendalian selang masa yang tidak dapat disahkan.
Rekod tambah sahaja (append-only) dan rantai cincangan membolehkan pengeditan kemudian dikesan, tetapi ia tidak membuktikan bahawa sesuatu peristiwa itu benar semasa mula-mula ditulis. Soalan ini menguji pemodelan ancaman, bukti, dan operasi; storan objek tidak boleh ubah (immutable) semata-mata bukanlah reka bentuk yang lengkap.
Perkara yang dinilai oleh penemu duga
Menilai medan peristiwa untuk pelaku (actor), sasaran, tindakan, masa, sumber, dan hasil; gandingan yang boleh dipercayai dengan transaksi perniagaan; rantai cincangan yang bersegmen dan disauhkan; pengasingan penyewa, indeks, kebenaran kunci, pengekalan, pemadaman, dan pengesah yang boleh digunakan.
Soalan untuk Dijelaskan Sebelum Menjawab
- Bolehkah pelaku ancaman mengubah suai stor peristiwa, katalog cincangan, kunci menandatangani, dan medium sauh?
- Adakah pengesahan perlu mengesan pemadaman, pengubahsuaian, dan penyusunan semula, atau turut memperakui sumber peristiwa?
- Adakah platform, pasukan keselamatan, atau juruaudit luaran yang akan menjalankan pengesah?
- Berapa lamakah rekod boleh kekal tanpa disauhkan, dan bagaimanakah aliran kerja penyiasatan patut diturunkan tarafnya selepas berlakunya jurang?
Rangka kerja jawapan 30 saat
"Saya akan mentakrifkan peristiwa kanonikal yang tidak boleh ubah dan menerbitkannya melalui outbox selepas transaksi perniagaan melakukan komit. Penulis terasing mengumpulkan peristiwa mengikut penyewa dan masa, membina rantai cincangan, dan secara berkala menyauhkan setiap kepala rantai dalam stor tambah sahaja bebas atau lejar ketelusan. Pertanyaan menggunakan indeks yang boleh dibina semula, tidak sekali-kali meminda bukti. Pengesah mengira semula rantai dan membandingkan sauh. Integriti datang daripada rantai; kebenaran peristiwa masih datang daripada kebenaran perniagaan dan rekod transaksi."
Jawapan mendalam langkah demi langkah
Langkah 1: Tentukan model ancaman dan matlamat bukti
Andaikan pentadbir aplikasi atau pangkalan data boleh memadam, menyusun semula, atau menulis semula rekod, dan perkhidmatan sauh mungkin tidak tersedia. Tentukan sama ada matlamatnya adalah untuk mengesan peristiwa yang hilang, diubah, atau disusun semula, atau untuk membuktikan bahawa sesuatu subjek telah bertindak. Log audit tidak menggantikan kawalan akses.
Langkah 2: Reka bentuk peristiwa kanonikal
Sertakan ID peristiwa, penyewa, pelaku dan sumber identiti, tindakan, sumber, ikhtisar (digest) sebelum dan selepas, ID permintaan, masa peristiwa, jujukan pelayan, hasil, dan versi dasar. Kanonikalkan JSON dan medan yang serupa supaya susunan pensirian tidak mengubah cincangan. Simpan hanya ikhtisar atau rujukan terkawal untuk nilai sensitif.
Langkah 3: Gandingkan penulisan perniagaan dan audit
Transaksi perniagaan menulis pada outbox; pengguna yang boleh dipercayai memancarkan peristiwa selepas komit. Jangan bergantung pada pengelogan usaha terbaik (best-effort) selepas penulisan perniagaan. Percubaan semula adalah idempoten mengikut ID peristiwa; kegagalan dihantar ke baris gilir terasing dan amaran dikeluarkan. Pendam masa (latency) audit mungkin terhad, tetapi kehilangan data tidak boleh berlaku secara senyap.
Langkah 4: Bina rantai cincangan bersegmen
Simpan cincangan terdahulu, peristiwa kanonikal, dan cincangan semasa, seperti H(previous || event || metadata). Putarkan segmen mengikut penyewa, tarikh, atau saiz dan rekodkan permulaan, penamat, dan jujukan segmen. Susunan rentas-syad menggunakan jujukan pelayan dan masa penerimaan dan bukannya jam klien semata-mata.
Langkah 5: Sauh secara luaran dan urus kunci
Tulis setiap kepala segmen secara berkala ke medium tambah sahaja terasing bersama masa sauh, ID segmen, dan tandatangan. Simpan kunci menandatangani dalam perkhidmatan kunci terkawal; penggiliran dan pembatalan diaudit secara tersendiri. Sauh bebas menghalang penulis pangkalan data daripada mengira semula dan menggantikan keseluruhan rantai secara tidak kelihatan.
Langkah 6: Asingkan pertanyaan dan kebenaran
Bina indeks pelaku, sumber, tindakan, dan masa dalam indeks carian atau replika baca. Indeks boleh dibina semula; bukti tidak boleh dikemas kini. Penguatkuasaan pemeriksaan penyewa, peranan, dan tujuan, serta sertakan ikhtisar pengesahan dalam eksport. Setiap bacaan, eksport, atau pengesahan ialah peristiwa audit baharu.
Langkah 7: Kendalikan pengekalan, pemadaman, dan privasi
Tetapkan dasar pengekalan, WORM, atau kunci objek mengikut peraturan. Untuk pemadaman data peribadi, gunakan pemadaman kriptografi, penyuntingan (redaction) medan, atau ikhtisar tidak boleh balik sambil mengekalkan bukti bahawa pemadaman telah berlaku; jangan sekali-kali menulis semula sejarah secara senyap. Selaraskan pengekalan sandaran, cache, dan sauh.
Langkah 8: Sahkan, pulihkan, dan pantau
Pengesah memeriksa kesinambungan rantai, jujukan, cincangan kanonikal, tandatangan, dan sauh luaran. Jalankan pengesahan sampel dan penuh secara berkala, memantau jurang, kelengahan (lag), penduaan, kegagalan penauhan, dan masa pengesahan. Pulihkan dengan memainkan semula outbox dan segmen tambah sahaja daripada sauh dipercayai yang terakhir, mengasingkan julat yang tidak dapat dibuktikan.
Pertukaran Imbangan dan Sempadan yang Lebih Mendalam
#### Satu Rantai Berbanding Rantai Bersegmen
Satu rantai memudahkan pertanyaan tetapi merumitkan pemulihan dan penulisan serentak. Segmen membolehkan pengasingan penyewa, pengesahan selari, dan pengurusan pengekalan, dengan kos sauh segmen dan metadata susunan.
#### Rantai Cincangan Berbanding Log Bertandatangan
Rantai cincangan adalah murah dan mengesan pengeditan; tandatangan menambah pengesahan rentas organisasi dan kos pengurusan kunci. Gabungkan kedua-duanya apabila bukti luaran diperlukan.
#### Integriti Berbanding Kebenaran
Sesuatu rantai membuktikan hubungan antara rekod dan ketekalan sauh, bukannya membuktikan kandungan peristiwa itu benar. Kebenaran masih bergantung pada identiti, kebenaran (authorization), transaksi, dan bukti bebas.
Latih Tubi Kegagalan dan Evolusi
#### Rekod Pertengahan Dipadamkan
Padamkan satu objek daripada segmen dan sahkan bahawa jurang jujukan dan pemutusan rantai dilaporkan bersama lokasi segmen dan sauh.
#### Pentadbir Pangkalan Data Mengira Semula Cincangan
Tulis semula segmen dan gantikan kepalanya; sauh bebas mesti menolak rantai baharu sementara rantai lama kekal boleh diambil untuk penyiasatan.
#### Perkhidmatan Sauh Tidak Tersedia
Putuskan sambungannya dan sahkan bahawa segmen memasuki keadaan sauh belum selesai, peristiwa kekal tahan lama, dan sauh ditambah mengikut susunan selepas pemulihan berserta amaran.
Contoh Jawapan Berkualiti Tinggi
"Saya akan mentakrifkan sempadan pengesahan terlebih dahulu: penyerang mungkin mengubah stor peristiwa dan indeks carian tetapi tidak boleh menulis semula sauh bebas atau mendapatkan kunci pengesahan. Penulis menukar setiap peristiwa menjadi perwakilan kanonikal yang deterministik, mensegmenkan rekod mengikut penyewa dan masa, dan menyimpan nombor jujukan, cincangan terdahulu, dan cincangan semasa. Ia menandatangani setiap hujung segmen dan secara berkala melakukan komit kepala rantai ke medium tambah sahaja di bawah kebenaran berasingan.
Pengesah bebas bermula daripada sauh yang dipercayai, mengira semula cincangan kanonikal, dan memeriksa kesinambungan jujukan, pautan antara segmen, tandatangan, masa sauh, dan dasar pengekalan. Pemadaman menghasilkan jurang jujukan, pengubahsuaian menghasilkan ketidakpadanan cincangan, penyusunan semula memutuskan pautan pendahulu, dan pentadbir yang mengira semula keseluruhan segmen masih tidak dapat memadankan sauh luaran. Hasilnya melaporkan julat yang disahkan, kedudukan kegagalan pertama, tetingkap tanpa sauh, dan rujukan bukti berbanding satu nilai Boolean. Jika sesuatu selang masa tidak dapat disahkan, saya membekukan eksport yang terjejas, memelihara objek asal, dan memberitahu pihak keselamatan. Rantai tersebut mewujudkan integriti rekod; bukti identiti, kebenaran, dan transaksi perniagaan masih diperlukan untuk membuktikan kebenaran peristiwa."
Kesilapan Lazim
- Meletakkan data dalam storan WORM tanpa mentakrifkan pihak yang boleh menulis atau menukar pengekalan.
- Mencincang JSON mentah tanpa mengkanonikalkan susunan medan, pengekodan, dan cap masa.
- Menganggap rantai cincangan yang sah sebagai bukti bahawa setiap peristiwa adalah benar.
- Membina semula dan menggantikan rantai yang gagal secara automatik, sekali gus memusnahkan bukti penyiasatan.
Soalan Susulan dan Maklum Balas
Apakah yang diselesaikan oleh sauh luaran?
Ia menghalang pengendali yang mempunyai akses tulis stor utama daripada mengira semula keseluruhan segmen secara senyap dan menggantikan kepala rantainya. Sauh memerlukan kebenaran dan pengekalan berasingan.
Bagaimanakah pengesah boleh membuktikan bahawa rekod telah dipadamkan?
Ia mengesan kedua-dua jurang jujukan dan cincangan seterusnya yang rosak, kemudian menggunakan sauh dipercayai yang terdekat untuk mengehadkan selang masa yang hilang. Ketiadaan rekod daripada indeks carian semata-mata tidak mencukupi.
Apakah yang berlaku semasa perkhidmatan sauh tidak tersedia?
Teruskan menulis segmen tempatan berjujukan dan tandakannya sebagai belum selesai. Hantarkannya mengikut susunan selepas pemulihan. Tetingkap tanpa sauh mesti dipaparkan dalam output pengesah serta amaran dan tidak boleh digambarkan sebagai disahkan sepenuhnya.
Bagaimanakah selang masa yang tidak dapat disahkan patut dikendalikan?
Kuantinkan eksport yang terjejas, pelihara objek asal, tandatangan, dan bukti sauh, maklumkan kepada pihak keselamatan, dan rekodkan tindak balas tersebut. Pemulihan tidak boleh melabelkan semula selang masa yang tidak diketahui sebagai lengkap.