Udostępnij za pośrednictwem


Konfigurowanie GitHub Advanced Security dla usługi Azure DevOps

Usługa GitHub Advanced Security dla usługi Azure DevOps dodaje pakiet funkcji zabezpieczeń usługi GitHub Advanced Security do usługi Azure Repos.

Usługa GitHub Advanced Security dla usługi Azure DevOps obejmuje:

  • Ochrona wypychana skanowania wpisów tajnych: sprawdź, czy wypychane kod zawiera zatwierdzenia, które uwidaczniają wpisy tajne, takie jak poświadczenia
  • Skanowanie repozytorium skanowania wpisów tajnych: przeskanuj repozytorium i poszukaj ujawnionych wpisów tajnych, które zostały przypadkowo zatwierdzone
  • Skanowanie zależności — wyszukiwanie znanych luk w zabezpieczeniach w zależnościach typu open source (bezpośrednie i przechodnie)
  • Skanowanie kodu — używanie aparatu analizy statycznej CodeQL do identyfikowania luk w zabezpieczeniach aplikacji na poziomie kodu, takich jak wstrzyknięcie kodu i obejście uwierzytelniania

Obecnie usługa GitHub Advanced Security dla usługi Azure DevOps jest dostępna tylko dla usług Azure DevOps Services i nie ma planów przeniesienia tego produktu na serwer Azure DevOps Server. Usługa GitHub Advanced Security dla usługi Azure DevOps jest również dostępna tylko dla repozytoriów Git kodu.

Usługa GitHub Advanced Security dla usługi Azure DevOps współpracuje z usługą Azure Repos. Jeśli chcesz używać usługi GitHub Advanced Security z repozytoriami GitHub, zobacz Usługa GitHub Advanced Security.

Wymagania wstępne

Musisz mieć uprawnienia przydzielone jako członek grupy Administratorzy kolekcji projektów. Aby dodać członków do grupy Administratorzy kolekcji projektów lub zmienić uprawnienie na poziomie kolekcji projektów, zobacz Zmienianie uprawnień na poziomie kolekcji projektów.

Dodatkowe wymagania wstępne dotyczące własnych agentów

Jeśli organizacja korzysta z własnych agentów, istnieje więcej wymagań:

  • Dodaj te adresy URL do listy Dozwolonych, aby umożliwić zadanie skanowania zależności w celu pobrania danych doradczych dotyczących luk w zabezpieczeniach. Dowiedz się więcej o dozwolonych adresach IP i adresach URL domen.
Adres URL domeny opis
https://governance.dev.azure.com W przypadku organizacji korzystających z domeny dev.azure.com w celu uzyskania dostępu do wystąpienia metodyki DevOps
https://dev.azure.com W przypadku organizacji korzystających z domeny dev.azure.com w celu uzyskania dostępu do wystąpienia metodyki DevOps
https://advsec.dev.azure.com W przypadku organizacji korzystających z domeny dev.azure.com w celu uzyskania dostępu do wystąpienia metodyki DevOps
https://{organization_name}.governance.visualstudio.com W przypadku organizacji używających domeny {organization_name}.visualstudio.com w celu uzyskania dostępu do wystąpienia metodyki DevOps
https://{organization_name}.visualstudio.com  W przypadku organizacji używających domeny {organization_name}.visualstudio.com w celu uzyskania dostępu do wystąpienia metodyki DevOps
https://{organization_name}.advsec.visualstudio.com W przypadku organizacji używających domeny {organization_name}.visualstudio.com w celu uzyskania dostępu do wystąpienia metodyki DevOps
  • Uruchom zgodną wersję środowiska uruchomieniowego .NET (obecnie .NET 8.x). Jeśli zgodna wersja nie jest obecna na agencie, zadanie kompilacji skanowania zależności pobiera platformę .NET.

  • Upewnij się, że pakiet CodeQL jest zainstalowany w pamięci podręcznej narzędzi agenta na agencie. Możesz użyć zmiennej enableAutomaticCodeQLInstall: true z zadaniem potoku Advanced-Security-CodeQL@1 dla potoków YAML lub zaznaczyć Enable automatic CodeQL detection and installation pole wyboru dla klasycznych potoków. Alternatywnie, aby uzyskać instrukcje instalacji ręcznej, zobacz Skanowanie kodu dla usługi GitHub Advanced Security dla usługi Azure DevOps.

