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 umfasst Folgendes:

  • 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 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/{organization_name} Für Organisationen, die die Domäne dev.azure.com für den Zugriff auf ihre DevOps-Instanz verwenden.
https://dev.azure.com/{organization_name} Für Organisationen, die die Domäne dev.azure.com für den Zugriff auf ihre DevOps-Instanz verwenden.
https://advsec.dev.azure.com/{organization_name} 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 6.0.x). Wenn keine kompatible Version auf dem Agent vorhanden ist, lädt der Buildtask für die Abhängigkeitsüberprüfung .NET herunter.

  • Installieren Sie das CodeQL-Paket im Cache des Agent-Tools mithilfe des auf GitHub verfügbaren Setupskripts für Ihre Architektur. Für diese Skripts muss die $AGENT_TOOLSDIRECTORY-Umgebungsvariable auf den Speicherort des Agent-Tool-Verzeichnisses im Agent festgelegt werden, wie z. B. C:/agent/_work/_tool. Alternativ können Sie die folgenden Schritte manuell implementieren:

    1. Wählen Sie das neueste CodeQL-Releasepaket auf GitHub aus.
    2. Laden Sie das Paket herunter, und entpacken Sie es in das folgende Verzeichnis im Verzeichnis des Agent-Tools, das sich in der Regel unter _work/_tool befindet: ./CodeQL/0.0.0-[codeql-release-bundle-tag]/x64/. Wenn Sie den aktuellen Release von v2.16.0verwenden, wird der Dateiname ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64/ lauten. Erfahren Sie mehr über das Verzeichnis des Agent-Tools.
    3. Erstellen Sie im Ordner ./CodeQL/0.0.0-[codeql-release-bundle-tag] eine leere Datei mit dem Namen x64.complete. Wenn Sie das vorherige Beispiel verwenden, sollte der Pfad der Enddatei zu Ihrer x64.complete Datei ./CodeQL/0.0.0-codeql-bundle-v2.16.0/x64.complete lauten.

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 of enabling 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. Es wird eine Schätzung für die Anzahl der aktiven Commiter 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 of project-level enablement for 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. Es wird eine Schätzung für die Anzahl der aktiven Commiter 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 of org-level enablement for 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 of enabling push protection.

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 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 of dependency scanning pipeline setup for 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 of code scanning pipeline setup for 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.

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

#   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. 

# 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 Schritte oder AutoBuild-Buildschritte erforderlich. Wenn AutoBuild für andere Sprachen enthalten ist, wird der Schritt erfolgreich abgeschlossen, ohne eine Aktion auszuführen.

Wenn Sie Advanced Security aus irgendeinem Grund deaktivieren müssen, werden alle Warnungen und der Status von Warnungen beibehalten, wenn Sie Advanced Security für Ihr Repository das nächste Mal aktivieren.

Nächste Schritte