Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure DevOps için GitHub Advanced Security'de kod tarama, güvenlik açıklarını ve kodlama hatalarını bulmak için bir Azure DevOps deposundaki kodu analiz etmenizi sağlar. Azure DevOps için GitHub Gelişmiş Güvenliği'ne veya tek başına deneyimi kullanıyorsanız Azure DevOps için GitHub Code Security'yi etkinleştirmeniz gerekir. Analiz sonucunda tespit edilen tüm sorunlar uyarı olarak bildirilir. Kod tarama, güvenlik açıklarını belirlemek için CodeQL kullanır.
CodeQL, GitHub tarafından güvenlik denetimlerini otomatikleştirmek için geliştirilen kod analizi altyapısıdır. CodeQL kullanarak kodunuzu analiz edebilir ve sonuçları kod tarama uyarıları olarak görüntüleyebilirsiniz. CodeQL hakkında daha ayrıntılı belgeler için Bkz . CodeQL belgeleri.
Azure DevOps için GitHub Advanced Security, Azure Repos ile çalışır. GitHub Depoları ile GitHub Gelişmiş Güvenlik'i kullanmak için bkz. gitHub Gelişmiş Güvenlik .
Önkoşullar
| Kategori | Gereksinimler |
|---|---|
| İzinler | - Depoya yönelik tüm uyarıların özetini görüntülemek için: Katkıda Bulunan depo izinleri. - Gelişmiş Güvenlik'te uyarıları kapatmak için: Proje yöneticisi izinleri. - Gelişmiş Güvenlik izinlerini yönetmek için: Proje Koleksiyonu Yöneticileri grubunun bir üyesi olun veya Gelişmiş Güvenlik'e ait ayar izinleri , olarak Ayarla izininesahip olun. |
Gelişmiş Güvenlik izinleri hakkında daha fazla bilgi için bkz. Gelişmiş Güvenlik izinlerini yönetme.
Kod tarama için diğer yapılandırmalar
Dil ve sorgu desteği
GitHub uzmanları, güvenlik araştırmacıları ve topluluk katkıda bulunanları, kod tarama için kullanılan varsayılan CodeQL sorgularını yazar ve korur. Sorgular, analizi geliştirmek ve hatalı pozitif sonuçları azaltmak için düzenli olarak güncelleştirilir. Sorgular açık kaynak, böylece github/codeql deposundaki sorguları görüntüleyebilir ve bu sorgulara katkıda bulunabilirsiniz.
CodeQL aşağıdaki dil tanımlayıcılarını destekler ve kullanır:
| Dil | Tanımlayıcı |
|---|---|
| C/C++ | cpp |
| C# (programlama dili) | csharp |
| Başlayın | go |
| Java/Kotlin | java |
| JavaScript/TypeScript | javascript |
| Piton | python |
| Ruby programlama dili | ruby |
| Hızlı | swift |
İpucu
- C, C++ veya her ikisinde yazılmış kodu analiz etmek için kullanın
cpp. - Java, Kotlin veya her ikisinde yazılmış kodu analiz etmek için kullanın
java. - JavaScript, TypeScript veya her ikisinde yazılmış kodu analiz etmek için kullanın
javascript.
Daha fazla bilgi için bkz . Desteklenen diller ve çerçeveler.
Derleme günlüğünde CodeQL tarafından yürütülen belirli sorguları ve görev ayrıntılarını görüntüleyebilirsiniz.
Kod tarama derleme modunu özelleştirme
Kod tarama, tarama için bir işlem hattı ayarlarken iki derleme modunu destekler:
-
none- CodeQL veritabanı, kod tabanı oluşturulmadan doğrudan kod tabanından oluşturulur (tüm yorumlanan diller için ve ayrıca ,cppvejavaiçincsharpdesteklenir). -
manual- iş akışındaki kod tabanı için kullanılacak derleme adımlarını tanımlarsınız (tüm derlenmiş diller için desteklenir).
Her derleme modunun avantajlarıyla ilgili bir karşılaştırma da dahil olmak üzere farklı derleme modları hakkında daha fazla bilgi için bkz . Derlenmiş diller için CodeQL kod tarama.
İpucu
Derleme modu none JavaScript, Python, Ruby gibi diğer yorumlanmış dillerle kullanılabilir.
C# veya Java için derleme modu none belirtilirse ve diğer derlenmiş diller bu derleme modunu none desteklemiyorsa, işlem hattı görevi başarısız olur.
Aşağıdaki kodda birden çok dil ve none derleme modu içeren geçerli bir yapılandırma örneği gösterilmektedir:
trigger: none
pool:
vmImage: windows-latest
steps:
- task: AdvancedSecurity-Codeql-Init@1
displayName: Initialize CodeQL
inputs:
# build mode `none` is supported for C# and Java, and JavaScript is an interpreted language
# and build mode `none` has no impact on JavaScript analysis
languages: 'csharp, java, javascript'
buildtype: 'none'
- task: AdvancedSecurity-Codeql-Analyze@1
displayName: Perform CodeQL Analysis
Aşağıdaki kodda birden çok dil ve none derleme modu içeren geçersiz yapılandırma örneği gösterilmektedir:
trigger: none
pool:
vmImage: windows-latest
steps:
- task: AdvancedSecurity-Codeql-Init@1
displayName: Initialize CodeQL
inputs:
# build mode `none` is supported for C# but build mode `none` is NOT supported for Swift
# so this pipeline definition will result in a failed run
languages: 'csharp, swift'
buildtype: 'none'
- task: AdvancedSecurity-Codeql-Analyze@1
displayName: Perform CodeQL Analysis
Kod tarama uyarıları
Azure DevOps için GitHub Gelişmiş Güvenlik kod tarama uyarıları, kod düzeyinde uygulama güvenlik açıkları uyarısı veren depoya göre kod tarama bayrakları içerir.
Kod taramayı kullanmak için önce Azure DevOps için GitHub Gelişmiş Güvenliği'ni yapılandırmanız gerekir.
Azure DevOps'ta Depolar altındaki Gelişmiş Güvenlik sekmesi, kod tarama uyarılarınızı görüntüleme hub'ıdır. Tarama uyarılarını görüntülemek için Kod tarama sekmesini seçin. Dal, durum, işlem hattı, kural türü ve önem derecelerine göre filtreleyebilirsiniz. Şu anda, uyarı merkezi PR dallarında tamamlanan tarama uyarılarını göstermez.
İşlem hatları veya dallar yeniden adlandırılırsa sonuçların bir etkisi olmaz. Yeni adın görüntülenmesi 24 saat kadar sürebilir.
Özel CodeQL sorguları çalıştırmayı seçerseniz, farklı sorgu paketlerinden oluşturulan uyarılar için varsayılan olarak ayrı bir filtre yoktur. Her sorgu için ayrı olan kurala göre filtreleyebilirsiniz.
Deponuz için Gelişmiş Güvenlik'i kapatırsanız, Gelişmiş Güvenlik sekmesinde ve derleme görevinde sonuçlara erişimi kaybedersiniz. Derleme görevi başarısız olmaz, ancak Gelişmiş Güvenlik devre dışı bırakıldığında derlemelerden elde edilen sonuçlar gizlidir ve korunmaz.
Uyarı ayrıntıları
Düzeltme kılavuzu da dahil olmak üzere daha fazla ayrıntı için bir uyarı seçin. Her uyarı bir konum, açıklama, örnek ve önem derecesi içerir.
| Bölüm | Açıklama |
|---|---|
| Konum | Konumlar bölümünde CodeQL'in bir güvenlik açığı algıladığı belirli bir örnek ayrıntılı olarak açıklanmıştır. Kodunuzun aynı kuralı ihlal eden birden çok örneği varsa, her farklı konum için yeni bir uyarı oluşturulur. Konumlar kartı, etkilenen kod parçacığına doğrudan bağlantı içerir, böylece düzenlemek üzere Azure DevOps web kullanıcı arabirimine yönlendirilecek kod parçacığını seçebilirsiniz. |
| Açıklama | Açıklama, sorundan yola çıkarak CodeQL aracı tarafından sağlanır. |
| Öneri | Öneri, belirli bir kod tarama uyarısı için önerilen düzeltmedir. |
| Örnek | Örnek bölümde, kodunuzda tanımlanan zayıflık basitleştirilmiş bir örnek gösterilmektedir. |
| Ciddiyet | Önem düzeyleri düşük, orta, yüksek veya kritik olabilir. Önem derecesi, belirlenen Ortak Zayıflık Numaralandırması (CWE) için verilen Ortak Güvenlik Açığı Puanlama Sistemi (CVSS) puanına göre belirlenir. Bu GitHub blog gönderisinde önem derecelerinin nasıl puanlanmış olduğu hakkında daha fazla bilgi edinin. |
Depo için uyarıları görüntüleme
Depo için katkıda bulunan izinleri olan herkes, Depolar altındaki Gelişmiş Güvenlik sekmesinde bir depo için tüm uyarıların özetini görüntüleyebilir. Tüm gizli dizi tarama uyarılarını görüntülemek için Kod tarama sekmesini seçin.
Sonuçları görüntülemek için önce kod tarama görevlerinin çalıştırılması gerekir. İlk tarama tamamlandıktan sonra, algılanan tüm güvenlik açıkları Gelişmiş Güvenlik sekmesinde görüntülenir.
Varsayılan olarak, uyarılar sayfasında deponun varsayılan dalı için kod tarama sonuçları gösterilir.
Belirli bir uyarının durumu, uyarı diğer dallarda ve işlem hatlarında bulunsa bile varsayılan dalın ve en son çalıştırılan işlem hattının durumunu yansıtır.
Kod tarama uyarılarını kapatma
Uyarıları kapatmak için uygun izinlere sahip olmanız gerekir. Varsayılan olarak, yalnızca proje yöneticileri Gelişmiş Güvenlik uyarılarını kapatabilir.
Uyarıyı kapatmak için:
- Kapatmak istediğiniz uyarıya gidin ve uyarıyı seçin.
- Uyarıyı kapat açılır menüsünü seçin.
- Henüz seçili değilse, kapatma nedeni olarak Risk kabul edildi veya Hatalı pozitif seçeneğini belirleyin.
- Açıklama metin kutusuna isteğe bağlı bir açıklama ekleyin.
- Uyarıyı göndermek ve kapatmak için Kapat'ı seçin.
- Uyarı durumu Açık olan Kapalı olarak değişir ve kapatma nedeniniz görüntülenir.
Bu eylem uyarıyı tüm dallarda kaldırır. Aynı güvenlik açığını içeren diğer dallar da kapatılır. Daha önce kapatılan tüm uyarılar el ile yeniden açılabilir.
Çekme isteklerinde kod tarama uyarılarını yönetme
Çekme isteğinde yeni kod değişiklikleri için uyarılar oluşturulursa, uyarı, çekme isteğinin Genel Bakış sekmesinin açıklama bölümünde ek açıklama olarak ve Gelişmiş Güvenlik deposu sekmesinde bir uyarı olarak bildirilir. Çekme isteği dalı için yeni bir dal seçici girdisi var.
Etkilenen kod satırlarını gözden geçirebilir, bulmanın özetini görebilir ve Genel Bakış bölümünde ek açıklamayı çözümleyebilirsiniz.
Çekme isteği uyarılarını kapatmak için uyarı ayrıntı görünümüne gidip hem uyarıyı kapatmanız hem de ek açıklamayı çözümlemeniz gerekir. Aksi takdirde, açıklama durumunun (1) değiştirilmesi ek açıklamayı çözer, ancak altta yatan uyarıyı kapatmaz veya düzeltmez.
Çekme isteği dalınızın tüm sonuç kümesini görmek için Repos gidin ve çekme isteği dalınızı seçin. Ek açıklama üzerinde Daha fazla ayrıntı göster (2) seçeneğinin seçilmesi sizi Gelişmiş Güvenlik sekmesindeki uyarı ayrıntı görünümüne yönlendirir.
İpucu
Ek açıklamalar yalnızca etkilenen kod satırları çekme isteğinin hedef dalı ile karşılaştırıldığında çekme isteği farkı için tamamen benzersiz olduğunda oluşturulur.
İlgili makaleler
- Kod tarama sorunlarını giderme
- Bağımlılık taramayı kurma
- Gizli taramayı ayarlama
- Azure DevOps için GitHub Gelişmiş Güvenliği hakkında bilgi edinin