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 potokuAdvanced-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
- Przejdź do ustawień projektu usługi Azure DevOps.
- Wybierz pozycję Repozytoria>repozytoriów.
- Wybierz repozytorium, dla którego chcesz włączyć usługę Advanced Security.
- 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.
Dołączanie na poziomie projektu
- Przejdź do ustawień projektu usługi Azure DevOps.
- Wybierz pozycję Repozytoria.
- Wybierz kartę Ustawienia.
- Wybierz pozycję Włącz wszystko i zobacz oszacowanie liczby aktywnych zatwierdzania dla projektu.
- Wybierz pozycję Rozpocznij rozliczenia , aby aktywować zabezpieczenia zaawansowane dla każdego istniejącego repozytorium w projekcie.
- 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.
Dołączanie na poziomie organizacji
- Przejdź do ustawień organizacji usługi Azure DevOps.
- Wybierz Repozytoria.
- Wybierz pozycję Włącz wszystko i zobacz szacowanie liczby aktywnych zatłoczeń w organizacji.
- Wybierz pozycję Rozpocznij rozliczenia , aby aktywować zabezpieczenia zaawansowane dla każdego istniejącego repozytorium w każdym projekcie w organizacji.
- 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.
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.
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ń.
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:
- Advanced Security Initialize CodeQL (AdvancedSecurity-Codeql-Init@1)
- Niestandardowe kroki kompilacji
- Advanced Security Perform CodeQL Analysis (AdvancedSecurity-Codeql-Analyze@1)
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.
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
- Alerty skanowania kodu dla usługi GitHub Advanced Security dla usługi Azure DevOps
- Alerty skanowania zależności dla usługi GitHub Advanced Security dla usługi Azure DevOps
- Alerty skanowania wpisów tajnych dla usługi GitHub Advanced Security dla usługi Azure DevOps
- Uprawnienia usługi GitHub Advanced Security dla usługi Azure DevOps
- Rozliczenia usługi GitHub Advanced Security dla usługi Azure DevOps