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
ofpull_request
optreedt in demain
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.
- Geactiveerd wanneer een
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 delanguage
. - 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.
- Er is één taak, die
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:
Selecteer in de GitHub-opslagplaats de optie Actiesnavigatie .
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.
Selecteer de menuoptie Statusbadge maken.
Selecteer de markdown-knop Status kopiëren.
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 |
---|---|---|