Prompt dan konteks
Sebuah platform boleh menjana pernyataan asal-usul binaan (provenance) untuk binari dan imej kontena, manakala pengguna mengesahkan pernyataan tersebut terhadap ringkasan (digest) artifak dengan CLI. Pasukan keselamatan mahu penggunaan pengeluaran mengesahkan setiap artifak; pembangun bimbang bahawa saluran paip legasi, pembina luaran dan rangkaian luar talian tidak dapat menerimanya dengan segera. Cadangkan keputusan produk dan pelan pelancaran, termasuk perkara yang dibuktikan dan tidak dibuktikan oleh perakuan, pembahagian segmen, tetapan lalai, migrasi, metrik dan undur balik (rollback). Kemahiran teras ialah tadbir urus produk dan penaakulan pertukaran nilai (trade-off), jadi ini adalah soalan product.
Perkara yang dinilai oleh penemu duga
Pertama, sama ada anda membezakan "pernyataan wujud" daripada "pernyataan dipercayai": pengesahan masih memerlukan tandatangan, digest artifak, identiti aliran kerja (workflow) dan konteks dasar.
Kedua, sama ada anda membahagikan pengguna mengikut risiko dan keupayaan dan bukannya menggunakan satu suis mandatori untuk projek hobi, pengeluaran perusahaan dan persekitaran yang dikawal selia.
Ketiga, sama ada anda mereka bentuk migrasi progresif daripada pemerhatian (observe) kepada amaran (warn), sekatan terpilih dan sekatan lalai dengan pengecualian yang boleh diaudit.
Keempat, sama ada metrik meliputi keselamatan, pengalaman pembangun, liputan dan hasil perniagaan berbanding bilangan pernyataan yang dijana.
Kelima, sama ada model ancaman merangkumi pembina yang dikompromi, dasar yang salah, imej yang dibungkus semula dan pengesahan luar talian.
Soalan untuk dijelaskan terlebih dahulu
- Adakah pengguna sasaran merupakan projek sumber terbuka, SaaS biasa atau platform pengeluaran yang dikawal selia?
- Adakah binaan datang daripada GitHub Actions, CI pihak ketiga, mesin pembangun atau beberapa sumber?
- Bolehkah pengeluaran membaca pernyataan dalam talian, atau adakah ia mesti menyokong rangkaian luar talian dan terpencil?
- Adakah pengecualian sementara dibenarkan, siapa yang meluluskannya dan bilakah ia tamat tempoh?
- Adakah pengesahan dilakukan oleh platform, kemasukan kluster atau saluran paip pelanggan?
- Adakah matlamatnya kebolehskalaan audit rantaian bekalan, menyekat artifak yang tidak dibenarkan atau tindak balas insiden yang lebih pantas?
Jawapan 30 saat
"Saya mentakrifkan perakuan sebagai isyarat asal binaan yang boleh disahkan, bukan jaminan automatik bahawa kod sumber adalah selamat. Saya membahagikan pengeluaran kritikal, pengeluaran biasa, pembangunan dan binaan luaran mengikut risiko dan keupayaan migrasi. Saya bermula dengan pemerhatian dan amaran, kemudian menyekat secara terpilih dan akhirnya menyekat secara lalai pengeluaran berisiko tinggi, dengan pengecualian yang mempunyai skop dan tarikh luput. Metrik merangkumi liputan pengesahan yang sah, sekatan artifak tidak dibenarkan, sekatan palsu, kependaman penggunaan, kadar pengecualian dan masa tindak balas insiden. Pembina yang dikompromi, pembungkusan semula dan pengesahan luar talian mendapat model ancaman berasingan, manakala pelancaran berperingkat (gray rollout) mengekalkan undur balik yang pantas dan diaudit."
Penyelesaian terperinci
Langkah 1: Tentukan masalah pengguna dan sempadan kepercayaan
Perakuan artifak mengikat digest artifak kepada asal-usul binaan yang dituntut, membantu pengguna mengenal pasti aliran kerja, komit dan pembina yang menghasilkannya. Ia tidak membuktikan bahawa sumber tidak mempunyai kelemahan atau membaiki pembina yang dikompromi. Salinan produk dan dasar mesti memisahkan asal-usul, pengesahan tandatangan, pengimbasan dan kebenaran penggunaan.
Langkah 2: Bahagikan segmen pengguna
Asingkan perkhidmatan pengeluaran kritikal, pengeluaran biasa, pratonton pembangunan dan penyumbang luaran. Pengeluaran kritikal memerlukan pengesahan yang kukuh dan pengecualian yang singkat; pembangunan mengutamakan maklum balas yang pantas; binaan luaran mungkin memerlukan berkas yang dimuat naik atau binaan semula yang dipercayai. Pembahagian segmen menentukan tetapan lalai, kos sokongan dan susunan migrasi.
Langkah 3: Reka bentuk gelung pengesahan
Pengeluar menulis pernyataan selepas binaan. Pengguna mengesahkannya terhadap digest artifak dan menyemak repositori, komit, cawangan, pembina dan pengeluar terhadap dasar. Keputusan mesti menerangkan sebab yang boleh diambil tindakan seperti pernyataan hilang, ketidakpadanan digest, sumber tidak dibenarkan atau tamat tempoh dan bukannya hanya mengembalikan nilai boolean.
Langkah 4: Rancang dasar progresif
Mula-mula ukur liputan dan sebab kegagalan dalam mod baca sahaja. Seterusnya berikan amaran dalam bukan pengeluaran. Kemudian sekat perkhidmatan pengeluaran terpilih, dan akhirnya kembangkan kepada sekatan lalai. Setiap peringkat memerlukan kriteria keluar untuk sekatan palsu, kependaman pengesahan, migrasi saluran paip legasi dan jumlah sokongan. Pengecualian merekodkan pemilik, sebab, skop dan tarikh luput.
Langkah 5: Sokong pelbagai asal binaan
GitHub Actions boleh menjana pernyataan secara langsung, tetapi CI pihak ketiga, pembina luaran dan binaan luar talian memerlukan bukti yang diimport atau aliran pengeluar yang dipercayai. Produk mesti mendokumentasikan format bukti, pengikatan digest dan arahan pengesahan supaya memuat naik fail JSON tidak disalah anggap sebagai pernyataan yang dipercayai.
Langkah 6: Tentukan metrik dan kawalan (guardrails)
Metrik teras ialah liputan pengesahan pengeluaran yang sah, kadar sekatan artifak tidak dibenarkan, kadar sekatan palsu, kependaman penggunaan p95, masa migrasi dan kadar tamat tempoh pengecualian. Kawalan merangkumi kadar kegagalan binaan, masa undur balik, tiket sokongan, sekatan pelanggan luar talian dan ketersediaan pernyataan semasa insiden keselamatan. Bilangan pernyataan ialah metrik penggunaan, bukan hasil keselamatan.
Langkah 7: Sediakan pelancaran berperingkat dan undur balik
Dayakan mengikut organisasi, repositori atau perkhidmatan sambil mengekalkan versi dasar dan log keputusan. Jika pengesahan tidak tersedia, bezakan fail-closed daripada fail-open terkawal: laluan kritikal boleh menyekat seketika dengan kelulusan manual, manakala persekitaran berisiko rendah boleh merekodkan log dan meneruskan. Undur balik melumpuhkan penguatkuasaan tanpa memadamkan bukti sedia ada atau rekod audit.
Contoh jawapan berkualiti tinggi
"Matlamat produk adalah untuk menghalang artifak yang asalnya melanggar dasar daripada sampai ke pengeluaran, bukan mendakwa bahawa asal-usul membuktikan kod adalah selamat. Saya membahagikan pelanggan mengikut risiko dan keupayaan binaan serta menyediakan laluan bukti untuk GitHub Actions, CI pihak ketiga dan pembina luar talian. Pelancaran bergerak melalui pemerhatian, amaran, sekatan terpilih dan sekatan lalai, hanya berkembang apabila sekatan palsu, kependaman dan kadar migrasi memenuhi ambang. Pengesahan menerangkan bukti yang hilang, ketidakpadanan digest dan asal yang tidak dibenarkan; pengecualian memerlukan kelulusan, tarikh luput dan audit. Saya mengukur liputan yang sah, sekatan tidak dibenarkan, sekatan palsu dan masa tindak balas insiden, dengan sandaran terkawal untuk gangguan pengesah."
Kesilapan lazim
- Menganggap bilangan pernyataan sebagai keselamatan → banyak pernyataan mungkin tidak sah atau tidak disahkan → ukur pengesahan yang sah dan hasil sekatan.
- Penguatkuasaan mandatori pada hari pertama → pengguna legasi dan luar talian disekat → gunakan pembahagian segmen, pelancaran berperingkat dan tetingkap migrasi.
- Hanya menyemak tandatangan → mana-mana pengeluar yang dipercayai boleh lulus → semak dasar aliran kerja, komit, repositori dan pembina.
- Memanggil asal-usul sebagai imbasan kelemahan → pengguna salah faham perlindungan tersebut → asingkan tuntutan asal, kelemahan dan kebenaran.
- Tidak memberikan sebab kegagalan → pembangun tidak dapat membetulkan isu → kembalikan sebab berstruktur dan pautan pemulihan.
- Pengecualian kekal → penguatkuasaan merosot secara senyap → tetapkan skop, luluskan dan tamatkan tempohnya.
- Mengabaikan gangguan pengesah → satu gangguan menghentikan pelepasan secara meluas → takrifkan fail-closed, fail-open terkawal dan undur balik.
- Menyokong satu CI sahaja → pelanggan berbilang sumber tidak boleh berhijrah → sediakan laluan import, berkas dan pengeluar yang dipercayai.
Soalan susulan
Soalan susulan 1: Adakah perakuan membuktikan kod tidak diusik?
Ia mengikat digest artifak kepada asal binaan yang dituntut supaya pengguna boleh mengesahkan pemadanan tersebut. Ia tidak membuktikan pembina, kebergantungan atau sumber adalah selamat sepenuhnya; kebenaran, pengimbasan dan binaan boleh dihasilkan semula (reproducible builds) tetap diperlukan.
Soalan susulan 2: Mengapa tidak terus menggunakan fail-closed untuk semua orang serta-merta?
Pelanggan berbeza dari segi keupayaan binaan, sumber bukti dan keadaan rangkaian. Sekatan sejagat boleh mewujudkan gangguan dan mendorong pasukan untuk melumpuhkan dasar; pemerhatian dan pelancaran berperingkat menentukur peraturan dengan kegagalan sebenar.
Soalan susulan 3: Bagaimanakah anda mengukur sekatan palsu?
Rekodkan sebab, perkhidmatan, versi dasar dan kelulusan manual kemudian bagi setiap sekatan. Gabungkan pemulihan sah yang disahkan dengan jumlah sekatan dan analisis mengikut peringkat pelanggan; jangan klasifikasikan setiap pengecualian sebagai positif palsu.
Soalan susulan 4: Bagaimanakah pelanggan luar talian membuat pengesahan?
Biar mereka memuat turun berkas bukti dan punca kepercayaan (trust roots) yang diperlukan, kemudian sahkan digest dan asal secara setempat. Dokumentasikan kemas kini punca kepercayaan, pembatalan dan tingkah laku penamatan tempoh untuk persekitaran yang terpencil.
Soalan susulan 5: Bagaimana jika pembina dikompromi?
Pernyataan tersebut menerangkan asal yang dituntut; ia tidak membuktikan bahawa asal tersebut tidak dikompromi. Hadkan kebenaran aliran kerja, asingkan pembina, putarkan identiti pengeluar dan pantau asal yang luar biasa serta perubahan dasar.
Soalan susulan 6: Bagaimanakah anda menghalang pengecualian daripada menjadi kekal?
Anggap setiap pengecualian sebagai anomali yang akan tamat tempoh dengan kiraan detik dan pemilik. Jejaki tarikh luput dan sebab berulang mengikut pasukan, kemudian baiki jurang migrasi daripada melemahkan dasar secara kekal.