Allstar adalah Aplikasi GitHub yang terus memantau organisasi atau repositori GitHub untuk kepatuhan terhadap praktik terbaik keamanan. Jika Allstar mendeteksi pelanggaran kebijakan keamanan, hal ini akan menimbulkan masalah untuk memperingatkan pemilik repositori atau organisasi. Untuk beberapa kebijakan keamanan, Allstar juga dapat secara otomatis mengubah pengaturan proyek yang menyebabkan pelanggaran, mengembalikannya ke keadaan yang diharapkan.
Tujuan Allstar adalah memberi Anda kontrol yang tepat atas file dan pengaturan yang memengaruhi keamanan proyek Anda. Anda dapat memilih kebijakan keamanan mana yang akan dipantau di tingkat organisasi dan repositori, serta cara menangani pelanggaran kebijakan. Anda juga dapat mengembangkan atau menyumbangkan kebijakan baru.
Allstar dikembangkan sebagai bagian dari proyek OpenSSF Scorecard.
Jika Anda mendapatkan masalah yang tidak diinginkan yang disebabkan oleh Allstar, ikuti petunjuk berikut untuk memilih tidak ikut serta.
Allstar sangat dapat dikonfigurasi. Ada tiga tingkat kontrol utama:
Konfigurasi ini dilakukan di repositori .allstar
organisasi.
Tingkat repo: Pengelola repositori di organisasi yang menggunakan Allstar dapat memilih untuk memasukkan atau mengeluarkan repositori mereka dari penerapan tingkat organisasi. Catatan: kontrol tingkat repo ini hanya berfungsi ketika "penggantian repo" diizinkan di pengaturan tingkat organisasi. Konfigurasi ini dilakukan di direktori .allstar
repositori.
Tingkat kebijakan: Administrator atau pengelola dapat memilih kebijakan mana yang diaktifkan pada repo tertentu dan tindakan apa yang diambil Allstar ketika suatu kebijakan dilanggar. Konfigurasi ini dilakukan dalam file yaml kebijakan di repositori .allstar
organisasi (admin), atau direktori .allstar
repositori (pengelola).
Sebelum menginstal Allstar di tingkat organisasi, Anda harus memutuskan kira-kira berapa banyak repositori yang Anda inginkan untuk menjalankan Allstar. Ini akan membantu Anda memilih antara strategi Opt-In dan Opt-Out.
Strategi Keikutsertaan memungkinkan Anda menambahkan secara manual repositori yang Anda inginkan untuk menjalankan Allstar. Jika Anda tidak menentukan repositori apa pun, Allstar tidak akan berjalan meskipun telah diinstal. Pilih strategi Keikutsertaan jika Anda ingin menerapkan kebijakan hanya pada sejumlah kecil dari total repositori Anda, atau ingin mencoba Allstar pada satu repositori sebelum mengaktifkannya di lebih banyak repositori. Sejak rilis v4.3, glob didukung untuk menambahkan beberapa repositori dengan nama yang mirip dengan mudah.
Strategi Opt Out (disarankan) mengaktifkan Allstar di semua repositori dan memungkinkan Anda memilih repositori secara manual untuk memilih keluar dari penerapan Allstar. Anda juga dapat memilih untuk tidak ikut serta dalam semua repo publik, atau semua repo pribadi. Pilih opsi ini jika Anda ingin menjalankan Allstar di semua repositori dalam suatu organisasi, atau ingin memilih untuk tidak ikut serta dalam sejumlah kecil repositori atau jenis repositori tertentu (yaitu, publik vs. pribadi). Sejak rilis v4.3, glob didukung untuk menambahkan beberapa repositori dengan nama yang mirip dengan mudah.
Menyisih (Direkomendasikan) optOutStrategi = benar | Ikut serta optOutStrategi = salah | |
---|---|---|
Perilaku bawaan | Semua repo diaktifkan | Tidak ada repo yang diaktifkan |
Menambahkan repositori secara manual | Menambahkan repo secara manual akan menonaktifkan Allstar pada repo tersebut | Menambahkan repo secara manual mengaktifkan Allstar pada repo tersebut |
Konfigurasi tambahan | optOutRepos: Allstar akan dinonaktifkan pada repo yang terdaftar optOutPrivateRepos: jika benar, Allstar akan dinonaktifkan di semua repo pribadi optOutPublicRepos: jika benar, Allstar akan dinonaktifkan di semua repo publik (optInRepos: pengaturan ini akan diabaikan) | optInRepos: Allstar akan diaktifkan pada repo yang terdaftar (optOutRepos: pengaturan ini akan diabaikan) |
Penggantian Repo | Jika benar: Repo dapat memilih untuk tidak ikut serta dalam penerapan Allstar organisasinya menggunakan pengaturan di file repo mereka sendiri. Setelan keikutsertaan tingkat organisasi yang berlaku pada repositori tersebut akan diabaikan. Jika salah: repo tidak dapat membatalkan penerapan Allstar seperti yang dikonfigurasi di tingkat organisasi. | Jika benar: Repo dapat ikut serta dalam penerapan Allstar organisasinya meskipun tidak dikonfigurasi untuk repo di tingkat organisasi. Setelan penyisihan tingkat organisasi yang berlaku pada repositori tersebut akan diabaikan. Jika salah: Repo tidak dapat ikut serta dalam penerapan Allstar jika tidak dikonfigurasi di tingkat organisasi. |
Opsi Mulai Cepat dan Instalasi Manual melibatkan instalasi aplikasi Allstar. Anda dapat meninjau izin yang diminta. Aplikasi ini meminta akses baca ke sebagian besar pengaturan dan konten file untuk mendeteksi kepatuhan keamanan. Ia meminta akses tulis ke masalah dan memeriksa sehingga dapat menimbulkan masalah dan mengizinkan tindakan block
.
Opsi instalasi ini akan mengaktifkan Allstar menggunakan strategi Opt Out di semua repositori di organisasi Anda. Semua kebijakan saat ini akan diaktifkan, dan Allstar akan memperingatkan Anda tentang pelanggaran kebijakan dengan mengajukan masalah. Ini adalah cara tercepat dan termudah untuk mulai menggunakan Allstar, dan Anda masih dapat mengubah konfigurasi apa pun nanti.
Upaya: sangat mudah
Tangga:
.allstar
Itu saja! Semua kebijakan Allstar saat ini diaktifkan di semua repositori Anda. Allstar akan menimbulkan masalah jika suatu kebijakan dilanggar.
Untuk mengubah konfigurasi apa pun, lihat petunjuk instalasi manual.
Opsi instalasi ini akan memandu Anda dalam membuat file konfigurasi sesuai dengan strategi Opt In atau Opt Out. Opsi ini memberikan kontrol yang lebih terperinci atas konfigurasi sejak awal.
Upaya: moderat
Tangga:
Setiap kebijakan dapat dikonfigurasi dengan tindakan yang akan diambil Allstar ketika mendeteksi repositori tidak patuh.
log
: Ini adalah tindakan default, dan sebenarnya terjadi pada semua tindakan. Semua hasil dan detail pelaksanaan kebijakan dicatat. Log saat ini hanya dapat dilihat oleh operator aplikasi, rencana untuk mengungkapnya sedang dalam diskusi.issue
: Tindakan ini menimbulkan masalah GitHub. Hanya satu masalah yang dibuat per kebijakan, dan teks tersebut menjelaskan detail pelanggaran kebijakan. Jika masalah sudah terbuka, masalah tersebut akan di-ping dengan komentar setiap 24 jam tanpa pembaruan (saat ini tidak dapat dikonfigurasi pengguna). Jika hasil kebijakan berubah, komentar baru akan diberikan mengenai masalah tersebut dan ditautkan ke badan masalah. Setelah pelanggaran diatasi, masalah tersebut akan ditutup secara otomatis oleh Allstar dalam waktu 5-10 menit.fix
: Tindakan ini khusus untuk kebijakan. Kebijakan ini akan melakukan perubahan pada pengaturan GitHub untuk memperbaiki pelanggaran kebijakan. Tidak semua kebijakan mampu mendukung hal ini (lihat di bawah).Tindakan yang diusulkan, namun belum dilaksanakan. Definisi akan ditambahkan di masa mendatang.
block
: Allstar dapat mengatur Pemeriksaan Status GitHub dan memblokir PR apa pun di repositori agar tidak digabungkan jika pemeriksaan gagal.email
: Allstar akan mengirim email ke administrator repositori.rpc
: Allstar akan mengirimkan rpc ke sistem khusus organisasi.Dua pengaturan tersedia untuk mengonfigurasi tindakan masalah:
issueLabel
tersedia di tingkat organisasi dan repositori. Menyetelnya akan mengesampingkan label allstar
default yang digunakan oleh Allstar untuk mengidentifikasi masalahnya.
issueRepo
tersedia di tingkat organisasi. Menyetelnya akan memaksa semua masalah yang dibuat di organisasi dibuat di repositori yang ditentukan.
Mirip dengan konfigurasi pengaktifan aplikasi Allstar, semua kebijakan diaktifkan dan dikonfigurasi dengan file yaml di repositori .allstar
organisasi, atau direktori .allstar
repositori. Seperti halnya aplikasi, kebijakan diikutsertakan secara default, dan tindakan log
default juga tidak akan memberikan hasil yang terlihat. Cara sederhana untuk mengaktifkan semua kebijakan adalah dengan membuat file yaml untuk setiap kebijakan yang isinya:
optConfig:
optOutStrategy: true
action: issue
Detail cara kerja tindakan fix
untuk setiap kebijakan dirinci di bawah. Jika dihilangkan di bawah, tindakan fix
tidak berlaku.
File konfigurasi kebijakan ini diberi nama branch_protection.yaml
, dan definisi konfigurasinya ada di sini.
Kebijakan perlindungan cabang memeriksa apakah pengaturan perlindungan cabang GitHub telah diatur dengan benar sesuai dengan konfigurasi yang ditentukan. Teks masalah akan menjelaskan pengaturan mana yang salah. Lihat dokumentasi GitHub untuk memperbaiki pengaturan.
Tindakan fix
akan mengubah pengaturan perlindungan cabang agar sesuai dengan konfigurasi kebijakan yang ditentukan.
File konfigurasi kebijakan ini diberi nama binary_artifacts.yaml
, dan definisi konfigurasinya ada di sini.
Kebijakan ini mencakup pengecekan dari scorecard. Hapus artefak biner dari repositori untuk mencapai kepatuhan. Karena hasil kartu skor mungkin bertele-tele, Anda mungkin perlu menjalankan kartu skor itu sendiri untuk melihat semua informasi detailnya.
File konfigurasi kebijakan ini diberi nama codeowners.yaml
, dan definisi konfigurasinya ada di sini.
Kebijakan ini memeriksa keberadaan file CODEOWNERS
di repositori Anda.
File konfigurasi kebijakan ini diberi nama outside.yaml
, dan definisi konfigurasinya ada di sini.
Kebijakan ini memeriksa apakah ada Kolaborator Luar yang memiliki akses administrator (default) atau push (opsional) ke repositori. Hanya anggota organisasi yang boleh memiliki akses ini, karena jika tidak, anggota yang tidak tepercaya dapat mengubah pengaturan tingkat admin dan memasukkan kode berbahaya.
File konfigurasi kebijakan ini diberi nama security.yaml
, dan definisi konfigurasinya ada di sini.
Kebijakan ini memeriksa apakah repositori memiliki file kebijakan keamanan di SECURITY.md
dan tidak kosong. Masalah yang dibuat akan memiliki tautan ke tab GitHub yang membantu Anda menerapkan kebijakan keamanan ke repositori Anda.
File konfigurasi kebijakan ini diberi nama dangerous_workflow.yaml
, dan definisi konfigurasinya ada di sini.
Kebijakan ini memeriksa file konfigurasi alur kerja GitHub Actions ( .github/workflows
), untuk mencari pola apa pun yang cocok dengan perilaku berbahaya yang diketahui. Lihat dokumentasi OpenSSF Scorecard untuk informasi lebih lanjut tentang pemeriksaan ini.
File konfigurasi kebijakan ini diberi nama scorecard.yaml
, dan definisi konfigurasinya ada di sini.
Kebijakan ini menjalankan pemeriksaan kartu skor apa pun yang tercantum dalam konfigurasi checks
. Semua pemeriksaan yang dijalankan harus memiliki skor yang sama atau di atas threshold
yang ditetapkan. Silakan lihat dokumentasi OpenSSF Scorecard untuk informasi lebih lanjut tentang setiap pemeriksaan.
File konfigurasi kebijakan ini diberi nama actions.yaml
, dan definisi konfigurasinya ada di sini.
Kebijakan ini memeriksa file konfigurasi alur kerja Tindakan GitHub ( .github/workflows
) (dan alur kerja berjalan dalam beberapa kasus) di setiap repo untuk memastikan file tersebut sejalan dengan aturan (mis. require, reject) yang ditentukan dalam konfigurasi tingkat organisasi untuk kebijakan.
File konfigurasi kebijakan ini diberi nama admin.yaml
, dan definisi konfigurasinya ada di sini.
Kebijakan ini memeriksa bahwa secara default semua repositori harus memiliki pengguna atau grup yang ditetapkan sebagai Administrator. Ini memungkinkan Anda untuk mengonfigurasi secara opsional apakah pengguna diizinkan menjadi administrator (bukan tim).
Lihat repo ini sebagai contoh konfigurasi Allstar yang digunakan. Sebagai administrator organisasi, pertimbangkan README.md dengan beberapa informasi tentang bagaimana Allstar digunakan di organisasi Anda.
Secara default, file konfigurasi tingkat organisasi, seperti file allstar.yaml
di atas, diharapkan berada dalam repositori .allstar
. Jika repositori ini tidak ada, maka direktori allstar
repositori .github
digunakan sebagai lokasi sekunder. Untuk memperjelas, untuk allstar.yaml
:
Hak lebih tinggi | Gudang | Jalur |
---|---|---|
Utama | .allstar | allstar.yaml |
Sekunder | .github | allstar/allstar.yaml |
Hal ini juga berlaku untuk file konfigurasi tingkat organisasi untuk masing-masing kebijakan, seperti dijelaskan di bawah.
Allstar juga akan mencari konfigurasi kebijakan tingkat repo di repositori .allstar
organisasi, di bawah direktori dengan nama yang sama dengan repositori. Konfigurasi ini digunakan terlepas dari apakah "repo override" dinonaktifkan.
Misalnya, Allstar akan mencari konfigurasi kebijakan untuk repo myapp
tertentu dalam urutan berikut:
Gudang | Jalur | Kondisi |
---|---|---|
myapp | .allstar/branch_protection.yaml | Ketika "repo override" diperbolehkan. |
.allstar | myapp/branch_protection.yaml | Sepanjang waktu. |
.allstar | branch_protection.yaml | Sepanjang waktu. |
.github | allstar/myapp/branch_protection.yaml | Jika repo .allstar tidak ada. |
.github | allstar/branch_protection.yaml | Jika repo .allstar tidak ada. |
Untuk file konfigurasi kebijakan dan Allstar tingkat organisasi, Anda dapat menentukan kolom baseConfig
untuk menentukan repositori lain yang berisi konfigurasi dasar Allstar. Hal ini paling baik dijelaskan dengan sebuah contoh.
Misalkan Anda memiliki beberapa organisasi GitHub, tetapi ingin mempertahankan satu konfigurasi Allstar. Organisasi utama Anda adalah "acme", dan repositori acme/.allstar
berisi allstar.yaml
:
optConfig :
optOutStrategy : true
issueLabel : allstar-acme
issueFooter : Issue created by Acme security team.
Anda juga memiliki organisasi satelit GitHub bernama "acme-sat". Anda ingin menggunakan kembali konfigurasi utama, tetapi menerapkan beberapa perubahan di atasnya dengan menonaktifkan Allstar pada repositori tertentu. Repositori acme-sat/.allstar
berisi allstar.yaml
:
baseConfig : acme/.allstar
optConfig :
optOutRepos :
- acmesat-one
- acmesat-two
Ini akan menggunakan semua konfigurasi dari acme/.allstar
sebagai konfigurasi dasar, tetapi kemudian menerapkan perubahan apa pun pada file saat ini di atas konfigurasi dasar. Metode yang diterapkan ini digambarkan sebagai JSON Merge Patch. baseConfig
harus berupa GitHub <org>/<repository>
.
Lihat KONTRIBUSI.md