Włączanie zabezpieczeń zaawansowanych usługi GitHub

Zabezpieczenia zaawansowane można włączyć na poziomie organizacji, projektu lub repozytorium. Aby uzyskać dostęp do poszczególnych narzędzi skanowania i wyników, należy najpierw włączyć zabezpieczenia zaawansowane. Po włączeniu usługi Advanced Security wszelkie przyszłe wypychania zawierające wpisy tajne do repozytorium z włączonymi zasadami są blokowane, a skanowanie wpisów tajnych repozytorium odbywa się w tle.

Dołączanie na poziomie repozytorium

  1. Przejdź do ustawień projektu usługi Azure DevOps.
  2. Wybierz pozycję Repozytoria>repozytoriów.
  3. Wybierz repozytorium, dla którego chcesz włączyć usługę Advanced Security.
  4. Wybierz pozycję Włącz i rozpocznij rozliczenia, aby aktywować zabezpieczenia zaawansowane. Ikona tarczy jest teraz wyświetlana w widoku repozytorium dla dowolnego repozytorium z włączonym zabezpieczeniami zaawansowanymi.

Zrzut ekranu przedstawiający włączanie usługi GitHub Advanced Security.

Dołączanie na poziomie projektu

  1. Przejdź do ustawień projektu usługi Azure DevOps.
  2. Wybierz pozycję Repozytoria.
  3. Wybierz kartę Ustawienia.
  4. Wybierz pozycję Włącz wszystko i zobacz oszacowanie liczby aktywnych zatwierdzania dla projektu.
  5. Wybierz pozycję Rozpocznij rozliczenia , aby aktywować zabezpieczenia zaawansowane dla każdego istniejącego repozytorium w projekcie.
  6. Opcjonalnie wybierz pozycję Automatycznie włącz zabezpieczenia zaawansowane dla nowych repozytoriów , aby wszystkie nowo utworzone repozytoria miały włączone zabezpieczenia zaawansowane po utworzeniu.

Zrzut ekranu przedstawiający włączanie na poziomie projektu dla usługi Advanced Security.

Dołączanie na poziomie organizacji

  1. Przejdź do ustawień organizacji usługi Azure DevOps.
  2. Wybierz Repozytoria.
  3. Wybierz pozycję Włącz wszystko i zobacz szacowanie liczby aktywnych zatłoczeń w organizacji.
  4. Wybierz pozycję Rozpocznij rozliczenia , aby aktywować zabezpieczenia zaawansowane dla każdego istniejącego repozytorium w każdym projekcie w organizacji.
  5. Opcjonalnie wybierz pozycję Automatycznie włącz zabezpieczenia zaawansowane dla nowych repozytoriów , aby wszystkie nowo utworzone projekty miały włączone zabezpieczenia zaawansowane po utworzeniu.

Zrzut ekranu przedstawiający włączanie na poziomie organizacji dla usługi Advanced Security.

Konfigurowanie skanowania wpisów tajnych

Funkcja ochrony wypychanych i skanowania repozytoriów wpisów tajnych jest automatycznie włączana po włączeniu usługi Advanced Security. Możesz włączyć lub wyłączyć ochronę wypychaną wpisu tajnego ze strony ustawień repozytorium.

Zrzut ekranu przedstawiający włączanie ochrony wypychanej.

Jak wspomniano, skanowanie repozytorium skanowania wpisów tajnych jest automatycznie uruchamiane po włączeniu zabezpieczeń zaawansowanych dla wybranego repozytorium.

Konfigurowanie skanowania zależności

Skanowanie zależności to narzędzie do skanowania opartego na potoku. Wyniki są agregowane na repozytorium. Zaleca się dodanie zadania skanowania zależności do wszystkich potoków, które chcesz zeskanować.

Napiwek

Aby uzyskać najdokładniejsze wyniki skanowania, pamiętaj, aby dodać zadanie skanowania zależności zgodnie z krokami kompilacji i/lub krokiem przywracania pakietu potoku, który kompiluje kod, który chcesz skanować.

