Konfigurieren von GitHub Advanced Security für Azure DevOps
GitHub Advanced Security für Azure DevOps fügt Azure Repos die Sicherheitsfeatures von GitHub Advanced Security hinzu.
GitHub Advanced Security für Azure DevOps umfasst:
- Pushschutz für Geheimnisüberprüfung: Überprüft, ob Codepushvorgänge Commits enthalten, die Geheimnisse wie Anmeldeinformationen offenlegen.
- Überprüfung des Repositorys für Geheimnisüberprüfung: Überprüft Ihr Repository, und sucht nach offengelegten Geheimnissen, die versehentlich committet wurden.
- Abhängigkeitsüberprüfung: Sucht nach bekannten Sicherheitsrisiken in Open-Source-Abhängigkeiten (direkt und transitiv).
- Codeüberprüfung: Verwendet die statische Analyse-Engine von CodeQL, um Sicherheitsrisiken auf Codeebene zu identifizieren, z. B. SQL-Einschleusung und Authentifizierungsumgehung.
Derzeit ist GitHub Advanced Security für Azure DevOps nur für den Azure DevOps-Dienst verfügbar, und es gibt keine Pläne, dieses Produkt auf Azure DevOps Server auszuweiten. GitHub Advanced Security für Azure DevOps ist auch nur für Code-Git-Repositorys verfügbar.
GitHub Advanced Security für Azure DevOps funktioniert mit Azure Repos. Wenn Sie GitHub Advanced Security mit GitHub-Repositorys verwenden möchten, lesen Sie GitHub Advanced Security.
Voraussetzungen
Sie müssen über Berechtigungen verfügen, die als Mitglied der Gruppe „Projektsammlungsadministratoren“ zugewiesen sind. Informationen zum Hinzufügen von Mitgliedern zur Gruppe „Projektsammlungsadministratoren“ oder zum Ändern einer Berechtigung auf Projektsammlungsebene finden Sie unter Ändern von Berechtigungen auf Projektsammlungsebene.
Zusätzliche Voraussetzungen für selbstgehostete Agents
Wenn Ihr organization selbstgehostete Agents verwendet, gibt es weitere Anforderungen:
- Fügen Sie Ihrer Positivliste diese URLs hinzu, damit der Abhängigkeitsüberprüfungstask Daten zu Sicherheitsrisikoempfehlungen abrufen kann. Erfahren Sie mehr über zulässige IP-Adressen und Domänen-URLs.
Domänen-URL | Beschreibung |
---|---|
https://governance.dev.azure.com |
Für Organisationen, die die Domäne dev.azure.com für den Zugriff auf ihre DevOps-Instanz verwenden. |
https://dev.azure.com |
Für Organisationen, die die Domäne dev.azure.com für den Zugriff auf ihre DevOps-Instanz verwenden. |
https://advsec.dev.azure.com |
Für Organisationen, die die Domäne dev.azure.com für den Zugriff auf ihre DevOps-Instanz verwenden. |
https://{organization_name}.governance.visualstudio.com |
Für Organisationen, die die Domäne {organization_name}.visualstudio.com für den Zugriff auf ihre DevOps-Instanz verwenden. |
https://{organization_name}.visualstudio.com |
Für Organisationen, die die Domäne {organization_name}.visualstudio.com für den Zugriff auf ihre DevOps-Instanz verwenden. |
https://{organization_name}.advsec.visualstudio.com |
Für Organisationen, die die Domäne {organization_name}.visualstudio.com für den Zugriff auf ihre DevOps-Instanz verwenden. |
Führen Sie eine kompatible Version der .NET-Runtime aus (derzeit .NET 8.x). Wenn keine kompatible Version auf dem Agent vorhanden ist, lädt der Buildtask für die Abhängigkeitsüberprüfung .NET herunter.
Stellen Sie sicher, dass das CodeQL-Bündel im Agent-Toolcache auf Ihrem Agent installiert ist. Sie können die
enableAutomaticCodeQLInstall: true
Variable mit derAdvanced-Security-CodeQL@1
Pipelineaufgabe für YAML-Pipelines verwenden oder dasEnable automatic CodeQL detection and installation
Kontrollkästchen für klassische Pipelines aktivieren. Alternativ finden Sie Anleitungen zur manuellen Installation unter Codeüberprüfung für GitHub Advanced Security für Azure DevOps.
Aktivieren von GitHub Advanced Security
Sie können Advanced Security auf Organisations-, Projekt- oder Repositoryebene aktivieren. Um auf jedes der Überprüfungstools und -ergebnisse zugreifen zu können, müssen Sie zunächst Advanced Security aktivieren. Nachdem Sie Advanced Security aktiviert haben, werden alle zukünftigen Pushvorgänge, die Geheimnisse enthalten, in ein Repository mit dieser Richtlinie blockiert, und die Überprüfung von Repositorygeheimnissen erfolgt im Hintergrund.
Onboarding auf Repositoryebene
- Navigieren Sie zu Ihren Projekteinstellungen für Ihr Azure DevOps-Projekt.
- Wählen Sie Repos>Repositorys aus.
- Wählen Sie das Repository aus, für das Sie Advanced Security aktivieren möchten.
- Wählen Sie Aktivieren und Abrechnung beginnen, um Advanced Security zu aktivieren aus. Ein Schildsymbol wird jetzt in der Repositoryansicht für jedes Repository mit aktivierter Advanced Security-Funktion angezeigt.
Onboarding auf Projektebene
- Navigieren Sie zu Ihren Projekteinstellungen für Ihr Azure DevOps-Projekt.
- Wählen Sie Repositorys aus.
- Wählen Sie die Registerkarte Einstellungen aus.
- Wählen Sie Alle aktivieren aus und es wird eine Schätzung für die Anzahl der aktiven Committer für Ihr Projekt angezeigt.
- Wählen Sie Abrechnung beginnen aus, um Advanced Security für jedes vorhandene Repository in Ihrem Projekt zu aktivieren.
- Wählen Sie optional Advanced Security für neue Repositorys automatisch aktivieren aus, sodass für alle neu erstellten Repositorys bei der Erstellung Advanced Security aktiviert wird.
Onboarding auf Organisationsebene
- Wechseln Sie zu Ihren Organisationseinstellungen für Ihre Azure DevOps-Organisation.
- Wählen Sie Repositorys aus.
- Wählen Sie Alle aktivieren aus, und es wird eine Schätzung für die Anzahl der aktiven Committer für Ihre Organisation angezeigt.
- Wählen Sie Abrechnung beginnen aus, um Advanced Security für jedes vorhandene Repository in Ihrer Organisation zu aktivieren.
- Wählen Sie optional Advanced Security für neue Repositorys automatisch aktivieren aus, sodass für alle neu erstellten Projekte bei der Erstellung Advanced Security aktiviert wird.
Einrichten der Überprüfung von Geheimnissen
Der Pushschutz für Geheimnisüberprüfung und Repositoryüberprüfung werden automatisch aktiviert, wenn Sie Advanced Security aktivieren. Sie können den Pushschutz für Geheimnisse auf der Seite mit den Repositoryeinstellungen aktivieren oder deaktivieren.
Wie bereits erwähnt, wird die Überprüfung des Repositorys für Geheimnisüberprüfung automatisch gestartet, wenn Advanced Security für ein ausgewähltes Repository aktiviert wird.
Einrichten von Abhängigkeitsüberprüfung
Abhängigkeitsüberprüfung ist ein pipelinebasiertes Überprüfungstool. Die Ergebnisse werden pro Repository aggregiert. Es wird empfohlen, den Abhängigkeitsüberprüfungstask allen Pipelines hinzuzufügen, die überprüft werden sollen.
Tipp
Um die genauesten Überprüfungsergebnisse zu erzielen, fügen Sie den Task zum Überprüfen von Abhängigkeiten mithilfe der Buildschritte und/oder des Wiederherstellungsschritts des Pakets einer Pipeline hinzu, die den zu überprüfenden Code erstellt.
Fügen Sie den Task „Advanced Security Abhängigkeitsüberprüfung“ (AdvancedSecurity-Dependency-Scanning@1) Ihrer YAML-Pipelinedatei direkt hinzu, oder wählen Sie im Task-Assistenten den Task Advanced Security -Abhängigkeitsüberprüfung aus.
Einrichten der Codeüberprüfung
Codeüberprüfung ist auch ein pipelinebasiertes Überprüfungstool, bei dem die Ergebnisse pro Repository aggregiert werden.
Tipp
Es wird empfohlen, den Codeüberprüfungstask einer separaten, geklonten Pipeline Ihrer Hauptproduktionspipeline hinzuzufügen oder eine neue Pipeline zu erstellen. Dies liegt daran, dass die Codeüberprüfung ein zeitintensiverer Buildtask sein kann.
Fügen Sie die Tasks in der folgenden Reihenfolge hinzu:
- Advanced Security Initialize CodeQL (AdvancedSecurity-Codeql-Init@1)
- Ihre benutzerdefinierten Buildschritte
- Advanced Security Perform CodeQL Analysis (AdvancedSecurity-Codeql-Analyze@1)
Darüber hinaus müssen Sie angeben, welche Sprache(en) Sie in der Aufgabe „CodeQL initialisieren“ analysieren. Eine durch Trennzeichen getrennte Liste kann verwendet werden, um mehrere Sprachen gleichzeitig zu analysieren. Unterstützte Sprachen sind csharp, cpp, go, java, javascript, python, ruby, swift
. Wenn Sie selbst gehostete Agents verwenden, können Sie die enableAutomaticCodeQLInstall: true
Variable auch hinzufügen, um die neuesten CodeQL-Bits für Ihren Agent automatisch zu installieren.
Hier ist ein Beispiel für eine Startpipeline:
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
Tipp
Die CodeQL-Analyse für Kotlin befindet sich derzeit in der Betaphase. Während der Betaphase ist die Analyse von Ruby weniger umfassend als die CodeQL-Analyse für andere Sprachen.
Verwenden Sie java
zum Analysieren von Code, der in Java, Kotlin oder beiden Sprachen geschrieben wurde.
Verwenden Sie javascript
zum Analysieren von Code, der in JavaScript, TypeScript oder beiden Sprachen geschrieben wurde.
Wenn die angegebene Sprache cpp, java, csharp
oder swift
ist, sind benutzerdefinierte Buildschritte erforderlich.
Einrichten von Pull Request-Anmerkungen
Für Abhängigkeitsüberprüfungen und Codeüberprüfungen werden Anmerkungen automatisch für Pull Requests konfiguriert, bei denen eine Buildüberprüfungsrichtlinie mit Abhängigkeits- und/oder Codeüberprüfungsaufgaben in Ihrer Pipeline gilt. Weitere Informationen zum Konfigurieren von Buildüberprüfungsrichtlinien finden Sie unter Buildüberprüfung.
Anmerkungen zur Pullanforderung erfordern außerdem einen Advanced Security-Scan in Ihrem Standardbranch und Zielzweig, bevor Sie den Quellzweig (Pullanforderung) überprüfen. Weitere Informationen zum Auflösen von Warnungen für Pull Request-Branches finden Sie unter Verwalten von Abhängigkeitsüberprüfungswarnungen für Pull Requests und Verwalten von Codeüberprüfungswarnungen für Pull Requests.
Wenn Sie Advanced Security aus irgendeinem Grund deaktivieren müssen, werden alle Warnungen und der Status von Warnungen auf der Advanced Security-Registerkarte beibehalten, wenn Sie Advanced Security für Ihr Repository das nächste Mal aktivieren.
Nächste Schritte
- Warnungen der Codeüberprüfung für GitHub Advanced Security für Azure DevOps
- Warnungen der Abhängigkeitsüberprüfung für GitHub Advanced Security für Azure DevOps
- Warnungen der Geheimnisüberprüfung für GitHub Advanced Security für Azure DevOps
- Berechtigungen für GitHub Advanced Security für Azure DevOps
- Abrechnung für GitHub Advanced Security für Azure DevOps