Salah satu tantangan dengan alur kerja DevOps mana pun adalah mengelola rahasia, kata sandi, dan token yang harus dirahasiakan untuk alasan keamanan. Ini terutama berlaku untuk repositori sumber terbuka, di mana kode biasanya bersifat publik. Rahasia GitHub membantu mengelola masalah ini saat bekerja dengan skrip Tindakan GitHub. Apa Itu Rahasia GitHub? Ini memecahkan masalah menyimpannya dalam teks biasa di basis kode, yang merupakan masalah keamanan besar bahkan untuk repositori pribadi, dan tidak mungkin untuk repositori publik tanpa segera diretas.
Ini berguna dalam banyak kasus di mana kode mungkin bersifat publik, tetapi Tindakan skrip perlu mengautentikasi dengan beberapa layanan pihak ketiga. Misalnya, jika Anda menghosting binari di bucket Amazon S3, Anda harus memberi skrip token akses untuk menulis ke penyimpanan AWS. Tentu saja, Anda tidak ingin memberikan izin kepada siapa pun yang melihat repositori untuk menimpa konten bucket. Menggunakan rahasia membatasi akses, dan juga melindungi kunci agar tidak bocor secara tidak sengaja.
Rahasia repositori
berlaku untuk satu repositori. Anda harus mengaturnya dari panel pengaturan repositori, yang kemudian diakses seperti variabel lingkungan di GitHub Actions builds. Rahasia Organisasi GitHub akan berlaku untuk semua repositori di dalam organisasi tersebut, menyediakan cara mudah untuk mengelola kunci secara terpusat. Mereka diatur dari pengaturan organisasi. Rahasia lingkungan berlaku untuk Lingkungan GitHub tertentu dalam repo, seperti pengembangan dan produksi. Ini memberikan cara mudah untuk mengganti rahasia repositori/organisasi untuk build yang berbeda, seperti men-deploy ke lingkungan pengujian vs. lingkungan produksi.
Saat ini, tidak ada cara untuk menyetel rahasia khusus pengguna. Jika Anda menginginkan fungsionalitas tersebut, pertimbangkan untuk membuat organisasi pribadi.
Anda dapat menyimpan hingga 1.000 rahasia organisasi, 100 rahasia repositori, dan 100 rahasia lingkungan. Rahasia juga terbatas pada ukuran 64Kb, meskipun ada solusi untuk batasan ini. Anda juga dapat menyimpan data biner sebagai string yang disandikan Base64. Nbsp
Masih mungkin untuk membocorkannya dari skrip Tindakan jika Anda, misalnya, mencetaknya ke konsol dengan perintah seperti gema. Anda ingin memastikan tidak ada skrip yang Anda berikan rahasia untuk membacanya kembali ke pengguna atau keluaran ke file log apa pun. Untungnya, GitHub memblokir rahasia agar tidak dimasukkan ke perintah logging tertentu, termasuk echo.
Menggunakan Rahasia GitHub
Untuk menyetel rahasia di seluruh repositori, Anda harus menuju ke panel pengaturan untuk repositori, dan klik Rahasia > Tindakan. Anda juga dapat menyetel rahasia untuk GitHub Codespaces, dan Dependabot, jika Anda menggunakannya.
Anda dapat menyetel nama variabel, dan menempelkan konten rahasia. Namun, setelah Anda keluar dari jendela ini, Anda tidak akan dapat melihat kuncinya lagi, meskipun Anda dapat mengeditnya dan menempelkannya di kunci baru. Ini umumnya cara kerja sebagian besar penyimpanan rahasia, dan merupakan fitur keamanan yang baik, tetapi jangan harap dapat melihat kunci ini lagi.
Konvensi penamaan untuk nama rahasia adalah huruf besar dengan garis bawah, atau dikenal sebagai “screaming snake case, ” tetapi ini tidak diberlakukan oleh apa pun.
Kemudian, dalam skrip Tindakan Anda, Anda dapat mereferensikannya dengan mengubahnya sebagai variabel YAML, seperti:
${{ rahasia.SECRET_NAME }}
Perhatikan bahwa “rahasia.” konteks harus disertakan sebelum nama rahasia. Anda juga tidak perlu melakukan sesuatu yang khusus untuk mereferensikan rahasia organisasi vs. penyimpanan tunggal.
Nilai ini dapat diteruskan ke perintah, tetapi Anda juga dapat menggunakannya untuk menyetel variabel lingkungan untuk suatu proses. Ini biasanya cara sebagian besar alat akan menerima rahasia, karena ini adalah sistem yang paling aman dan fleksibel.
Jika rahasia tidak ada di akun Anda, GitHub akan menggunakan string kosong sebagai nilainya. cara yang sama, namun ada beberapa kontrol tambahan atas akses dan distribusi.
Saat membuat rahasia organisasi, Anda dapat memilih untuk menerapkannya hanya ke repositori publik atau pribadi, meskipun rahasia pribadi untuk organisasi adalah opsi berbayar. Anda juga dapat memilih repositori individual.
Untuk membuat atau mengedit rahasia organisasi, Anda harus memiliki akses “admin” ke organisasi itu sendiri. Ini dapat diberikan kepada semua anggota dengan mengedit izin dasar, tetapi umumnya tidak disarankan untuk organisasi besar.