Dodaj zadanie Zaawansowane skanowanie zależności zabezpieczeń (AdvancedSecurity-Dependency-Scanning@1) bezpośrednio do pliku potoku YAML lub wybierz zadanie Zaawansowane skanowanie zależności zabezpieczeń z poziomu asystenta zadań.

Zrzut ekranu przedstawiający konfigurację potoku skanowania zależności dla kodu YAML.

Konfigurowanie skanowania kodu

Skanowanie kodu to również narzędzie do skanowania opartego na potoku, w którym wyniki są agregowane na repozytorium.

Napiwek

Zaleca się dodanie zadania skanowania kodu do oddzielnego, sklonowanego potoku głównego potoku produkcyjnego lub utworzenia nowego potoku. Dzieje się tak, ponieważ skanowanie kodu może być bardziej czasochłonnym zadaniem kompilacji.

Dodaj zadania w następującej kolejności:

  1. Advanced Security Initialize CodeQL (AdvancedSecurity-Codeql-Init@1)
  2. Niestandardowe kroki kompilacji
  3. Advanced Security Perform CodeQL Analysis (AdvancedSecurity-Codeql-Analyze@1)

Zrzut ekranu przedstawiający konfigurację potoku skanowania kodu dla kodu YAML.

Ponadto należy określić, które języki analizujesz w zadaniu Initialize CodeQL. Lista rozdzielona przecinkami może służyć do analizowania wielu języków jednocześnie. Obsługiwane języki to csharp, cpp, go, java, javascript, python, ruby, swift. Jeśli używasz własnych agentów, możesz również dodać zmienną enableAutomaticCodeQLInstall: true , aby automatycznie zainstalować najnowsze bity CodeQL dla agenta.

Oto przykładowy potok początkowy:

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
      # If you're using a self-hosted agent to run CodeQL, use `enableAutomaticCodeQLInstall` to automatically use the latest CodeQL bits on your agent:
      enableAutomaticCodeQLInstall: true

#   Add your custom build steps here
# - Ensure that all code to be scanned is compiled (often using a `clean` command to ensure you're 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.
# - For dependency scanning, ensure you have a package restore step for more accurate results.

# 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

Napiwek

Analiza CodeQL dla języka Kotlin/Swift jest obecnie dostępna w wersji beta. W trakcie beta analiza tych języków będzie mniej kompleksowa niż analiza CodeQL innych. Służy java do analizowania kodu napisanego w języku Java, Kotlin lub obu tych językach. Służy javascript do analizowania kodu napisanego w języku JavaScript, TypeScript lub obu tych językach.

Jeśli określony język jest cpp, java, csharp lub swift wymagane są niestandardowe kroki kompilacji.

Konfigurowanie adnotacji żądania ściągnięcia

Zarówno w przypadku skanowania zależności, jak i skanowania kodu adnotacje są automatycznie konfigurowane pod kątem żądań ściągnięcia, w których zasady weryfikacji kompilacji mają zastosowanie do zadań skanowania zależności i/lub skanowania kodu zawartych w potoku. Aby uzyskać więcej informacji na temat konfigurowania zasad weryfikacji kompilacji, zobacz Kompilowanie weryfikacji.

Adnotacje żądań ściągnięcia wymagają również skanowania zaawansowanego zabezpieczeń w gałęzi domyślnej i gałęzi docelowej przed skanowaniem gałęzi źródłowej (żądania ściągnięcia). Aby uzyskać więcej informacji na temat rozwiązywania alertów dotyczących gałęzi żądań ściągnięcia, zobacz Zarządzanie alertami skanowania zależności dla żądań ściągnięcia i Zarządzanie alertami skanowania kodu w żądaniach ściągnięcia.

Jeśli z jakiegokolwiek powodu musisz wyłączyć usługę Advanced Security, wszystkie alerty i stan alertów zostaną zachowane na karcie Zabezpieczenia zaawansowane po następnym ponownym włączeniu zabezpieczeń zaawansowanych dla repozytorium.

Następne kroki