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 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 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/{organization_name} Untuk organisasi yang menggunakan domain dev.azure.com untuk mengakses instans DevOps mereka
https://dev.azure.com/{organization_name} Untuk organisasi yang menggunakan domain dev.azure.com untuk mengakses instans DevOps mereka
https://advsec.dev.azure.com/{organization_name} 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 6.0.x). Jika versi yang kompatibel tidak terdapat di agen, pemindaian dependensi membangun tugas mengunduh .NET.

  • Instal bundel CodeQL ke cache alat agen dengan menggunakan skrip penyiapan untuk arsitektur Anda, yang tersedia di GitHub. Skrip ini mengharuskan $AGENT_TOOLSDIRECTORY variabel lingkungan diatur ke lokasi direktori alat agen pada agen, misalnya C:/agent/_work/_tool. Atau, Anda dapat menerapkan langkah-langkah berikut secara manual:

    1. Pilih bundel rilis CodeQL terbaru dari GitHub.
    2. Unduh dan buka zip bundel ke direktori berikut di dalam direktori alat agen, biasanya terletak di bawah _work/_tool: ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. Menggunakan rilis saat ini dari v2.16.0, nama folder akan berjudul ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/. Pelajari selengkapnya tentang direktori alat agen.
    3. Buat file kosong yang berjudul x64.complete di ./CodeQL/0.0.0-[codeql-release-bundle-tag] dalam folder. Menggunakan contoh sebelumnya, jalur file akhir ke file Anda x64.complete harus ../CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete

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.

Screenshot of enabling 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 Anda akan melihat 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.

Screenshot of project-level enablement for Advanced Security.

Orientasi tingkat organisasi

  1. Buka pengaturan Organisasi untuk organisasi Azure DevOps Anda.
  2. Pilih Repositori.
  3. Pilih Aktifkan semua dan Anda akan melihat 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.

Screenshot of org-level enablement for Advanced Security.

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.

Screenshot of enabling push protection.

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 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.

Screenshot of dependency scanning pipeline setup for 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)

Screenshot of code scanning pipeline setup for YAML.

Selain itu, Anda harus 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.

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

#   Add your custom build steps here
# - Ensure that all code to be scanned is compiled (often using a `clean` command to ensure you are 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. 

# 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 kustom atau AutoBuild build diperlukan. Untuk bahasa lain, jika AutoBuild disertakan, langkah berhasil diselesaikan tanpa melakukan tindakan apa pun.

Jika, karena alasan apa pun, Anda perlu menonaktifkan Advanced Security, pemberitahuan dan status pemberitahuan apa pun akan dipertahankan untuk saat berikutnya Anda mengaktifkan kembali Advanced Security untuk repositori Anda.

Langkah berikutnya