Menandatangani Container Image dengan Cosign: Panduan Verifikasi yang Aman

Container image dapat berjalan di laptop, server, atau cluster produksi dengan cara yang hampir sama. Namun, konsistensi itu tidak otomatis membuktikan bahwa image yang diunduh benar-benar berasal dari proses build yang dipercaya. Image dengan nama dan tag yang terlihat benar tetap bisa diganti atau dipindahkan. Karena itu, tim perlu memeriksa integritas dan asal artefak sebelum menjalankannya.

Cosign, bagian dari proyek Sigstore, membantu menandatangani dan memverifikasi container image serta artefak perangkat lunak lainnya. Tanda tangan digital menghubungkan artefak dengan identitas atau kunci penandatangan, sehingga proses deployment tidak hanya bergantung pada nama image. Panduan ini membahas konsep dasar dan langkah praktis tanpa menganggap tanda tangan sebagai jaminan bahwa perangkat lunak bebas dari kerentanan.

Apa Fungsi Cosign?

Cosign menyimpan tanda tangan yang dapat diverifikasi untuk artefak, termasuk image container di registry yang kompatibel. Pada saat verifikasi, alat memeriksa apakah tanda tangan cocok dengan image dan memenuhi identitas atau kunci yang diharapkan. Dalam alur keyless, Sigstore dapat menggunakan identitas OpenID Connect (OIDC), sertifikat berumur pendek, dan log transparansi publik untuk membantu menelusuri proses penandatanganan.

Perbedaan pentingnya: mengunduh image dari registry tepercaya saja belum cukup. Tanda tangan memberikan bukti tambahan bahwa artefak cocok dengan proses penandatangan yang diizinkan. Praktik ini berguna sebagai bagian dari pengamanan rantai pasok software dan melengkapi pengelolaan komponen melalui SBOM.

Gunakan Digest, Bukan Hanya Tag

Tag seperti :latest atau :stable dapat menunjuk ke image yang berbeda setelah diperbarui. Untuk proses verifikasi yang konsisten, gunakan referensi berdasarkan digest SHA-256 dari image yang benar-benar akan dipakai. Bentuknya menyerupai contoh berikut:

ghcr.io/organisasi/aplikasi@sha256:DIGEST_IMAGE

Ganti contoh tersebut dengan registry, nama image, dan digest aktual. Digest bukan pengganti tanda tangan, tetapi memastikan proses penandatanganan dan verifikasi merujuk ke konten yang sama. Simpan digest yang telah diuji bersama catatan rilis atau konfigurasi deployment.

Opsi Pertama: Penandatanganan Keyless

Mode keyless menghindari kebutuhan mengelola pasangan kunci jangka panjang secara manual. Cosign dapat meminta autentikasi melalui penyedia OIDC yang didukung, lalu menggunakan sertifikat berumur pendek untuk proses penandatanganan. Alur ini cocok untuk CI/CD yang memiliki identitas workload atau identitas pipeline yang dapat diverifikasi.

Setelah memasang Cosign sesuai petunjuk resmi, tentukan variabel image dengan digest yang akan ditandatangani:

IMAGE="ghcr.io/organisasi/aplikasi@sha256:DIGEST_IMAGE"
cosign sign "$IMAGE"

Ikuti prompt autentikasi yang ditampilkan. Sebelum menyetujui, perhatikan identitas yang digunakan. Pada alur keyless tertentu, informasi identitas penandatangan dapat tercatat dalam log transparansi publik dan tidak dapat dihapus begitu saja. Gunakan akun atau identitas pipeline yang memang disetujui organisasi, serta pahami data apa yang akan dipublikasikan.

Opsi Kedua: Menggunakan Pasangan Kunci

Untuk lingkungan yang membutuhkan pengelolaan kunci sendiri, Cosign juga mendukung tanda tangan berbasis pasangan kunci. Buat pasangan kunci dengan perintah:

cosign generate-key-pair

Perintah ini menghasilkan kunci privat dan kunci publik. Simpan kunci privat di pengelola rahasia yang sesuai, batasi aksesnya, dan jangan memasukkannya ke repository, image, atau log build. Kunci publik dapat dibagikan kepada sistem yang perlu memverifikasi tanda tangan.

cosign sign --key cosign.key "$IMAGE"
cosign verify --key cosign.pub "$IMAGE"

