Azure DevOps Services için GitHub Advanced Security yapılandırma

Azure DevOps için GitHub Advanced Security, GitHub Advanced Security'nin güvenlik özellikleri paketini Azure Repos'a ekler.

Azure için GitHub Advanced Security şunları içerir:

  • Gizli Dizi Tarama anında iletme koruması: Kod gönderimlerinin kimlik bilgileri gibi gizli dizileri kullanıma sunan işlemeler içerip içermediğini denetleyin
  • Gizli Dizi Tarama depo tarama: Deponuzu tarayın ve yanlışlıkla işlenen açığa çıkarılmış gizli dizileri arayın
  • Bağımlılık Tarama – açık kaynak bağımlılıklarında bilinen güvenlik açıklarını arayın (doğrudan ve geçişli)
  • Kod Tarama – SQL ekleme ve kimlik doğrulaması atlama gibi kod düzeyi uygulama güvenlik açıklarını belirlemek için CodeQL statik analiz altyapısını kullanın

Şu anda, Azure DevOps için GitHub Advanced Security yalnızca Azure DevOps Services için kullanılabilir ve bu ürünü Azure DevOps Server'a getirme planı yoktur.

Azure DevOps için GitHub Advanced Security, Azure Repos ile çalışır. GitHub depolarıyla GitHub Gelişmiş Güvenlik'i kullanmak istiyorsanız bkz . GitHub Gelişmiş Güvenlik.

Önkoşullar

Proje Koleksiyonu Yönetici istrators grubunun üyesi olarak ayrılmış izinleriniz olmalıdır. Proje Koleksiyonu Yöneticileri grubuna üye eklemek veya proje koleksiyonu düzeyi iznini değiştirmek için bkz. Proje koleksiyonu düzeyi izinlerini değiştirme.

Şirket içinde barındırılan aracılar için ek önkoşullar

Kuruluşunuzda şirket içinde barındırılan aracılar kullanılıyorsa daha fazla gereksinim vardır:

  • Bağımlılık tarama görevinin güvenlik açığı önerisi verilerini getirmesine izin vermek için bu URL'leri İzin Verilenler listenize ekleyin. İzin verilen IP adresleri ve etki alanı URL'leri hakkında daha fazla bilgi edinin.
Etki alanı URL'si Açıklama
https://governance.dev.azure.com/{organization_name} dev.azure.com etki alanını kullanan kuruluşların DevOps örneğine erişmesi için
https://dev.azure.com/{organization_name} dev.azure.com etki alanını kullanan kuruluşların DevOps örneğine erişmesi için
https://advsec.dev.azure.com/{organization_name} dev.azure.com etki alanını kullanan kuruluşların DevOps örneğine erişmesi için
https://{organization_name}.governance.visualstudio.com/ DevOps örneğine erişmek için {organization_name}.visualstudio.com etki alanını kullanan kuruluşlar için
https://{organization_name}.visualstudio.com  DevOps örneğine erişmek için {organization_name}.visualstudio.com etki alanını kullanan kuruluşlar için
https://{organization_name}.advsec.visualstudio.com/ DevOps örneğine erişmek için {organization_name}.visualstudio.com etki alanını kullanan kuruluşlar için
  • .NET çalışma zamanının uyumlu bir sürümünü (şu anda .NET 6.0.x) çalıştırın. Aracıda uyumlu bir sürüm yoksa bağımlılık tarama derleme görevi, .NET indirir.

  • GitHub'da bulunan mimarinizin kurulum betiğini kullanarak CodeQL paketini aracı aracı aracı önbelleğine yükleyin. Bu betikler ortam değişkeninin $AGENT_TOOLSDIRECTORY aracıdaki aracı araçları dizininin konumuna ayarlanmasını gerektirir; örneğin. C:/agent/_work/_tool. Alternatif olarak, aşağıdaki adımları el ile uygulayabilirsiniz:

    1. GitHub'dan en son CodeQL sürüm paketini seçin.
    2. Paketi indirin ve genellikle altında _work/_toolbulunan aracı aracı dizininin içindeki aşağıdaki dizine açın: ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. klasörünün geçerli sürümünü v2.16.0kullanarak klasör adı olarak adlandırılabilir ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/. Aracı aracı dizini hakkında daha fazla bilgi edinin.
    3. klasörün içinde ./CodeQL/0.0.0-[codeql-release-bundle-tag] başlıklı x64.complete boş bir dosya oluşturun. Önceki örneği kullanarak dosyanızın x64.complete bitiş dosyası yolu olmalıdır ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete.

GitHub Gelişmiş Güvenliğini Etkinleştirme

Gelişmiş Güvenliği kuruluş, proje veya depo düzeyinde etkinleştirebilirsiniz. Tarama araçlarının ve sonuçlarının her birine erişmek için önce Gelişmiş Güvenlik'i etkinleştirmeniz gerekir. Gelişmiş Güvenlik'i etkinleştirdikten sonra, bu ilkenin etkinleştirildiği bir depoya gizli diziler içeren gelecek tüm gönderimler engellenir ve depo gizli dizi taraması arka planda gerçekleşir.

Depo düzeyinde ekleme

  1. Azure DevOps projeniz için Proje ayarlarınıza gidin.
  2. Depo>Depoları'nı seçin.
  3. Gelişmiş Güvenlik'i etkinleştirmek istediğiniz depoyu seçin.
  4. Gelişmiş Güvenlik'i etkinleştirmek için Etkinleştir ve Faturalamayı başlat'ı seçin. Gelişmiş Güvenlik'in etkinleştirildiği tüm depolar için depo görünümünde artık bir kalkan simgesi görünür.

