Szybki start: tworzenie przepływu pracy skanowania zabezpieczeń w usłudze GitHub
W tym przewodniku Szybki start dowiesz się, jak utworzyć przepływ pracy usługi GitHub CodeQL w celu zautomatyzowania odnajdywania luk w zabezpieczeniach w bazie kodu platformy .NET.
W języku CodeQL kod jest traktowany jako dane. Luki w zabezpieczeniach, błędy i inne błędy są modelowane jako zapytania, które można wykonywać względem baz danych wyodrębnionych z kodu.
Wymagania wstępne
- Konto usługi GitHub.
- Repozytorium kodu źródłowego platformy .NET.
Tworzenie pliku przepływu pracy
W repozytorium GitHub dodaj nowy plik YAML do katalogu .github/workflows . Wybierz zrozumiałą nazwę pliku, co wyraźnie wskaże, co ma zrobić przepływ pracy. Aby uzyskać więcej informacji, zobacz Plik przepływu pracy.
Ważne
Usługa GitHub wymaga, aby pliki kompozycji przepływu pracy zostały umieszczone w katalogu .github/workflows .
Pliki przepływu pracy zwykle definiują kompozycję co najmniej jednej akcji usługi GitHub za pośrednictwem elementu jobs.<job_id>/steps[*]
. Aby uzyskać więcej informacji, zobacz Składnia przepływu pracy dla funkcji GitHub Actions.
Utwórz nowy plik o nazwie codeql-analysis.yml, skopiuj i wklej do niego następującą zawartość 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
W poprzedniej kompozycji przepływu pracy:
Definiuje
name: CodeQL
nazwę "CodeQL" będzie wyświetlana w znaczkach stanu przepływu pracy.name: "CodeQL"
Węzeł
on
oznacza zdarzenia, które wyzwalają przepływ pracy:on: push: branches: [main] paths: - '**.cs' - '**.csproj' pull_request: branches: [main] paths: - '**.cs' - '**.csproj' schedule: - cron: '0 8 * * 4'
- Wyzwalany, gdy element
push
lub występuje wmain
gałęzi, w której wszystkie pliki uległy zmianie kończące się rozszerzeniami plików .cs lub csprojpull_request
. - Jako zadanie cron (zgodnie z harmonogramem) — do uruchomienia o 8:00 UTC co czwartek.
- Wyzwalany, gdy element
Węzeł
jobs
tworzy kroki, które należy wykonać przez przepływ pracy.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
- Istnieje jedno zadanie o nazwie
analyze
, które zostanie uruchomione w najnowszej wersji systemu Ubuntu. - Element
strategy
definiuje język C# jako .language
- Akcja
github/codeql-action/init@v1
usługi GitHub służy do inicjowania koduQL. - Akcja
github/codeql-action/autobuild@v1
usługi GitHub kompiluje projekt .NET. - Akcja
github/codeql-action/analyze@v1
usługi GitHub wykonuje analizę CodeQL.
- Istnieje jedno zadanie o nazwie
Aby uzyskać więcej informacji, zobacz GitHub Actions: Konfigurowanie skanowania kodu.
Znaczek Tworzenie stanu przepływu pracy
Popularną nomenklaturą repozytoriów GitHub jest posiadanie pliku README.md w katalogu głównym katalogu repozytorium. Podobnie warto zgłosić najnowszy stan dla różnych przepływów pracy. Wszystkie przepływy pracy mogą wygenerować wskaźnik stanu, który jest wizualnie atrakcyjny w pliku README.md . Aby dodać wskaźnik stanu przepływu pracy:
W repozytorium GitHub wybierz opcję nawigacji Akcje .
Wszystkie przepływy pracy repozytorium są wyświetlane po lewej stronie, wybierz żądany przepływ pracy i przycisk wielokropka (...).
- Przycisk wielokropka (...) rozwija opcje menu dla wybranego przepływu pracy.
Wybierz opcję menu Znaczek Utwórz stan.
Wybierz przycisk Znaczek Stan kopiowania markdown .
Wklej znacznik Markdown do pliku README.md , zapisz plik, zatwierdź i wypchnij zmiany.
Aby uzyskać więcej informacji, zobacz Dodawanie wskaźnika stanu przepływu pracy.
Przykładowy wskaźnik stanu przepływu pracy CodeQL
Zaliczone | Niepowodzenie | Brak stanu |
---|---|---|