Contoh tersebut mengasumsikan variabel IMAGE telah berisi referensi digest yang tepat. Jika kunci privat bocor, penyerang mungkin dapat menandatangani artefak seolah-olah berasal dari pihak yang dipercaya. Siapkan prosedur rotasi kunci dan pencabutan kepercayaan sebelum memakai metode ini dalam produksi.

Verifikasi Identitas, Bukan Sekadar Keberadaan Tanda Tangan

Untuk alur keyless, pemeriksaan perlu menyatakan identitas sertifikat dan penerbit OIDC yang memang diharapkan. Contoh untuk workflow GitHub Actions:

cosign verify "$IMAGE" \
  --certificate-identity="https://github.com/ORG/REPO/.github/workflows/release.yml@refs/heads/main" \
  --certificate-oidc-issuer="https://token.actions.githubusercontent.com"

Ganti organisasi, repository, nama workflow, dan branch sesuai konfigurasi nyata. Jangan menyalin identitas contoh begitu saja. Jika pipeline memakai penyedia OIDC lain, gunakan issuer dan identitas yang sesuai. Tanpa pembatasan ini, pemeriksaan yang terlalu longgar berisiko menerima tanda tangan dari pihak yang bukan pembuat rilis resmi.

Masukkan Pemeriksaan ke CI/CD

Penandatanganan paling berguna jika menjadi bagian dari proses rilis yang berulang. Pipeline dapat menandatangani image setelah build dan pemeriksaan yang disyaratkan berhasil, lalu menyimpan referensi digest sebagai artefak rilis. Di sisi deployment, kebijakan harus menolak image yang tidak memiliki tanda tangan valid dari identitas yang diizinkan.

  • Batasi siapa yang dapat mengubah workflow build dan aturan deployment.
  • Gunakan izin minimum untuk token CI/CD dan pisahkan lingkungan pengujian dari produksi.
  • Verifikasi digest yang sama dengan image yang benar-benar akan dijalankan.
  • Catat hasil verifikasi dan buat prosedur untuk menangani tanda tangan yang hilang atau tidak cocok.
  • Gabungkan pemeriksaan tanda tangan dengan pemindaian kerentanan, pembaruan dependensi, dan inventaris SBOM.

Untuk memahami bagaimana image dijalankan dan batas isolasinya, baca juga panduan Docker container vs virtual machine. Penandatanganan melindungi satu bagian dari rantai distribusi, bukan seluruh konfigurasi runtime.

Batasan yang Perlu Dipahami

Tanda tangan yang valid tidak membuktikan bahwa kode aman, bebas malware, atau dibangun dari sumber yang benar. Tanda tangan hanya berguna sejauh identitas penandatangan, proses build, dan kebijakan kepercayaannya dikelola dengan benar. Jika akun pembuat atau pipeline telah disusupi, artefak berbahaya mungkin tetap ditandatangani secara sah menurut sistem yang ada.

Karena itu, gunakan image dari sumber yang dikenal, pin digest, tinjau perubahan pipeline, lindungi kredensial, dan periksa dependensi. Dokumentasikan siapa yang berhak menandatangani rilis, bagaimana identitas diverifikasi, dan apa yang dilakukan ketika pemeriksaan gagal.

Kesimpulan

Cosign menambahkan bukti kriptografis untuk memeriksa asal dan integritas container image. Pilih mode keyless atau kunci berdasarkan model identitas dan kemampuan operasional, lalu verifikasi tanda tangan terhadap identitas yang spesifik. Jadikan pemeriksaan bagian dari CI/CD dan pastikan digest yang diverifikasi sama dengan artefak yang dijalankan. Jika dipadukan dengan SBOM, pemindaian kerentanan, serta kontrol akses pipeline, Cosign membantu membuat proses rilis lebih dapat ditelusuri—tanpa menggantikan praktik keamanan lainnya.

Dokumentasi resmi: Signing Containers with Cosign dan repositori Sigstore Cosign.

PENGALAMAN BARU Coba tampilan baru Penasaran dengan pengalaman membaca Nazuaf versi modern? Coba tampilan baru yang dirancang agar nyaman dibaca dari ponsel dan pc. Buka versi modern dan lanjutkan membaca artikel ini. Jelajahi tampilan baru Nazuaf versi modern · Ketuk kartu untuk mencoba

Bagikan artikel ini

Tinggalkan komentar

Server Load: 24% · CMH · ⚡ --ms