Share via


Schnellstart: Erstellen eines GitHub-Workflows für eine Sicherheitsüberprüfung

In diesem Schnellstart erfahren Sie, wie Sie einen CodeQL-GitHub-Workflow erstellen, um die Ermittlung von Sicherheitsrisiken in Ihrer .NET-Codebasis zu automatisieren.

In CodeQL wird Code wie Daten behandelt. Sicherheitsrisiken, Fehler und andere Probleme werden als Abfragen modelliert, die für aus Code extrahierte Datenbanken ausgeführt werden können.

Voraussetzungen

Erstellen einer Workflowdatei

Fügen Sie im GitHub-Repository dem Verzeichnis .github/workflows eine neue YAML-Datei hinzu. Wählen Sie einen aussagekräftigen Dateinamen aus, der deutlich angibt, welche Aufgabe der Workflow ausführen soll. Weitere Informationen finden Sie unter Workflowdatei.

Wichtig

GitHub erfordert, dass Workflowkompositionsdateien im Verzeichnis .github/workflows platziert werden.

Workflowdateien definieren in der Regel eine Komposition aus einem oder mehreren GitHub Actions-Vorgängen über jobs.<job_id>/steps[*]. Weitere Informationen finden Sie unter Workflowsyntax für GitHub Actions.

Erstellen Sie eine neue Datei namens codeql-analysis.yml, kopieren Sie die folgenden YML-Inhalte, und fügen Sie sie ein:

name: "CodeQL"

on:
  push:
    branches: [main]
    paths:
    - '**.cs'
    - '**.csproj'
  pull_request:
    branches: [main]
    paths:
    - '**.cs'
    - '**.csproj'
  schedule:
    - cron: '0 8 * * 4'

jobs:
  analyze:

    name: analyze
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        language: ['csharp']

    steps:
    - name: Checkout repository
      uses: actions/checkout@v3
      with:
        fetch-depth: 2

    - run: git checkout HEAD^2
      if: ${{ github.event_name == 'pull_request' }}

    - name: Initialize CodeQL
      uses: github/codeql-action/init@v1
      with:
        languages: ${{ matrix.language }}

    - name: Autobuild
      uses: github/codeql-action/autobuild@v1

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v1

Für die vorherige Workflowkomposition gilt:

  • name: CodeQL definiert den Namen. „CodeQL“ wird in Workflowstatusbadges angezeigt.

    name: "CodeQL"
    
  • Der on-Knoten gibt die Ereignisse an, die den Workflow auslösen:

    on:
      push:
        branches: [main]
        paths:
        - '**.cs'
        - '**.csproj'
      pull_request:
        branches: [main]
        paths:
        - '**.cs'
        - '**.csproj'
      schedule:
        - cron: '0 8 * * 4'
    
    • Wird ausgelöst, wenn ein push- oder pull_request-Vorgang im main-Branch auftritt, bei dem Dateien geändert wurden, auf die Dateierweiterungen .cs oder .csproj enden.
    • Als Cronjob (nach einem Zeitplan), der jeden Donnerstag um 8:00 Uhr UTC ausgeführt werden soll.
  • Der jobs-Knoten erstellt die Schritte, die für den Workflow ausgeführt werden sollen.

    jobs:
      analyze:
    
        name: analyze
        runs-on: ubuntu-latest
    
        strategy:
          fail-fast: false
          matrix:
            language: ['csharp']
    
        steps:
        - name: Checkout repository
          uses: actions/checkout@v3
          with:
            fetch-depth: 2
    
        - run: git checkout HEAD^2
          if: ${{ github.event_name == 'pull_request' }}
    
        - name: Initialize CodeQL
          uses: github/codeql-action/init@v1
          with:
            languages: ${{ matrix.language }}
    
        - name: Autobuild
          uses: github/codeql-action/autobuild@v1
    
        - name: Perform CodeQL Analysis
          uses: github/codeql-action/analyze@v1
    
    • Es gibt einen einzelnen Auftrag namens analyze, der unter der neuesten Version von Ubuntu ausgeführt wird.
    • strategy definiert C# als language.
    • Die GitHub-Aktion github/codeql-action/init@v1 wird verwendet, um CodeQL zu initialisieren.
    • Die GitHub-Aktion github/codeql-action/autobuild@v1 erstellt das .NET-Projekt.
    • Die GitHub-Aktion github/codeql-action/analyze@v1 führt die CodeQL-Analyse aus.

Weitere Informationen finden Sie unter GitHub Actions: Konfigurieren der Codeüberprüfung.

Erstellen eines Badges für den Workflowstatus

Es ist üblich, dass GitHub-Repositorys im Stammverzeichnis des Repositoryverzeichnisses über eine Datei README.md verfügen. Ebenso ist es sinnvoll, den aktuellen Status für verschiedene Workflows zu melden. Alle Workflows können einen Statusbadge generieren, der innerhalb der Datei README.md visuell ansprechend ist. So fügen Sie den Badge für den Workflowstatus hinzu:

  1. Wählen Sie im GitHub-Repository die Navigationsoption Aktionen aus.

  2. Alle Repositoryworkflows werden auf der linken Seite angezeigt. Wählen Sie den gewünschten Workflow und die Schaltfläche mit den Auslassungspunkten (...) aus.

    • Die Schaltfläche mit den Auslassungspunkten (...) erweitert die Menüoptionen für den ausgewählten Workflow.
  3. Wählen Sie die Menüoption Statusbadge erstellen aus.

    GitHub: Create status badge

  4. Wählen Sie die Schaltfläche Statusbadgemarkdown kopieren aus.

    GitHub: Copy status badge Markdown

  5. Fügen Sie das Markdown in die Datei README.md ein, speichern Sie die Datei, und committen und pushen Sie die Änderungen.

Weitere Informationen finden Sie unter Hinzufügen eines Workflowstatusbadges.

CodeQL-Beispielworkflow-Statusbadge

Erfolgreich ist fehlerhaft Kein Status
GitHub: CodeQL passing badge GitHub: CodeQL failing badge GitHub: CodeQL no-status badge

Siehe auch

Nächste Schritte