Gesaan dan konteks
Bina perkhidmatan objek WORM berbilang penyewa. Objek mempunyai versi, boleh mempunyai tempoh pengekalan tetap, dan boleh dilindungi tanpa had masa oleh pegangan undang-undang (legal hold). Pelanggan memerlukan penolakan pemadaman dan penulisan ganti semasa tempoh pengekalan, mod tadbir urus dan mod pematuhan, serta laluan audit yang tidak boleh dipintas oleh pentadbir, replikasi atau pembersihan kitaran hayat. Terangkan aliran penulisan, pembacaan, pemadaman, replikasi, pemulihan dan audit.
Perkara yang diuji oleh penemu duga
- Sama ada anda membezakan antara versi objek, tempoh pengekalan, mod tadbir urus, mod pematuhan dan pegangan undang-undang.
- Sama ada ketakbolehubahan (immutability) dikuatkuasakan oleh pelaksanaan storan dan bukannya kelaziman klien.
- Sama ada anda mereka bentuk kebenaran, pintasan tadbir urus, sempadan akaun root dan kelulusan dwi-pihak.
- Sama ada anda mengendalikan replikasi, percubaan semula, penanda pemadaman (delete markers) dan ketekalan jam.
- Sama ada setiap perubahan dasar dan penolakan boleh diaudit secara terbukti.
Soalan untuk dijelaskan terlebih dahulu
- Adakah dasar ditakrifkan mengikut baldi (bucket), awalan (prefix), versi objek atau kontrak penyewa?
- Adakah mod pematuhan mesti menghalang pemadaman oleh akaun root sebelum tamat tempoh?
- Siapakah yang memulakan, membatalkan dan meluluskan pegangan undang-undang, dan adakah kelulusan empat mata (four-eyes approval) diperlukan?
- Adakah replika mesti mengekalkan status kunci dan tarikh, dan apakah kelengahan (lag) rentas rantau yang boleh diterima?
- Adakah klien memerlukan pembacaan yang konsisten secara ketara, penyenaraian versi, eksport bukti, atau hanya penolakan pemadaman?
Jawapan 30 saat
“Saya akan mengasingkan data objek, indeks versi dan dasar pengekalan sambil melakukan komit terhadap statusnya secara atomik. Operasi penulisan mencipta versi yang tidak boleh diubah; enjin dasar mengira retainUntil, mod dan status pegangan undang-undang, dan setiap laluan pemadaman memeriksa fakta tersebut di dalam sempadan pengesahan yang sama. Mod tadbir urus membenarkan pintasan yang dibenarkan secara eksplisit, manakala mod pematuhan menolak setiap pemadaman sebelum tamat tempoh; pegangan undang-undang tidak mempunyai tarikh dan hanya boleh dibatalkan melalui aliran kerja kelulusan. Replikasi membawa metadata versi dan kunci. Penulisan, pemadaman yang ditolak, pintasan dan perubahan dasar disalurkan ke log audit tambah sahaja (append-only) yang boleh menghasilkan bukti.”
Perbincangan terperinci langkah demi langkah
1. Modelkan versi dan status kunci
Kunci objek bukanlah entiti yang dilindungi; sebaliknya objectVersionId. Simpan ringkasan kandungan (content digest), masa penulisan, retainUntil, mod, pegangan undang-undang, penyewa dan versi dasar. Pemadaman mudah mencipta penanda pemadaman dan bukannya memadam versi yang dilindungi secara fizikal; pemadaman kekal mesti menamakan versi dan melepasi pemeriksaan kunci.
2. Reka bentuk penulisan dan pengekalan lalai
Dasar baldi atau penyewa boleh menyediakan mod dan tempoh lalai, manakala penulisan boleh meminta nilai pada peringkat objek. Sahkan tempoh maksimum, sumber masa dan kebenaran, kemudian ikat metadata yang dikira secara atomik pada versi tersebut. Perubahan dasar mempengaruhi versi masa hadapan dan tidak boleh memendekkan pengekalan sedia ada secara retroaktif.
{
"objectVersionId": "v_91c2",
"retention": {"mode": "COMPLIANCE", "retainUntil": "2027-01-01T00:00:00Z"},
"legalHold": "OFF",
"policyVersion": 18
}3. Kuat kuasakan sekatan pemadaman dan penulisan ganti
Pemadaman, penulisan ganti, pemendekan pengekalan dan pembatalan pegangan undang-undang menggunakan satu perkhidmatan pengesahan. Ia membaca versi terkini dan memeriksa masa, mod, kebenaran prinsipal dan status pegangan secara bersyarat. Mod tadbir urus memerlukan kebenaran pintasan eksplisit dan penanda permintaan; mod pematuhan menolak semua pemadaman sebelum tamat tempoh, termasuk oleh pentadbir. Penolakan mengembalikan ralat yang stabil dan ID audit.
4. Reka bentuk pegangan undang-undang dan kelulusan
Pegangan undang-undang adalah bebas daripada pengekalan dan melindungi versi sehingga ia dibatalkan secara eksplisit. Aliran kerja pembatalan mengikat kes atau kontrak, sebab, pelaku, pelulus dan pengesahan bertingkat; penyewa berisiko tinggi boleh memerlukan dua orang. Selepas pembatalan, retainUntil yang belum tamat tempoh masih melindungi versi tersebut, jadi pegangan undang-undang bukan pengganti pengekalan.
5. Kendalikan replikasi, pemulihan dan jam
Replikasi memindahkan kandungan, ID versi, digest dan metadata kunci yang lengkap; sasaran mengesahkan tandatangan sumber dan versi dasar sebelum melakukan komit. Sumber terus menolak pemadaman sehingga sasaran mengesahkannya, dan sasaran tidak boleh mendakwa pematuhan sebelum pengesahan kunci dilakukan. Pemulihan mencipta versi baharu dan tidak pernah mengubah versi lama. Bandingkan tarikh menggunakan perkhidmatan masa terkawal dan cap masa audit monotonik, bukan jam satu mesin sahaja.
6. Bina audit dan bukti
Audit penulisan, penciptaan versi, pemadaman yang berjaya atau ditolak, pintasan, perubahan pegangan undang-undang, pengesahan replikasi dan penerbitan dasar. Simpan peristiwa dalam log tambah sahaja yang berasingan dengan rantai cincangan (hash) atau tandatangan serta akses pertanyaan yang terhad. Eksport inventori versi, status kunci dan digest audit secara berkala supaya pelanggan dapat membuktikan perlindungan pada sesuatu masa.
Contoh jawapan yang mantap
“Saya menganggap metadata versi dan kunci sebagai fakta yang tidak boleh diubah, dan setiap laluan pemadaman membaca status semasa serta melakukan pemeriksaan bersyarat. Semasa penulisan, enjin dasar mengira pengekalan, mod dan pegangan undang-undang serta mengikatnya secara atomik pada versi tersebut. Mod tadbir urus membenarkan pintasan yang dibenarkan secara eksplisit; mod pematuhan menolak semua pemadaman sebelum tamat tempoh. Pegangan undang-undang hanya dibatalkan dengan kes, sebab dan kelulusan. Replikasi membawa metadata versi, digest dan kunci serta hanya menjadi patuh selepas pengesahan sasaran. Penolakan, pintasan, perubahan dasar dan replikasi dimasukkan ke dalam log audit bertandatangan tambah sahaja, yang mana klien boleh mengeksport inventori versi dan digest bukti.”
Kesilapan lazim
- Memeriksa kunci hanya pada lapisan API → laluan pembersihan atau replikasi akan memintasnya → periksa semula dalam pelaksanaan pemadaman storan.
- Menerapkan perubahan dasar baldi pada versi lama → pengekalan sedia ada boleh dipendekkan secara tidak sah → buat versi dasar dan hanya kenakan kesan pada penulisan masa hadapan.
- Menganggap pegangan undang-undang sebagai tarikh tetap → pemadaman automatik selepas tamat tempoh mungkin melanggar keperluan kes → kekalkan pegangan secara bebas dengan pembatalan eksplisit.
- Menjadikan pintasan tadbir urus secara tersirat → penyalahgunaan kuasa istimewa tidak dapat dijelaskan → wajibkan kebenaran eksplisit, penanda dan audit kelulusan.
- Mengisytiharkan pematuhan sebaik sahaja replikasi dihantar → sasaran mungkin kehilangan metadata kunci → sahkan versi sasaran dan status kunci terlebih dahulu.
Soalan susulan dan respons
Mengapakah DELETE mudah boleh berjaya tanpa memadam versi?
Dengan objek berversi, DELETE mudah boleh mencipta penanda pemadaman baharu yang menyembunyikan versi semasa manakala versi yang dilindungi kekal wujud. Pemadaman kekal mesti menentukan ID versi dan melepasi sekatan kunci.
Mengapakah mod pematuhan memerlukan sempadan akaun yang lebih kukuh?
Maksudnya ialah tiada prinsipal, termasuk akaun root atau pentadbir storan, yang boleh memadam sebelum tarikh pengekalan. Pemadaman mesti diasingkan daripada geran superuser IAM biasa supaya peranan berkuasa istimewa tidak boleh membatalkan pematuhan.
Bagaimanakah anda membuktikan bahawa pemadaman yang ditolak tidak hilang daripada audit?
Gunakan satu ID permintaan untuk keputusan pengesahan, status versi dan peristiwa audit, kemudian tulis peristiwa tersebut ke log tambah sahaja yang berasingan. Selaraskan permintaan pemadaman, inventori versi dan peristiwa penolakan secara berkala serta bekukan operasi berisiko tinggi sekiranya terdapat percanggahan.
Bolehkah sumber dipadamkan semasa replikasi tertangguh?
Tidak. Kunci sumber kekal sehingga sasaran mengesahkan digest kandungan, ID versi dan metadata pengekalan; jika tidak, kegagalan replikasi akan mewujudkan tempoh tanpa sebarang salinan yang patuh.