Freigeben über


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 der Advanced-Security-CodeQL@1 Pipelineaufgabe für YAML-Pipelines verwenden oder das Enable 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

  1. Navigieren Sie zu Ihren Projekteinstellungen für Ihr Azure DevOps-Projekt.
  2. Wählen Sie Repos>Repositorys aus.
  3. Wählen Sie das Repository aus, für das Sie Advanced Security aktivieren möchten.
  4. 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.

Screenshot: Aktivierung von GitHub Advanced Security

Onboarding auf Projektebene

  1. Navigieren Sie zu Ihren Projekteinstellungen für Ihr Azure DevOps-Projekt.
  2. Wählen Sie Repositorys aus.
  3. Wählen Sie die Registerkarte Einstellungen aus.
  4. Wählen Sie Alle aktivieren aus und es wird eine Schätzung für die Anzahl der aktiven Committer für Ihr Projekt angezeigt.
  5. Wählen Sie Abrechnung beginnen aus, um Advanced Security für jedes vorhandene Repository in Ihrem Projekt zu aktivieren.
  6. 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.

Screenshot der Aktivierung auf Projektebene für Advanced Security.

Onboarding auf Organisationsebene

  1. Wechseln Sie zu Ihren Organisationseinstellungen für Ihre Azure DevOps-Organisation.
  2. Wählen Sie Repositorys aus.
  3. Wählen Sie Alle aktivieren aus, und es wird eine Schätzung für die Anzahl der aktiven Committer für Ihre Organisation angezeigt.
  4. Wählen Sie Abrechnung beginnen aus, um Advanced Security für jedes vorhandene Repository in Ihrer Organisation zu aktivieren.
  5. 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.

Screenshot der Aktivierung auf Organisationsebene für Advanced Security.

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.

Screenshot: Aktivieren des Pushschutzes

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.

Screenshot: Pipelineeinrichtung der Abhängigkeitsüberprüfung für YAML

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:

  1. Advanced Security Initialize CodeQL (AdvancedSecurity-Codeql-Init@1)
  2. Ihre benutzerdefinierten Buildschritte
  3. Advanced Security Perform CodeQL Analysis (AdvancedSecurity-Codeql-Analyze@1)

Screenshot: Pipelineeinrichtung der Codeüberprüfung für YAML

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.

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