Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit der Codeüberprüfung in GitHub Advanced Security für Azure DevOps können Sie den Code in einem Azure DevOps-Repository analysieren, um Sicherheitsrisiken und Codierungsfehler zu finden. Sie benötigen entweder GitHub Advanced Security für Azure DevOps oder, wenn Sie die eigenständige Oberfläche verwenden, GitHub Code Security für Azure DevOps aktiviert. Alle durch die Analyse identifizierten Probleme werden als Warnung ausgegeben. Die Codeüberprüfung verwendet CodeQL, um Sicherheitsrisiken zu identifizieren.
CodeQL ist die Codeanalyse-Engine, die von GitHub entwickelt wurde, um Sicherheitsüberprüfungen zu automatisieren. Sie können Ihren Code mithilfe von CodeQL analysieren und die Ergebnisse als Codescanwarnungen anzeigen. Eine spezifischere Dokumentation zu CodeQL finden Sie in der CodeQL-Dokumentation.
GitHub Advanced Security für Azure DevOps funktioniert mit Azure Repos. Informationen zur Verwendung von GitHub Advanced Security mit GitHub-Repositorys finden Sie unter GitHub Advanced Security.
Voraussetzungen
| Kategorie | Anforderungen |
|---|---|
| Berechtigungen | – Um eine Zusammenfassung aller Warnungen für ein Repository anzuzeigen: Beitragsberechtigungen für das Repository. - Um Warnhinweise in der erweiterten Sicherheit zu verwerfen: Projektadministrator Berechtigungen. – So verwalten Sie Berechtigungen in Advanced Security: Mitglied der Gruppe "Project Collection Administrators" oder Berechtigung "Advanced Security: Einstellungen verwalten" auf „Zulassen“ gesetzt. |
Weitere Informationen zu Erweiterten Sicherheitsberechtigungen finden Sie unter "Verwalten erweiterter Sicherheitsberechtigungen".
Weitere Konfigurationen für die Codeüberprüfung
Sprachen- und Abfrageunterstützung
GitHub-Experten, Sicherheitsexperten und Mitwirkende der Community schreiben und verwalten die CodeQL-Standardabfragen, die für die Codeüberprüfung verwendet werden. Die Abfragen werden regelmäßig aktualisiert, um die Analyse zu verbessern und falsch positive Ergebnisse zu verringern. Die Abfragen sind Open-Source-Code, d. h. Sie können die Abfragen im github/codeql-Repository einsehen und zu ihnen beitragen.
CodeQL unterstützt und verwendet folgende Sprachbezeichner:
| Sprache | Bezeichner |
|---|---|
| C/C++ | cpp |
| C# | csharp |
| Go | go |
| Java/Kotlin | java |
| JavaScript/TypeScript | javascript |
| Python | python |
| Rubin | ruby |
| Swift | swift |
Tipp
- Verwenden Sie
cppzum Analysieren von Code, der in C und/oder in C++ geschrieben wurde. - Verwenden Sie
javazum Analysieren von Code, der in Java, Kotlin oder beiden Sprachen geschrieben wurde. - Verwenden Sie
javascriptzum Analysieren von Code, der in JavaScript, TypeScript oder beiden Sprachen geschrieben wurde.
Weitere Informationen finden Sie unter Unterstützte Sprachen und Frameworks.
Die spezifischen Abfragen und Aufgabendetails der Ausführung durch CodeQL können Sie sich im Buildprotokoll ansehen.
Buildmodusanpassung für die Codeüberprüfung
Bei der Einrichtung einer Pipeline für die Überprüfung unterstützt die Codeüberprüfung zwei Buildmodi:
-
none- Die CodeQL-Datenbank wird direkt aus der Codebasis erstellt, ohne die Codebasis zu erstellen (unterstützt für alle interpretierten Sprachen und zusätzlich unterstützt fürcpp,javaundcsharp). -
manual– Sie definieren die Build-Schritte, die für die Codebasis im Workflow verwendet werden sollen (unterstützt für alle kompilierten Sprachen).
Weitere Informationen zu den verschiedenen Buildmodi, einschließlich eines Vergleichs der Vorteile jedes einzelnen Buildmodus, finden Sie unter CodeQL-Code-Scanning für kompilierte Sprachen.
Tipp
Der Buildmodus none kann mit anderen interpretierten Sprachen verwendet werden, z. B. JavaScript, Python, Ruby.
Wenn der Buildmodus none für C# oder Java mit anderen kompilierten Sprachen angegeben ist, die den Buildmodus nonenicht unterstützen, schlägt die Pipelineaufgabe fehl.
Der folgende Code zeigt ein Beispiel für eine gültige Konfiguration mit mehreren Sprachen und none Buildmodus:
trigger: none
pool:
vmImage: windows-latest
steps:
- task: AdvancedSecurity-Codeql-Init@1
displayName: Initialize CodeQL
inputs:
# build mode `none` is supported for C# and Java, and JavaScript is an interpreted language
# and build mode `none` has no impact on JavaScript analysis
languages: 'csharp, java, javascript'
buildtype: 'none'
- task: AdvancedSecurity-Codeql-Analyze@1
displayName: Perform CodeQL Analysis
Der folgende Code zeigt ein Beispiel für eine ungültige Konfiguration mit mehreren Sprachen und none dem Buildmodus:
trigger: none
pool:
vmImage: windows-latest
steps:
- task: AdvancedSecurity-Codeql-Init@1
displayName: Initialize CodeQL
inputs:
# build mode `none` is supported for C# but build mode `none` is NOT supported for Swift
# so this pipeline definition will result in a failed run
languages: 'csharp, swift'
buildtype: 'none'
- task: AdvancedSecurity-Codeql-Analyze@1
displayName: Perform CodeQL Analysis
Code-Scan-Warnungen
Die Warnungen der Codeüberprüfung von GitHub Advanced Security für Azure DevOps enthalten Codeüberprüfungsflags nach Repository, die bei Anwendungsrisiken auf Codeebene warnen.
Um Codeüberprüfung zu verwenden, müssen Sie zunächst GitHub Advanced Security für Azure DevOps konfigurieren.
Die Registerkarte „Advanced Security“ unter „Repos“ in Azure DevOps ist der Hub zum Anzeigen Ihrer Codeüberprüfungswarnungen. Wählen Sie die Registerkarte Code scanning aus, um Scanwarnungen anzuzeigen. Sie können nach Zweig, Zustand, Pipeline, Regeltyp und Schwere filtern. Zurzeit werden im Warnungshub keine Warnungen für die abgeschlossene Überprüfung von PR-Verzweigungen angezeigt.
Es hat keine Auswirkungen auf die Ergebnisse, wenn Pipelines oder Branches umbenannt werden. Es kann bis zu 24 Stunden dauern, bis der neue Name angezeigt wird.
Wenn Sie benutzerdefinierte CodeQL-Abfragen ausführen, wird aus den verschiedenen Abfragepaketen standardmäßig kein separater Filter für Warnungen generiert. Sie können nach Regel filtern, die für jede Abfrage eindeutig ist.
Wenn Sie Advanced Security für Ihr Repository deaktivieren, verlieren Sie den Zugriff auf die Ergebnisse auf der Registerkarte „Advanced Security“ und den Buildtask. Die Buildaufgabe schlägt nicht fehl, aber alle Ergebnisse von Builds, die mit der Aufgabe ausgeführt werden, während die erweiterte Sicherheit deaktiviert ist, werden ausgeblendet und nicht beibehalten.
Warnungsdetails
Wählen Sie eine Warnung aus, um weitere Details zu erhalten, einschließlich Anleitungen zur Behebung. Jede Warnung enthält einen Standort, eine Beschreibung, ein Beispiel und eine Schwere.
| Abschnitt | Erklärung |
|---|---|
| Standort | Im Abschnitt Locations wird ein bestimmter Fall beschrieben, in dem CodeQL ein Sicherheitsrisiko erkannt hat. Wenn es mehrere Instanzen Ihres Codes gibt, die gegen dieselbe Regel verstoßen, wird für jeden einzelnen Speicherort eine neue Warnung generiert. Die Karte „Locations“ (Speicherorte) enthält einen direkten Link zum betroffenen Codeschnipsel, damit Sie den Codeschnipsel auswählen können, der zur Bearbeitung an die Azure DevOps-Webbenutzeroberfläche weitergeleitet werden soll. |
| BESCHREIBUNG | Die Beschreibung wird vom CodeQL-Tool basierend auf dem Problem bereitgestellt. |
| Empfehlung | Die Empfehlung ist die empfohlene Korrektur für eine bestimmte Codeüberprüfungswarnung. |
| Beispiel | Der Beispielabschnitt zeigt ein vereinfachtes Beispiel für die identifizierte Schwachstelle in Ihrem Code. |
| Schweregrad | Schweregrade können niedrig, mittel, hoch oder kritisch sein. Dies Bewertung des Schweregrads basiert auf der angegebenen CVSS-Bewertung (Common Vulnerability Scoring System) für die identifizierte CWE (Common Weakness Enumeration). Weitere Informationen zur Bewertung des Schweregrads finden Sie in diesem GitHub-Blogbeitrag. |
Anzeigen von Warnungen für ein Repository
Jede Person mit der Berechtigung „Mitwirkender“ für ein Repository kann auf der Registerkarte „Erweiterte Sicherheit“ unter „Repositorys“ eine Zusammenfassung aller Warnungen für ein Repository anzeigen. Wählen Sie die Registerkarte Code scanning (Codeüberprüfung) aus, um alle Geheimnisüberprüfungswarnungen anzuzeigen.
Zuerst müssen Code-Scans ausgeführt werden, um Ergebnisse anzuzeigen. Sobald die erste Überprüfung abgeschlossen wurde, werden alle erkannten Sicherheitsrisiken auf der Registerkarte „Advanced Security“ angezeigt.
Standardmäßig werden auf der Warnungsseite Codeüberprüfungsergebnisse für den Standardzweig des Repositorys angezeigt.
Die Status einer bestimmten Warnung gibt den Status für den Standardbranch und die zuletzt ausgeführte Pipeline an, auch wenn die Warnung für andere Branches und Pipelines vorhanden ist.
Schließen von Codeüberprüfungswarnungen
Zum Schließen von Warnungen benötigen Sie entsprechende Berechtigungen. Standardmäßig können nur Projektadministratoren Advanced Security-Warnungen schließen.
So schließen Sie eine Warnung:
- Navigieren Sie zu der Warnung, die Sie schließen möchten, und wählen Sie sie aus.
- Wählen Sie die Dropdownliste Close alert (Warnung schließen) aus.
- Falls noch nicht ausgewählt, wählen Sie als Schließungsgrund entweder Risk accepted (Risiko akzeptiert) oder False positive (Falsch positiv) aus.
- Fügen Sie dem Textfeld Comment (Kommentar) einen optionalen Kommentar hinzu.
- Wählen Sie Close (Schließen) aus, um die Warnung zu übermitteln und zu schließen.
- Der Warnungsstatus ändert sich von Open (Offen) zu Closed (Geschlossen), und Ihr Ablehnungsgrund wird angezeigt.
Mit dieser Aktion wird die Warnung in allen Zweigstellen zurückgesetzt. Andere Zweige, die dieselbe Sicherheitslücke enthalten, werden ebenfalls geschlossen. Alle Warnungen, die zuvor geschlossen wurden, können manuell erneut geöffnet werden.
Verwalten von Codeüberprüfungswarnungen bei Pull Requests
Wenn Warnhinweise für neue Code-Änderungen in einer Pull-Request erstellt werden, wird die Warnung als Anmerkung im Kommentarbereich der Registerkarte Übersicht der Pull-Request und als Warnung in der Registerkarte Erweiterte Sicherheit des Repositorys geliefert. Es gibt einen neuen Branch Picker Eintrag für den Branch der Pull-Request Anfrage.
Sie können die betroffenen Codezeilen überprüfen, eine Zusammenfassung des Ergebnisses anzeigen und die Anmerkung im Abschnitt "Übersicht" auflösen.
Um Pull Request-Warnungen zu schließen, müssen Sie zur Warnungsdetailansicht navigieren, um die Warnung zu schließen und die Anmerkung aufzulösen. Andernfalls löst einfach das Ändern des Kommentarstatus (1) die Anmerkung auf, schließt oder korrigiert die zugrunde liegende Warnung nicht.
Um den gesamten Satz von Ergebnissen für Ihren Pull Request-Branch anzuzeigen, navigieren Sie zu Repos>Advanced Security, und wählen Sie den Pull Request-Branch aus. Wenn Sie in der Anmerkung weitere Details anzeigen (2) auswählen, gelangen Sie zur Warnungsdetailansicht auf der Registerkarte "Erweiterte Sicherheit".
Tipp
Anmerkungen werden nur erstellt, wenn die betroffenen Zeilen des Codes in der Pull-Request-Differenz zum Ziel-Branch der Pull-Request völlig eindeutig sind.