Delen via


Quickstart: Een GitHub-werkstroom voor een beveiligingsscan maken

In deze quickstart leert u hoe u een CodeQL GitHub-werkstroom maakt om de detectie van beveiligingsproblemen in uw .NET-codebasis te automatiseren.

In CodeQL wordt code behandeld als gegevens. Beveiligingsproblemen, bugs en andere fouten worden gemodelleerd als query's die kunnen worden uitgevoerd op databases die zijn geëxtraheerd uit code.

Vereisten

  • Een GitHub-account.
  • Een .NET-broncodeopslagplaats.

Een werkstroombestand maken

Voeg in de GitHub-opslagplaats een nieuw YAML-bestand toe aan de map .github/workflows . Kies een betekenisvolle bestandsnaam, iets dat duidelijk aangeeft wat de werkstroom moet doen. Zie Werkstroombestand voor meer informatie.

Belangrijk

GitHub vereist dat werkstroomsamenstellingsbestanden in de map .github/workflows worden geplaatst.

Werkstroombestanden definiëren doorgaans een samenstelling van een of meer GitHub Action via de jobs.<job_id>/steps[*]. Zie de werkstroomsyntaxis voor GitHub Actions voor meer informatie.

Maak een nieuw bestand met de naam codeql-analysis.yml, kopieer en plak de volgende YML-inhoud erin:

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

In de voorgaande werkstroomsamenstelling:

  • De name: CodeQL naam wordt gedefinieerd, 'CodeQL' wordt weergegeven in werkstroomstatusbadges.

    name: "CodeQL"
    
  • Het on knooppunt geeft de gebeurtenissen aan die de werkstroom activeren:

    on:
      push:
        branches: [main]
        paths:
        - '**.cs'
        - '**.csproj'
      pull_request:
        branches: [main]
        paths:
        - '**.cs'
        - '**.csproj'
      schedule:
        - cron: '0 8 * * 4'
    
    • Geactiveerd wanneer een push of pull_request optreedt in de main vertakking waar bestanden zijn gewijzigd die eindigen op de bestandsextensies .cs of .csproj .
    • Als cron-taak (volgens een schema)- om elke donderdag om 8:00 UTC te worden uitgevoerd.
  • Het jobs knooppunt bouwt de stappen uit die de werkstroom moet uitvoeren.

    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
    
    • Er is één taak, die analyze wordt uitgevoerd op de nieuwste versie van Ubuntu.
    • De strategy definieert C# als de language.
    • De github/codeql-action/init@v1 GitHub Action wordt gebruikt om CodeQL te initialiseren.
    • De github/codeql-action/autobuild@v1 GitHub Action bouwt het .NET-project.
    • De github/codeql-action/analyze@v1 GitHub Action voert de CodeQL-analyse uit.

Zie GitHub Actions: Codescan configureren voor meer informatie.

Badge Een werkstroomstatus maken

Het is gebruikelijk dat GitHub-opslagplaatsen een README.md bestand hebben in de hoofdmap van de opslagplaatsmap. Op dezelfde manier is het handig om de meest recente status voor verschillende werkstromen te rapporteren. Alle werkstromen kunnen een statusbadge genereren, die visueel aantrekkelijk zijn in het README.md-bestand . De badge Werkstroomstatus toevoegen:

  1. Selecteer in de GitHub-opslagplaats de optie Actiesnavigatie .

  2. Alle werkstromen van de opslagplaats worden aan de linkerkant weergegeven, selecteer de gewenste werkstroom en de knop met het beletselteken (...).

    • Met de knop met het beletselteken (...) worden de menuopties voor de geselecteerde werkstroom uitgevouwen.
  3. Selecteer de menuoptie Statusbadge maken.

    GitHub: Create status badge

  4. Selecteer de markdown-knop Status kopiëren.

    GitHub: Copy status badge Markdown

  5. Plak de Markdown in het README.md bestand, sla het bestand op, voer de wijzigingen door en push deze.

Zie De badge Een werkstroomstatus toevoegen voor meer informatie.

Badge Voorbeeld van codeQL-werkstroomstatus

Geslaagd Mislukt Geen status
GitHub: CodeQL passing badge GitHub: CodeQL failing badge GitHub: CodeQL no-status badge

Zie ook

Volgende stappen