Bagikan melalui


Mengonfigurasi GitHub Advanced Security untuk Azure DevOps

GitHub Advanced Security untuk Azure DevOps menambahkan rangkaian fitur keamanan GitHub Advanced Security ke Azure Repos.

GitHub Advanced Security untuk Azure DevOps meliputi:

  • Perlindungan push Pemindaian Rahasia: periksa apakah dorongan kode menyertakan penerapan yang mengekspos rahasia seperti kredensial
  • Pemindaian repositori Pemindaian Rahasia: pindai repositori Anda dan cari rahasia yang terekspos yang dilakukan secara tidak sengaja
  • Pemindaian Dependensi – cari kerentanan yang diketahui dalam dependensi sumber terbuka (langsung dan transitif)
  • Pemindaian Kode – gunakan mesin analisis statis CodeQL untuk mengidentifikasi kerentanan aplikasi tingkat kode seperti injeksi SQL dan bypass autentikasi

Saat ini, GitHub Advanced Security untuk Azure DevOps hanya tersedia untuk Layanan Azure DevOps dan tidak ada rencana untuk membawa produk ini ke Azure DevOps Server. GitHub Advanced Security untuk Azure DevOps juga hanya tersedia untuk repositori Git kode.

GitHub Advanced Security untuk Azure DevOps berfungsi dengan Azure Repos. Jika Anda ingin menggunakan GitHub Advanced Security dengan repositori GitHub, lihat GitHub Advanced Security.

Prasyarat

Anda harus memiliki izin yang dialokasikan sebagai anggota grup Administrator Koleksi Proyek. Untuk menambahkan anggota ke grup Administrator Koleksi Proyek atau mengubah izin tingkat koleksi proyek, lihat Mengubah izin tingkat koleksi proyek.

Prasyarat tambahan untuk agen yang dihost sendiri

Jika organisasi Anda menggunakan agen yang dihost sendiri, ada lebih banyak persyaratan:

  • Tambahkan URL ini ke Daftar Izin Anda untuk memungkinkan tugas pemindaian dependensi mengambil data saran kerentanan. Pelajari selengkapnya tentang Alamat IP dan URL domain yang diizinkan.
Domain URL Deskripsi
https://governance.dev.azure.com Untuk organisasi yang menggunakan domain dev.azure.com untuk mengakses instans DevOps mereka
https://dev.azure.com Untuk organisasi yang menggunakan domain dev.azure.com untuk mengakses instans DevOps mereka
https://advsec.dev.azure.com Untuk organisasi yang menggunakan domain dev.azure.com untuk mengakses instans DevOps mereka
https://{organization_name}.governance.visualstudio.com Untuk organisasi yang menggunakan domain {organization_name}.visualstudio.com untuk mengakses instans DevOps mereka
https://{organization_name}.visualstudio.com  Untuk organisasi yang menggunakan domain {organization_name}.visualstudio.com untuk mengakses instans DevOps mereka
https://{organization_name}.advsec.visualstudio.com Untuk organisasi yang menggunakan domain {organization_name}.visualstudio.com untuk mengakses instans DevOps mereka
  • Jalankan versi runtime .NET yang kompatibel (saat ini .NET 8.x). Jika versi yang kompatibel tidak terdapat di agen, pemindaian dependensi membangun tugas mengunduh .NET.

  • Pastikan bundel CodeQL diinstal ke cache alat agen di agen Anda. Anda dapat menggunakan enableAutomaticCodeQLInstall: true variabel dengan Advanced-Security-CodeQL@1 tugas alur untuk alur YAML atau memilih Enable automatic CodeQL detection and installation kotak centang untuk alur klasik. Atau, untuk instruksi penginstalan manual, lihat Pemindaian kode untuk GitHub Advanced Security untuk Azure DevOps.

Mengaktifkan Keamanan Tingkat Lanjut GitHub

Anda dapat mengaktifkan Advanced Security di tingkat organisasi, proyek, atau repositori. Untuk mengakses setiap alat dan hasil pemindaian, Anda harus terlebih dahulu mengaktifkan Advanced Security. Setelah Anda mengaktifkan Advanced Security, setiap pendorongan di masa mendatang yang berisi rahasia ke repositori dengan kebijakan ini diaktifkan diblokir, dan pemindaian rahasia repositori terjadi di latar belakang.

