Mengonfigurasi pemindaian kode
Anda dapat mengonfigurasi cara GitHub memindai kode di proyek Anda untuk mengetahui kerentanan dan kesalahan. Saat Anda memilih konfigurasi Anda sendiri, Anda menghemat waktu dan memutuskan frekuensi pemindaian kode terbaik untuk proyek Anda. Di pelajaran ini, Anda akan mempelajari dasar-dasar konfigurasi pemindaian kode. Anda juga akan mempelajari cara mengonfigurasi frekuensi pemindaian dan menjadwalkannya agar sesuai dengan kebutuhan repositori dan pengembangan Anda.
Seperti yang telah kita bahas di pelajaran sebelumnya, Anda dapat menjalankan pemindaian kode di GitHub, menggunakan GitHub Actions, atau dari sistem integrasi berkelanjutan (CI) Anda. Memilih opsi Penyiapan tingkat lanjut di GitHub menghasilkan file alur kerja yang dapat disesuaikan yang kemudian dapat Anda terapkan langsung ke repositori Anda. Anda biasanya tidak perlu mengedit alur kerja ini. Namun, jika perlu, Anda dapat menyesuaikan beberapa pengaturan.
Misalnya, Anda dapat mengedit alur kerja analisis CodeQL GitHub untuk menentukan frekuensi pemindaian, bahasa atau direktori yang akan dipindai, dan pemindaian kode CodeQL apa yang dicari dalam kode Anda. Anda mungkin juga perlu mengedit alur kerja analisis CodeQL jika Anda menggunakan sekumpulan perintah tertentu untuk mengompilasi kode Anda. Analisis CodeQL hanyalah salah satu jenis pemindaian kode yang dapat Anda lakukan di GitHub. GitHub Marketplace berisi beberapa alur kerja pemindaian kode lainnya.
Beralih dari pengaturan pemindaian kode default ke tingkat lanjut
Jika Anda sudah menyiapkan repositori untuk menggunakan pemindaian kode menggunakan metode penyiapan default, Anda dapat beralih menggunakan penyiapan Tingkat Lanjut di pengaturan. Navigasi ke bagian Pemindaian kode di bawah Pengaturan > Keamanan Tingkat Lanjut, lalu pilih ikon luapan tiga titik (...). Di menu drop-down, pilih Beralih ke tingkat lanjut. Kemudian, ikuti petunjuk untuk menonaktifkan CodeQL, dan aktifkan kembali dengan file workflow yang dihasilkan oleh penyiapan tingkat lanjut.
Mengedit alur kerja pemindaian kode
GitHub menyimpan file alur kerja di direktori .github/workflows repositori Anda. Anda dapat menemukan alur kerja yang telah Anda tambahkan dengan mencari nama filenya. Misalnya, secara default, file alur kerja untuk pemindaian kode CodeQL disebut codeql-analysis.yml.
Ikuti langkah-langkah ini untuk mengedit file alur kerja:
- Untuk membuka editor alur kerja, pilih ikon Edit di sudut kanan atas tampilan file.
Lakukan pengeditan Anda.
Setelah Anda mengedit file, pilih Terapkan perubahan dan lengkapi formulir Terapkan perubahan. Anda dapat memilih untuk melakukan commit langsung ke branch saat ini, atau membuat branch baru dan membuat pull request.
Tinjau bagian berikut untuk mengetahui beberapa opsi konfigurasi pemindaian kode umum.
Konfigurasikan frekuensi
Pengeditan yang umum pada file alur kerja adalah menyesuaikan frekuensi terjadinya pemindaian kode. Anda dapat mengonfigurasi alur kerja analisis CodeQL untuk memindai kode pada jadwal atau saat peristiwa tertentu terjadi di repositori. Anda juga dapat mengedit file alur kerja untuk memindai kode saat seseorang mendorong perubahan dan setiap kali permintaan pull dibuat. Menyesuaikan frekuensi ini mencegah pengembang memperkenalkan kerentanan dan kesalahan baru ke dalam kode. Memindai kode sesuai jadwal memberi tahu Anda tentang kerentanan dan kesalahan terbaru yang ditemukan GitHub, peneliti keamanan, dan komunitas. Bahkan ketika pengembang tidak secara aktif mempertahankan repositori.
Pindai saat tombol ditekan
Secara default, alur kerja analisis CodeQL menggunakan peristiwa on:push untuk memicu pemindaian kode pada setiap pendorongan ke cabang default repositori dan cabang yang dilindungi. Agar pemindaian kode dipicu pada cabang tertentu, alur kerja harus ada di cabang tersebut. Jika Anda melakukan pemindaian saat pendorongan, hasilnya muncul di tab Keamanan untuk repositori Anda.
Selain itu, ketika pemindaian on:push mengembalikan hasil yang dapat dipetakan ke permintaan pull terbuka, pemberitahuan ini secara otomatis muncul pada permintaan pull di tempat yang sama dengan pemberitahuan permintaan pull lainnya. Peringatan diidentifikasi dengan membandingkan analisis yang ada dari kepala cabang dengan analisis untuk cabang target.
Memindai berdasarkan PR
Alur kerja analisis CodeQL default menggunakan peristiwa pull_request untuk memicu pemindaian kode pada permintaan pull yang ditargetkan terhadap cabang default. Jika pull request berasal dari fork pribadi, peristiwa pull_request hanya dipicu jika Anda telah memilih opsi "Jalankan alur kerja dari pull request fork" di pengaturan repositori. Jika Anda memindai pull request, hasilnya akan muncul sebagai peringatan di pemeriksaan pull request.
Jika Anda menggunakan pemicu pull_request, yang dikonfigurasi untuk memindai komit penggabungan pull request alih-alih komit head, hasilnya akan lebih efisien dan akurat daripada memindai head cabang pada setiap push. Namun, jika Anda menggunakan sistem CI/CD yang tidak dapat dikonfigurasi agar dipicu oleh pull request, Anda masih dapat menggunakan pemicu on:push sehingga pemindaian kode memetakan hasil ke pull request yang terbuka pada branch tersebut dan menambahkan peringatan sebagai anotasi pada pull request.
Tentukan tingkat keparahan yang menyebabkan kegagalan pemeriksaan pull request
Secara bawaan, hanya peringatan dengan tingkat keparahan Error atau tingkat keparahan keamanan Critical atau High yang menyebabkan kegagalan pemeriksaan pull request.
Kegagalan ini tidak memblokir pemindaian kode agar tidak berjalan, tetapi dapat memblokir penggabungan tergantung pada aturan repositori. Anda dapat melihat detail kegagalan permintaan pull di tab Pemberitahuan pemindaian kode di bawah Keamanan.
Anda dapat mengonfigurasi tingkat keparahan mana yang menyebabkan kegagalan pemeriksaan permintaan pull di pengaturan repositori, atau melalui aturan repositori menggunakan aturan Memerlukan hasil pemindaian kode. Kedua mekanisme berfungsi, tetapi kumpulan aturan adalah metode konfigurasi yang modern dan lebih disukai.
- Pada GitHub.com, navigasikan ke halaman utama repositori. Di bawah nama repositori Anda, pilih Pengaturan.
- Di bilah sisi kiri, pilih Keamanan Tingkat Lanjut.
- Di bagian Pemindaian kode di bawah Aturan perlindungan, gunakan menu drop-down untuk memilih tingkat keparahan yang ingin Anda picu kegagalan pemeriksaan permintaan pull.
Tinjau dan abaikan peringatan pemindaian kode secara bertanggung jawab
Memperbaiki kode adalah cara yang disukai untuk menyelesaikan pemberitahuan pemindaian kode. Namun, beberapa pemberitahuan mungkin tidak memerlukan perubahan kode. Misalnya, peringatan tersebut mungkin merupakan positif palsu, hanya muncul dalam kode pengujian, atau merupakan risiko yang telah diputuskan oleh tim untuk tidak diperbaiki.
Tutup pemberitahuan hanya setelah meninjau detail pemberitahuan dan mengonfirmasi alasannya. Saat Anda menutup pemberitahuan, GitHub merekam alasan pemecatan, menghapus pemberitahuan dari jumlah pemberitahuan saat ini, memindahkannya ke daftar tertutup, dan mencegah kode yang sama menghasilkan pemberitahuan yang sama di pemindaian mendatang. Pemberhentian berlaku di semua cabang.
Pilih alasan pemecatan dengan hati-hati karena menjadi bagian dari catatan keamanan untuk repositori. Anda juga dapat menambahkan komentar pemecatan untuk menjelaskan keputusan. Komentar ini ditambahkan ke garis waktu pemberitahuan dan dapat mendukung tinjauan audit, pelaporan, dan kepatuhan di masa mendatang.
Gunakan komentar untuk mengambil detail seperti:
Mengapa pemberitahuan tidak memerlukan perubahan kode
Siapa yang meninjau keputusan
Apakah keputusan bersifat sementara atau permanen
Kontrol kompensasi atau pekerjaan tindak lanjut apa pun
Untuk tata kelola yang lebih kuat, organisasi dapat menggunakan pemecatan pemberitahuan yang didelegasikan untuk mengontrol siapa yang diizinkan untuk menutup pemberitahuan pemindaian kode. Ini membantu mencegah pengembang menutup temuan keamanan tanpa meninjau dan menciptakan proses triase yang lebih akuntabel.
Hindari pemindaian yang tidak perlu pada permintaan penarikan
Anda mungkin ingin menghindari pemindaian kode yang dipicu pada permintaan pull khusus yang ditargetkan terhadap cabang default, terlepas dari file mana yang telah diubah. Anda dapat mengonfigurasi pengaturan ini dengan menentukan on:pull_request:paths-ignore atau on:pull_request:paths dalam alur kerja pemindaian kode. Misalnya, jika satu-satunya perubahan dalam permintaan pull adalah ke file dengan ekstensi file .md atau .txt, Anda dapat menggunakan array paths-ignore berikut.
on:
push:
branches: [main, protected]
pull_request:
branches: [main]
paths-ignore:
- '**/*.md'
- '**/*.txt'
Menyesuaikan jadwal pemindaian
Jika Anda menggunakan alur kerja analisis CodeQL default, alur kerja memindai kode di repositori Anda seminggu sekali pada hari dan waktu yang dihasilkan secara acak, selain pemindaian yang dipicu oleh peristiwa. Untuk menyesuaikan jadwal ini, edit nilai cron dalam alur kerja.
Contoh berikut menunjukkan alur kerja analisis CodeQL untuk repositori dengan cabang default yang disebut main dan satu cabang yang dilindungi yang disebut protected:
on:
push:
branches: [main, protected]
pull_request:
branches: [main]
schedule:
- cron: '20 14 * * 1'
Alur kerja ini memindai:
Setiap pendorongan ke cabang default dan cabang yang dilindungi
Setiap pull request ke branch default
Cabang default setiap hari Senin pukul 14.20 UTC
Gunakan saran Copilot Autofix
GitHub Copilot Autofix membantu pengembang menyelesaikan pemberitahuan pemindaian kode dengan menyarankan perubahan kode yang ditargetkan. Autofix menggunakan informasi dari pemberitahuan, basis kode, dan permintaan pull untuk menghasilkan potensi perbaikan. Anda tidak memerlukan langganan GitHub Copilot terpisah untuk menggunakan Copilot Autofix. Ini tersedia untuk repositori publik di GitHub.com dan untuk repositori milik organisasi dengan keamanan kode GitHub diaktifkan.
Saran perbaikan otomatis bukan perbaikan yang diterapkan secara otomatis. Mereka adalah perubahan yang diusulkan yang harus ditinjau, diuji, dan disetujui seperti perubahan kode lainnya.
Saat meninjau saran Autofix:
Baca pemberitahuan dan pahami masalah keamanan.
Tinjau perubahan kode yang disarankan.
Konfirmasikan bahwa perbaikan mengatasi pemberitahuan tanpa mengubah perilaku yang dimaksudkan.
Jalankan pengujian proyek dan pemeriksaan keamanan yang diperlukan.
Ubah saran jika diperlukan.
Komitkan perbaikannya ke pull request.
Konfirmasikan bahwa pemberitahuan pemindaian kode diselesaikan setelah pemeriksaan dijalankan lagi.
Jika saran Autofix tidak sesuai, abaikan saran tersebut alih-alih menerapkannya. Jika pemberitahuan itu sendiri tidak perlu diperbaiki, tutup pemberitahuan dengan alasan yang benar dan komentar yang jelas.