Nota
Efektif 31 Desember 2022, ekstensi Microsoft Security Code Analysis (MSCA) dihentikan. MSCA digantikan oleh ekstensi Microsoft Security DevOps Azure DevOps. Ikuti instruksi di Mengonfigurasi untuk menginstal dan mengonfigurasi ekstensi.
Tanya Jawab Umum
Dapatkah saya menginstal ekstensi di instans Azure DevOps Server (sebelumnya Visual Studio Team Foundation Server) saya, bukan pada instans Azure DevOps?
Tidak. Ekstensi ini tidak tersedia untuk mengunduh dan menginstal untuk Azure DevOps Server (sebelumnya Visual Studio Team Foundation Server).
Apakah saya harus menjalankan Analisis Kode Keamanan Microsoft dengan build saya?
Mungkin. Ini tergantung pada jenis alat analisis. Kode sumber mungkin satu-satunya hal yang diperlukan, atau output build mungkin diperlukan.
Misalnya, Credential Scanner (CredScan) menganalisis file dalam struktur folder repositori kode. Karena analisis ini, Anda dapat menjalankan tugas build CredScan dan Publish Security Analysis Logs dalam build mandiri untuk mendapatkan hasil.
Untuk alat lain seperti BinSkim yang menganalisis artefak pasca-build, build diperlukan terlebih dahulu.
Dapatkah saya memutus build saat hasil ditemukan?
Ya. Anda dapat memperkenalkan pemutusan build saat alat apa pun melaporkan masalah atau masalah dalam file lognya. Tambahkan tugas build Post-Analysis, dan pilih kotak centang untuk alat apa pun yang ingin Anda putuskan buildnya.
Di UI tugas Pasca-Analisis, Anda dapat memilih untuk memutus build ketika alat apa pun melaporkan kesalahan saja atau kesalahan dan peringatan.
Bagaimana argumen baris perintah di Azure DevOps berbeda dari argumen tersebut di alat desktop mandiri?
Biasanya, tugas build Azure DevOps adalah pembungkus langsung di sekitar argumen baris perintah alat keamanan. Anda dapat meneruskan sebagai argumen ke tugas build apa pun yang biasanya Anda teruskan ke alat baris perintah.
Perbedaan yang terlihat:
- Alat berjalan dari folder sumber agen $(Build.SourcesDirectory) atau dari %BUILD_SOURCESDIRECTORY%. Contohnya adalah C:\agent_work\1\s.
- Jalur dalam argumen dapat relatif terhadap akar direktori sumber yang sebelumnya tercantum. Jalur juga bisa absolut. Anda mendapatkan jalur absolut baik dengan menggunakan Variabel Build Azure DevOps atau dengan menjalankan agen lokal dengan lokasi penyebaran sumber daya lokal yang diketahui.
- Alat secara otomatis menyediakan jalur atau folder file output. Jika Anda menyediakan lokasi output untuk tugas build, lokasi tersebut diganti dengan jalur ke lokasi log kami yang terkenal di agen build
- Beberapa argumen baris perintah lainnya diubah untuk beberapa alat. Salah satu contohnya adalah penambahan atau penghapusan opsi yang memastikan tidak ada GUI yang diluncurkan.
Bisakah saya menjalankan tugas build seperti Credential Scanner di beberapa repositori di Azure DevOps Build?
Tidak. Menjalankan alat pengembangan yang aman di beberapa repositori dalam satu alur tidak didukung.
File output yang saya tentukan tidak dibuat, atau saya tidak dapat menemukan file output yang saya tentukan
Tugas build memfilter beberapa input pengguna. Untuk pertanyaan ini secara khusus, mereka memperbarui lokasi file output yang dihasilkan menjadi lokasi umum pada agen build. Untuk informasi selengkapnya tentang lokasi ini, lihat pertanyaan berikut.
Di mana file output yang dihasilkan oleh alat disimpan?
Tugas build secara otomatis menambahkan jalur output ke lokasi terkenal ini pada agen build: $(Agent.BuildDirectory)_sdt\logs. Karena kami menstandarkan lokasi ini, semua tim yang menghasilkan atau menggunakan log analisis kode memiliki akses ke output.
Dapatkah saya mengantrekan build untuk menjalankan tugas ini pada agen build yang dihosting?
Ya. Semua tugas dan alat dalam ekstensi dapat dijalankan pada agen build yang dihosting.
Nota
Tugas build Anti-Malware Scanner memerlukan agen build dengan Windows Defender diaktifkan. Visual Studio 2017 yang dihosting dan yang lebih baru menyediakan agen tersebut. Tugas build tidak akan berjalan pada agen yang dihosting Visual Studio 2015.
Meskipun tanda tangan tidak dapat diperbarui pada agen ini, tanda tangan harus selalu kurang dari tiga jam.
Dapatkah saya menjalankan tugas build ini sebagai bagian dari alur rilis dibandingkan dengan alur build?
Dalam kebanyakan kasus, ya.
Namun, Azure DevOps tidak mendukung menjalankan tugas dalam alur rilis saat tugas tersebut menerbitkan artefak. Kurangnya dukungan ini mencegah tugas Terbitkan Log Analisis Keamanan berhasil berjalan dalam alur rilis. Tugas sebagai gantinya gagal dengan pesan kesalahan deskriptif.
Dari mana tugas build mengunduh alat?
Tugas build dapat mengunduh paket NuGet alat dari umpan Manajemen Paket Azure DevOps . Tugas build juga dapat menggunakan Node Package Manager, yang harus diinstal sebelumnya pada agen build. Contoh penginstalan tersebut adalah perintah npm instal tslint.
Apa efek menginstal ekstensi pada organisasi Azure DevOps saya?
Setelah penginstalan mereka, tugas build keamanan yang disediakan oleh ekstensi tersedia untuk semua pengguna di organisasi Anda. Saat Anda membuat atau mengedit Azure Pipeline, tugas-tugas ini tersedia dari daftar kumpulan tugas build. Jika tidak, menginstal ekstensi di organisasi Azure DevOps Anda tidak berpengaruh. Penginstalan tidak mengubah pengaturan akun, pengaturan proyek, atau alur apa pun.
Apakah menginstal ekstensi mengubah Azure Pipelines saya yang sudah ada?
Tidak. Menginstal ekstensi membuat tugas build keamanan tersedia untuk tambahan ke alur Anda. Anda masih diharuskan untuk menambahkan atau memperbarui definisi build, sehingga alat dapat berfungsi dengan proses build Anda.
Tanya Jawab Umum khusus tugas
Pertanyaan khusus untuk tugas build tercantum di bagian ini.
Pemindai Kredensial
Apa skenario dan contoh supresi umum?
Berikut adalah detail dua skenario supresi yang paling umum.
Untuk menekan semua kemunculan rahasia tertentu dalam jalur yang ditentukan
Kunci hash rahasia dari file output CredScan diperlukan seperti yang ditunjukkan dalam sampel berikut.
{
"tool": "Credential Scanner",
"suppressions": [
{
"hash": "CLgYxl2FcQE8XZgha9/UbKLTkJkUh3Vakkxh2CAdhtY=",
"_justification": "Secret used by MSDN sample, it is fake."
}
]
}
Peringatan
Kunci hash dihasilkan oleh sebagian dari nilai atau konten file yang cocok. Setiap revisi kode sumber dapat mengubah kunci hash dan menonaktifkan aturan supresi.
Untuk menekan semua rahasia dalam file tertentu atau untuk menekan file rahasia itu sendiri
Ekspresi file bisa berupa nama file. Ini juga dapat menjadi bagian nama dasar dari jalur file lengkap atau nama file. Kartubebas tidak didukung.
Contoh berikut menunjukkan cara menekan file <InputPath>\src\JS\lib\angular.js
Contoh aturan supresi yang valid:
- <InputPath>\src\JS\lib\angular.js - menekan file di jalur yang ditentukan
- \src\JS\lib\angular.js
- \JS\lib\angular.js
- \lib\angular.js
- angular.js - menekan file apa pun dengan nama yang sama
{
"tool": "Credential Scanner",
"suppressions": [
{
"file": "\\files\\AdditonalSearcher.xml",
"_justification": "Additional CredScan searcher specific to my team"
},
{
"file": "\\files\\unittest.pfx",
"_justification": "Legitimate UT certificate file with private key"
}
]
}
Peringatan
Semua rahasia di masa mendatang yang ditambahkan ke file juga akan ditekan secara otomatis.
Apa saja panduan yang direkomendasikan untuk mengelola rahasia?
Sumber daya berikut membantu Anda mengelola rahasia dengan aman dan mengakses informasi sensitif dari dalam aplikasi Anda:
- Azure Key Vault
- Azure Active Directory (Azure AD)
- Azure AD Managed Service Identity (MSI)
- Identitas terkelola untuk sumber daya Azure
- Identitas terkelola di Azure App Service dan Azure Functions
- pustaka AppAuthentication
Untuk informasi selengkapnya, lihat posting blog Mengelola Rahasia dengan Aman di Cloud.
Dapatkah saya menulis pencari kustom saya sendiri?
Pemindai Kredensial bergantung pada sekumpulan pencari konten yang umumnya ditentukan dalam file buildsearchers.xml. File berisi array objek serial XML yang mewakili objek ContentSearcher. Program ini didistribusikan dengan sekumpulan pencari yang teruji dengan baik. Tetapi Anda juga dapat menerapkan pencari kustom Anda sendiri.
Pencari konten didefinisikan sebagai berikut:
Nama: Nama pencari deskriptif yang akan digunakan dalam file output Credential Scanner. Kami menyarankan Anda menggunakan konvensi penamaan camel-case untuk nama pencari.
RuleId: ID buram stabil dari pencari:
- Pencari default Pemindai Kredensial diberi nilai RuleId seperti CSCAN0010, CSCAN0020, atau CSCAN0030. Digit terakhir dicadangkan untuk grup pencari yang berpotensi menggabungkan atau membagi melalui ekspresi reguler (regex).
- Nilai RuleId untuk pencari yang dikustomisasi harus memiliki namespace layanannya sendiri. Contohnya termasuk Namespace<CSCAN>0010, Namespace<CSCAN>0020, dan Namespace<CSCAN>0030.
- Nama pencari yang sepenuhnya memenuhi syarat adalah kombinasi dari nilai RuleId dan nama pencari. Contohnya termasuk CSCAN0010. KeyStoreFiles dan CSCAN0020. Base64EncodedCertificate.
ResourceMatchPattern: Regex ekstensi file untuk memeriksa terhadap pencari.
ContentSearchPatterns: Array string yang berisi pernyataan regex yang cocok. Jika tidak ada pola pencarian yang ditentukan, semua file yang cocok dengan nilai ResourceMatchPattern dikembalikan.
ContentSearchFilters: Array string yang berisi pernyataan regex untuk memfilter positif palsu khusus pencari.
MatchDetails: Pesan deskriptif, instruksi mitigasi, atau keduanya akan ditambahkan untuk setiap kecocokan pencari.
Rekomendasi: Konten bidang saran untuk kecocokan menggunakan format laporan PREfast.
Tingkat Keparahan: Bilangan bulat yang mencerminkan tingkat keparahan masalah. Tingkat keparahan tertinggi memiliki nilai 1.
penyetelan Pemindai Kredensial
Penganalisis Roslyn
Apa kesalahan umum saat menggunakan tugas Roslyn Analyzers?
Proyek dipulihkan menggunakan versi Microsoft.NETCore.App yang salah
Pesan kesalahan lengkap:
"Kesalahan: Proyek dipulihkan menggunakan versi Microsoft.NETCore.App x.x.x, tetapi dengan pengaturan saat ini, versi y.y.y akan digunakan sebagai gantinya. Untuk mengatasi masalah ini, pastikan pengaturan yang sama digunakan untuk pemulihan dan untuk operasi berikutnya seperti membangun atau menerbitkan. Biasanya masalah ini dapat terjadi jika properti RuntimeIdentifier diatur selama build atau penerbitan tetapi tidak selama pemulihan."
Karena tugas Roslyn Analyzers berjalan sebagai bagian dari kompilasi, pohon sumber pada komputer build harus dalam keadaan dapat dibangun.
Langkah antara build utama Anda dan langkah-langkah Roslyn Analyzers mungkin telah menempatkan pohon sumber ke dalam keadaan yang mencegah pembangunan. Langkah tambahan ini mungkin dotnet.exe menerbitkan. Coba duplikasi langkah yang melakukan pemulihan NuGet tepat sebelum langkah Roslyn Analyzers. Langkah duplikat ini mungkin menempatkan pohon sumber kembali dalam keadaan dapat dibangun.
csc.exe tidak dapat membuat instans penganalisis
Pesan kesalahan lengkap:
"'csc.exe' keluar dengan kode kesalahan 1 -- Instans penganalisis AAAA tidak dapat dibuat dari C:\BBBB.dll : Tidak dapat memuat file atau rakitan 'Microsoft.CodeAnalysis, Version=X.X.X.X, Culture=netral, PublicKeyToken=31bf3856ad364e35' atau salah satu dependensinya. Sistem tidak dapat menemukan file yang ditentukan."
Pastikan pengkompilasi Anda mendukung Roslyn Analyzers. Menjalankan perintah csc.exe /version harus melaporkan nilai versi 2.6 atau yang lebih baru.
Terkadang file .csproj dapat mengambil alih penginstalan Visual Studio komputer build dengan merujuk paket dari Microsoft.Net.Compilers. Jika Anda tidak berniat menggunakan versi pengkompilasi tertentu, hapus referensi ke Microsoft.Net.Compilers. Jika tidak, pastikan bahwa versi paket yang dirujuk juga 2.6 atau yang lebih baru.
Cobalah untuk mendapatkan jalur log kesalahan, yang ditentukan dalam opsi csc.exe /errorlog. Opsi dan jalur muncul di log untuk tugas build Roslyn Analyzers. Mereka mungkin terlihat seperti /errorlog:F:\ts-services-123_work\456\s\Some\Project\Code\Code.csproj.sarif
Versi pengkompilasi C# tidak cukup baru
Untuk mendapatkan versi terbaru pengkompilasi C#, buka Microsoft.Net.Compilers. Untuk mendapatkan versi yang diinstal, jalankan csc.exe /version pada prompt perintah. Pastikan Anda mereferensikan paket NuGet Microsoft.Net.Compilers versi 2.6 atau yang lebih baru.
Log MSBuild dan VSBuild tidak ditemukan
Tugas build Roslyn Analyzers harus mengkueri Azure DevOps untuk log MSBuild dari tugas build MSBuild. Jika tugas penganalisis berjalan segera setelah tugas MSBuild, log belum akan tersedia. Tempatkan tugas lain antara tugas MSBuild dan tugas Roslyn Analyzers. Contoh tugas lain termasuk BinSkim dan Anti-Malware Scanner.
Langkah berikutnya
Jika Anda memerlukan bantuan tambahan, Dukungan Analisis Kode Keamanan Microsoft tersedia pada hari Senin hingga Jumat dari pukul 09.00 hingga 17.00 Waktu Standar Pasifik.
Onboarding: Lihat dokumentasi onboarding kami
Dukungan: Kirim email ke tim kami di Dukungan Analisis Kode Keamanan Microsoft