Repositori Git menyimpan kode sumber berharga dan digunakan untuk membangun aplikasi yang bekerja dengan data sensitif. Jika penyerang dapat menyusupi akun GitHub dengan repositori yang rentan, mereka dapat mendorong komitmen berbahaya langsung ke produksi. Komit yang ditandatangani membantu memastikan hal itu tidak terjadi.
Apa itu Komit yang Ditandatangani?
Komitmen yang ditandatangani melibatkan penambahan tanda tangan digital ke komit Anda, menggunakan kunci kriptografi pribadi, biasanya GPG, meskipun juga mendukung SSH atau X.509. Setelah dibuat, Anda harus menambahkan kunci penandatanganan ke profil GitHub Anda, dan klien Git lokal Anda. Komit
Signed memberikan lapisan keamanan tambahan dengan memastikan bahwa komit tidak dirusak, dan, yang lebih penting, itu berasal dari sumber tepercaya yang memiliki kunci GPG dan memiliki wewenang untuk mengakses akun GitHub.
Untuk mendorong komit ke repositori yang hanya mengizinkan komit yang ditandatangani, penyerang harus dapat mengkompromikan kunci GPG pribadi korban, yang biasanya berarti mendapatkan akses ke seluruh komputer, bukan hanya akun GitHub mereka. Karena ini adalah vektor serangan yang cukup tidak biasa dan sulit, komitmen yang ditandatangani memberikan cara terbaik untuk memverifikasi bahwa komitmen berasal dari siapa yang mereka nyatakan.
Menyiapkan Kunci GPG Baru
Pertama, Anda harus membuat kunci GPG baru yang digunakan untuk penandatanganan, dan maka Anda harus memberi tahu klien Git dan GitHub Anda tentang hal itu.
Untuk membuat kunci, Anda perlu menginstal perintah gpg di sistem Anda. Ini harus ada secara default, tetapi jika tidak, Anda bisa mendapatkannya dari manajer paket Anda. Kemudian, Anda dapat membuat kunci baru:
gpg –full-generate-key
Anda dapat menekan enter untuk sebagian besar permintaan, tetapi Anda harus memasukkan frasa sandi, dan Anda harus memasukkan alamat email GitHub Anda. Jika Anda ingin alamat Anda bersifat pribadi, Anda dapat menggunakan alamat “no-reply” untuk akun GitHub Anda.
Kemudian, daftarkan kunci, dan ekspor blok kunci publik untuk ID kunci yang baru saja Anda buat:
gpg –list-secret -keys gpg –armor –export [keyID]
Selanjutnya, kami akan menambahkannya ke akun GitHub Anda. Dari pengaturan pengguna Anda, klik “Kunci SSH dan GPG,” dan tambahkan kunci GPG baru. Anda juga dapat mengaktifkan mode Vigilant di sini, yang akan menandai komit di GitHub tidak menggunakan kunci ini sebagai tidak diverifikasi. kunci. Jika Anda menggunakan klien GUI Git seperti GitKraken, Anda mungkin dapat mengimpornya, tetapi jika tidak, Anda harus melakukannya dari baris perintah.
Karena ini terkait dengan pengguna Anda, Anda mungkin ingin menyetelnya sebagai konfigurasi global, tetapi Anda juga dapat menggunakan konfigurasi tingkat repositori. Setel user.signingkey ke ID kunci GPG yang Anda gunakan untuk export.
git config –global user.signingkey [keyID]
Kemudian, Anda ingin memberi tahu Git untuk menandatangani semua komitmen secara default. Ini dapat diatur untuk masing-masing repositori jika Anda mau:
git config –global commit.gpg sign true
Jika tidak, Anda dapat menggunakan flag -S untuk menandatangani komit secara manual. gudang. Meskipun biasanya digunakan untuk menerapkan pull request tertentu dan menggabungkan alur kerja, dan membatasi akses ke cabang rilis, mereka juga dapat diatur untuk hanya menerima komitmen yang ditandatangani.
Hanya menerima komitmen yang ditandatangani memberikan lapisan keamanan tambahan dan memaksa setiap kontributor untuk memiliki kunci GPG yang terkait dengan akun mereka.
Membuat aturan perlindungan cabang baru dari tab “Cabang” di pengaturan repositori Anda itu mudah. Anda ingin menyetel filter ke “*” untuk menyertakan semua cabang.
Kemudian pilih “Memerlukan komit yang ditandatangani.”
Mulai sekarang, semua komit yang didorong ke semua cabang dalam repositori ini harus berisi tanda tangan penandatanganan GPG.