Avvio rapido: Creare un flusso di lavoro GitHub per l'analisi di sicurezza
In questo avvio rapido si apprenderà come creare un flusso di lavoro GitHub CodeQL per automatizzare l'individuazione delle vulnerabilità nella codebase .NET.
In CodeQL il codice viene trattato come dati. Vulnerabilità, bug e altri errori di sicurezza vengono modellati come query che possono essere eseguite nei database estratti dal codice.
Prerequisiti
- Un account GitHub.
- Un repository di codice sorgente .NET.
Creare un file di flusso di lavoro
Nel repository GitHub, aggiungere un nuovo file YAML alla directory .github/workflows. Scegliere un nome di file significativo, qualcosa che indichi chiaramente lo scopo del flusso di lavoro. Per altre informazioni, vedere File di flusso di lavoro.
Importante
GitHub richiede che i file di composizione del flusso di lavoro vengano inseriti nella directory .github/workflows.
I file di flusso di lavoro definiscono in genere una composizione di una o più azioni GitHub tramite jobs.<job_id>/steps[*]
. Per maggiori informazioni, vedere Sintassi del flusso di lavoro per GitHub Actions.
Creare un nuovo file denominato codeql-analysis.yml, quindi copiare e incollare al suo interno i seguenti contenuti YML:
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
Nella precedente composizione del flusso di lavoro:
name: CodeQL
definisce il nome, "CodeQL" verrà visualizzato nelle notifiche di stato del flusso di lavoro.name: "CodeQL"
Il nodo
on
indica gli eventi che attivano il flusso di lavoro:on: push: branches: [main] paths: - '**.cs' - '**.csproj' pull_request: branches: [main] paths: - '**.cs' - '**.csproj' schedule: - cron: '0 8 * * 4'
- Attivato quando un
push
opull_request
si verifica nel ramomain
in cui tutti i file modificati terminano con le estensioni di file .cs o .csproj. - Come processo cron (secondo un programma) da eseguire alle 8:00 UTC ogni giovedì.
- Attivato quando un
Il nodo
jobs
compila i passaggi da eseguire per il flusso di lavoro.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
- Esiste un unico processo denominato
analyze
che verrà eseguito sulla versione più recente di Ubuntu. strategy
definisce C# comelanguage
.- L'azione GitHub
github/codeql-action/init@v1
viene usata per inizializzare CodeQL. - L'azione GitHub
github/codeql-action/autobuild@v1
compila il progetto .NET. - L'azione GitHub
github/codeql-action/analyze@v1
esegue l'analisi CodeQL.
- Esiste un unico processo denominato
Per altre informazioni, vedere GitHub Actions: Configurare l'analisi del codice.
Creare una notifica di stato del flusso di lavoro
È nella terminologia comune dei repository GitHub avere un file README.md nella radice della directory del repository. Analogamente, è utile poter segnalare lo stato più recente per vari flussi di lavoro. Tutti i flussi di lavoro possono generare una notifica di stato visivamente accattivante all'interno del file README.md. Per aggiungere la notifica di stato del flusso di lavoro:
Dal repository GitHub selezionare l'opzione di navigazione Azioni.
Tutti i flussi di lavoro del repository vengono visualizzati sul lato sinistro; selezionare il flusso di lavoro desiderato e il pulsante puntini di sospensione (...).
- Il pulsante puntini di sospensione (...) espande le opzioni di menu per il flusso di lavoro selezionato.
Selezionare l'opzione di menu Crea notifica di stato.
Selezionare il pulsante Copia Markdown notifica di stato.
Incollare il Markdown nel file README.md, salvare il file ed eseguire il commit e il push delle modifiche.
Per altre informazioni, vedere Aggiunta di una notifica di stato del flusso di lavoro.
Notifica di stato del flusso di lavoro CodeQL di esempio
Superamento | Fallito | Nessuno stato |
---|---|---|