Screenshot of enabling GitHub Advanced Security.

Proje düzeyinde ekleme

  1. Azure DevOps projeniz için Proje ayarlarınıza gidin.
  2. Depolar'ı seçin.
  3. Ayarlar sekmesini seçin.
  4. Tümünü etkinleştir'i seçtiğinizde projeniz için etkin işleyici sayısıyla ilgili bir tahmin görürsünüz.
  5. Projenizdeki mevcut tüm depolar için Gelişmiş Güvenlik'i etkinleştirmek için Faturalamayı başlat'ı seçin.
  6. İsteğe bağlı olarak, yeni oluşturulan tüm depoların oluşturulduktan sonra Gelişmiş Güvenlik'i etkinleştirmesi için Yeni depolar için Gelişmiş Güvenliği otomatik olarak etkinleştir'i seçin.

Screenshot of project-level enablement for Advanced Security.

Kuruluş düzeyinde ekleme

  1. Azure DevOps kuruluşunuz için Kuruluş ayarlarınıza gidin.
  2. Depolar'ı seçin.
  3. Tümünü etkinleştir'i seçtiğinizde kuruluşunuzun etkin işleme sayısıyla ilgili bir tahmin görürsünüz.
  4. Kuruluşunuzdaki her projedeki mevcut depolar için Gelişmiş Güvenlik'i etkinleştirmek için Faturalamayı başlat'ı seçin.
  5. İsteğe bağlı olarak, yeni oluşturulan tüm projelerde oluşturma sırasında Gelişmiş Güvenlik'in etkinleştirilmesi için Yeni depolar için Gelişmiş Güvenliği otomatik olarak etkinleştir'i seçin.

Screenshot of org-level enablement for Advanced Security.

Gizli dizi taramayı ayarlama

Gizli dizi tarama anında iletme koruması ve depo taraması, Gelişmiş Güvenlik'i açtığınızda otomatik olarak etkinleştirilir. Depo ayarları sayfasından gizli dizi anında iletme korumasını etkinleştirebilir veya devre dışı bırakabilirsiniz.

Screenshot of enabling push protection.

Belirtildiği gibi gizli dizi tarama deposu taraması, seçilen bir depo için Gelişmiş Güvenlik etkinleştirildiğinde otomatik olarak başlatılır.

Bağımlılık taramayı ayarlama

Bağımlılık taraması, işlem hattı tabanlı bir tarama aracıdır. Sonuçlar depo başına toplanır. Taramak istediğiniz tüm işlem hatlarına bağımlılık tarama görevini eklemeniz önerilir.

İpucu

En doğru tarama sonuçları için, taramak istediğiniz kodu oluşturan bir işlem hattının derleme adımlarını izleyerek bağımlılık tarama görevini eklediğinizden emin olun.

Gelişmiş Güvenlik Bağımlılığı Tarama görevini (AdvancedSecurity-Dependency-Scanning@1) doğrudan YAML işlem hattı dosyanıza ekleyin veya görev yardımcısından Gelişmiş Güvenlik Bağımlılığı Tarama görevini seçin.

Screenshot of dependency scanning pipeline setup for YAML.

Kod taramayı ayarlama

Kod tarama, sonuçların depo başına toplandığı işlem hattı tabanlı bir tarama aracıdır.

İpucu

Kod tarama görevini ana üretim işlem hattınızın ayrı, kopyalanmış bir işlem hattına eklemeniz veya yeni bir işlem hattı oluşturmanız önerilir. Bunun nedeni, kod taramanın daha yoğun zaman alan bir derleme görevi olmasıdır.

Görevleri aşağıdaki sırayla ekleyin:

  1. Gelişmiş Güvenlik Kod BaşlatmaQL (AdvancedSecurity-Codeql-Init@1)
  2. Özel derleme adımlarınız
  3. Gelişmiş Güvenlik CodeQL Çözümlemesi Gerçekleştirme (AdvancedSecurity-Codeql-Analyze@1)

Screenshot of code scanning pipeline setup for YAML.

Ayrıca, CodeQL'i Başlatma görevinde hangi dilleri analiz ettiğinizi belirtmeniz gerekir. Virgülle ayrılmış bir liste, aynı anda birden çok dili analiz etmek için kullanılabilir. Desteklenen diller şunlardır: csharp, cpp, go, java, javascript, python, ruby, swift.

Örnek bir başlangıç işlem hattı aşağıda verilmiştir:

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

İpucu

Kotlin/Swift için CodeQL analizi şu anda beta aşamasındadır. Beta sırasında bu dillerin analizi, diğerlerinin CodeQL analizinden daha az kapsamlı olacaktır. 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 .

Belirtilen dil ise cpp, java, csharp veya swift özel veya AutoBuild derleme adımları gerekliyse. Diğer diller için AutoBuild dahil edilirse, adım herhangi bir eylem gerçekleştirmeden başarıyla tamamlanır.

Herhangi bir nedenle Gelişmiş Güvenlik'i devre dışı bırakmanız gerekiyorsa, deponuz için Gelişmiş Güvenlik'i bir sonraki etkinleştirişinizde tüm uyarılar ve uyarıların durumu korunur.

Sonraki adımlar