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 platformy Azure 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 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 kolekcji projektów Administracja istratoró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/{organization_name} W przypadku organizacji korzystających z domeny dev.azure.com w celu uzyskania dostępu do wystąpienia metodyki DevOps
https://dev.azure.com/{organization_name} 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/{organization_name} 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 6.0.x). Jeśli zgodna wersja nie jest obecna na agencie, zadanie kompilacji skanowania zależności pobiera platformę .NET.

  • Zainstaluj pakiet CodeQL w pamięci podręcznej narzędzi agenta, korzystając ze skryptu konfiguracji dla architektury dostępnego w usłudze GitHub. Te skrypty wymagają $AGENT_TOOLSDIRECTORY ustawienia zmiennej środowiskowej na lokalizację katalogu narzędzi agenta na agencie, np. C:/agent/_work/_tool. Alternatywnie możesz ręcznie zaimplementować następujące kroki:

    1. Wybierz najnowszy pakiet wersji CodeQL z usługi GitHub.
    2. Pobierz i rozpakuj pakiet do następującego katalogu wewnątrz katalogu narzędzi agenta, zazwyczaj znajdujący się w folderze _work/_tool: ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. Przy użyciu bieżącej wersji parametru v2.16.0nazwa folderu będzie miała ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/tytuł . Dowiedz się więcej o katalogu narzędzi agenta.
    3. Utwórz pusty plik o x64.complete nazwie w folderze ./CodeQL/0.0.0-[codeql-release-bundle-tag] . Korzystając z poprzedniego przykładu, ścieżka pliku końcowego do x64.complete pliku powinna mieć wartość ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete.

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 , a zobaczysz 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 , a zobaczysz oszacowanie liczby aktywnych osób zatwierdzających 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.

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

#   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.
# - 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 lub swift wymagane są cpp, java, csharp kroki niestandardowe lub AutoBuild kompilacji. W przypadku innych języków, jeśli autobuild został pomyślnie ukończony, krok zakończy się pomyślnie bez wykonywania żadnej akcji.

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

Następne kroki