Onboarding tingkat repositori

  1. Buka pengaturan Proyek untuk proyek Azure DevOps Anda.
  2. Pilih Repositori Repositori>.
  3. Pilih repositori yang ingin Anda aktifkan Keamanan Tingkat Lanjutnya.
  4. Pilih Aktifkan dan Mulai penagihan untuk mengaktifkan Keamanan Tingkat Lanjut. Ikon perisai sekarang muncul di tampilan repositori untuk repositori apa pun dengan Keamanan Tingkat Lanjut diaktifkan.

Cuplikan layar mengaktifkan GitHub Advanced Security.

Onboarding tingkat proyek

  1. Buka pengaturan Proyek untuk proyek Azure DevOps Anda.
  2. Pilih Repositori.
  3. Pilih tab Pengaturan.
  4. Pilih Aktifkan semua dan lihat perkiraan jumlah komiter aktif untuk proyek Anda muncul.
  5. Pilih Mulai tagihan untuk mengaktifkan Keamanan Tingkat Lanjut untuk setiap repositori yang ada di proyek Anda.
  6. Secara opsional, pilih Aktifkan Keamanan Tingkat Lanjut secara otomatis untuk repositori baru sehingga setiap repositori yang baru dibuat mengaktifkan Advanced Security saat dibuat.

Cuplikan layar pengaktifan tingkat proyek untuk Keamanan Tingkat Lanjut.

Orientasi tingkat organisasi

  1. Buka pengaturan Organisasi untuk organisasi Azure DevOps Anda.
  2. Pilih Repositori.
  3. Pilih Aktifkan semua dan lihat perkiraan jumlah komiter aktif untuk organisasi Anda muncul.
  4. Pilih Mulai tagihan untuk mengaktifkan Keamanan Tingkat Lanjut untuk setiap repositori yang ada di setiap proyek di organisasi Anda.
  5. Secara opsional, pilih Aktifkan Keamanan Tingkat Lanjut secara otomatis untuk repositori baru sehingga setiap proyek yang baru dibuat mengaktifkan Advanced Security saat dibuat.

Cuplikan layar pengaktifan tingkat org untuk Keamanan Tingkat Lanjut.

Menyiapkan pemindaian rahasia

Perlindungan push pemindaian rahasia dan pemindaian repositori diaktifkan secara otomatis saat Anda mengaktifkan Keamanan Tingkat Lanjut. Anda dapat mengaktifkan atau menonaktifkan perlindungan pendorongan rahasia dari halaman pengaturan repositori.

Cuplikan layar mengaktifkan perlindungan push.

Seperti disebutkan, pemindaian repositori pemindaian rahasia secara otomatis dimulai setelah mengaktifkan Advanced Security untuk repositori yang dipilih.

Menyiapkan pemindaian dependensi

Pemindaian dependensi adalah alat pemindaian berbasis alur. Hasil dikumpulkan per repositori. Disarankan agar Anda menambahkan tugas pemindaian dependensi ke semua alur yang ingin Anda pindai.

Tip

Untuk hasil pemindaian yang paling akurat, pastikan untuk menambahkan tugas pemindaian dependensi mengikuti langkah-langkah build dan/atau langkah pemulihan paket dari alur yang membangun kode yang ingin Anda pindai.

Tambahkan tugas Tugas Pemindaian Dependensi Keamanan Tingkat Lanjut (AdvancedSecurity-Dependency-Scanning@1) langsung ke file alur YAML Anda atau pilih tugas Pemindaian Dependensi Keamanan Tingkat Lanjut dari asisten tugas.

Cuplikan layar penyiapan alur pemindaian dependensi untuk YAML.

Menyiapkan pemindaian kode

Pemindaian kode juga merupakan alat pemindaian berbasis alur di mana hasilnya dikumpulkan per repositori.

Tip

Disarankan untuk menambahkan tugas pemindaian kode ke alur terpisah yang dikloning dari alur produksi utama Anda atau membuat alur baru. Ini karena pemindaian kode dapat menjadi tugas build yang lebih intensif waktu.

Tambahkan tugas dalam urutan berikut:

  1. Keamanan Tingkat Lanjut Menginisialisasi CodeQL (AdvancedSecurity-Codeql-Init@1)
  2. Langkah-langkah build kustom Anda
  3. Keamanan Tingkat Lanjut Melakukan Analisis CodeQL (AdvancedSecurity-Codeql-Analyze@1)

