Aracılığıyla paylaş


Kod taramayı ayarlama

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 sonuçları yayımlama görevinin ekran görüntüsü.

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 , cppve javaiçin csharpdesteklenir).
  • 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.

Bir depo için kod tarama uyarılarının ekran görüntüsü.

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.

Kod tarama uyarı ayrıntılarının ekran görüntüsü.

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:

  1. Kapatmak istediğiniz uyarıya gidin ve uyarıyı seçin.
  2. Uyarıyı kapat açılır menüsünü seçin.
  3. Henüz seçili değilse, kapatma nedeni olarak Risk kabul edildi veya Hatalı pozitif seçeneğini belirleyin.
  4. Açıklama metin kutusuna isteğe bağlı bir açıklama ekleyin.
  5. Uyarıyı göndermek ve kapatmak için Kapat'ı seçin.
  6. Uyarı durumu Açık olan Kapalı olarak değişir ve kapatma nedeniniz görüntülenir.

Kod tarama uyarısını kapatma ekran görüntüsü.

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.

Aktif kod çekme isteği açıklamasının ekran görüntüsü.

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

Kapalı kod çekme talebi ek açıklamasının ekran görüntüsü.

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