Cuplikan layar penyiapan alur pemindaian kode untuk YAML.

Selain itu, Anda perlu menentukan bahasa mana yang Anda analisis dalam tugas Inisialisasi CodeQL. Daftar yang dipisahkan koma dapat digunakan untuk menganalisis beberapa bahasa sekaligus. Bahasa yang didukung adalah csharp, cpp, go, java, javascript, python, ruby, swift. Jika Anda menggunakan agen yang dihost sendiri, Anda juga dapat menambahkan enableAutomaticCodeQLInstall: true variabel untuk menginstal bit CodeQL terbaru secara otomatis untuk agen Anda.

Berikut adalah contoh alur pemula:

trigger:
  - main

pool:
  # Additional hosted image options are available: https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/hosted#software
  vmImage: ubuntu-latest

steps:

  - task: AdvancedSecurity-Codeql-Init@1
    inputs:
      languages: "java"
      # Supported languages: csharp, cpp, go, java, javascript, python, ruby, swift
      # You can customize the initialize task: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-codeql-init-v1?view=azure-pipelines
      # If you're using a self-hosted agent to run CodeQL, use `enableAutomaticCodeQLInstall` to automatically use the latest CodeQL bits on your agent:
      enableAutomaticCodeQLInstall: true

#   Add your custom build steps here
# - Ensure that all code to be scanned is compiled (often using a `clean` command to ensure you're building from a clean state).
# - Disable the use of any build caching mechanisms as this can interfere with CodeQL's ability to capture all the necessary data during the build.
# - Disable the use of any distributed/multithreaded/incremental builds as CodeQL needs to monitor executions of the compiler to construct an accurate representation of the application.
# - For dependency scanning, ensure you have a package restore step for more accurate results.

# If you had a Maven app:
#   - task: Maven@4
#     inputs:
#       mavenPomFile: 'pom.xml'
#       goals: 'clean package'
#       publishJUnitResults: true
#       testResultsFiles: '**/TEST-*.xml'
#       javaHomeOption: 'JDKVersion'
#       jdkVersionOption: '1.17'
#       mavenVersionOption: 'Default'

# Or a general script:
#   - script: |
#       echo "Run, Build Application using script"
#       ./location_of_script_within_repo/buildscript.sh

  - task: AdvancedSecurity-Dependency-Scanning@1 # More details on this task: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-dependency-scanning-v1?view=azure-pipelines

  - task: AdvancedSecurity-Codeql-Analyze@1 # More details on this task: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-codeql-analyze-v1?view=azure-pipelines

Tip

Analisis CodeQL untuk Kotlin/Swift saat ini dalam versi beta. Selama beta, analisis bahasa ini akan kurang komprehensif daripada analisis CodeQL orang lain. Gunakan java untuk menganalisis kode yang ditulis dalam Java, Kotlin atau keduanya. Gunakan javascript untuk menganalisis kode yang ditulis dalam JavaScript, TypeScript, atau keduanya.

Jika bahasa yang ditentukan adalah cpp, java, csharp atau swift langkah-langkah build kustom diperlukan.

Menyiapkan anotasi permintaan pull

Untuk pemindaian dependensi dan pemindaian kode, anotasi secara otomatis dikonfigurasi untuk permintaan pull di mana kebijakan validasi build berlaku dengan tugas pemindaian dependensi dan/atau pemindaian kode yang disertakan dalam alur Anda. Untuk informasi selengkapnya tentang mengonfigurasi kebijakan validasi build, lihat Validasi build.

Untuk informasi selengkapnya tentang mengatasi pemberitahuan untuk cabang permintaan pull, lihat Mengelola pemberitahuan pemindaian dependensi tentang permintaan pull dan Mengelola pemberitahuan pemindaian kode pada permintaan pull.

Jika, karena alasan apa pun, Anda perlu menonaktifkan Keamanan Tingkat Lanjut, pemberitahuan dan status pemberitahuan apa pun akan dipertahankan di tab Keamanan Tingkat Lanjut untuk kali berikutnya Anda mengaktifkan kembali Keamanan Tingkat Lanjut untuk repositori Anda.

Langkah berikutnya