Краткое руководство. Создание рабочего процесса проверки безопасности GitHub

В этом кратком руководстве вы узнаете, как создать рабочий процесс CodeQL GitHub для автоматизации обнаружения уязвимостей в базе кода .NET.

В CodeQL код обрабатывается как данные. Уязвимости системы безопасности и разного рода ошибки моделируются в виде запросов, которые можно выполнять для баз данных, извлеченных из кода.

Необходимые компоненты

  • Учетная запись GitHub.
  • Репозиторий исходного кода .NET.

Создание файла рабочего процесса

В репозитории GitHub добавьте новый ФАЙЛ YAML в каталог github/workflows . Выберите понятное имя файла, которое четко указывает, что рабочий процесс предназначен для выполнения. Дополнительные сведения см . в файле рабочего процесса.

Внимание

GitHub требует, чтобы файлы композиции рабочих процессов размещались в каталоге github/workflows .

Файлы рабочих процессов обычно определяют композицию одного или нескольких GitHub Action с помощью .jobs.<job_id>/steps[*] Дополнительные сведения см. в синтаксисе рабочего процесса для GitHub Actions.

Создайте файл с именем codeql-analysis.yml, скопируйте и вставьте в него следующее содержимое 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

В приведенной выше композиции рабочего процесса:

  • Определяет name: CodeQL имя CodeQL в индикаторах состояния рабочего процесса.

    name: "CodeQL"
    
  • Узел on обозначает события, которые активируют рабочий процесс:

    on:
      push:
        branches: [main]
        paths:
        - '**.cs'
        - '**.csproj'
      pull_request:
        branches: [main]
        paths:
        - '**.cs'
        - '**.csproj'
      schedule:
        - cron: '0 8 * * 4'
    
    • Активируется при push возникновении или pull_request возникновении main в ветви, в которой все файлы изменились, заканчивая расширениями .cs или CSPROJ-файла .
    • Как задание cron (по расписанию) — выполняться в 8:00 UTC каждый четверг.
  • Узел jobs создает шаги для выполнения рабочего процесса.

    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
    
    • Существует одно задание с именем analyze , которое будет выполняться в последней версии Ubuntu.
    • Определяет strategy C# в качестве language.
    • Действие github/codeql-action/init@v1 GitHub используется для инициализации CodeQL.
    • Действие github/codeql-action/autobuild@v1 GitHub создает проект .NET.
    • Действие github/codeql-action/analyze@v1 GitHub выполняет анализ CodeQL.

Дополнительные сведения см. в разделе GitHub Actions: настройка сканирования кода.

Создание индикатора состояния рабочего процесса

В репозиториях GitHub обычно используется файл README.md в корне каталога репозитория. Аналогичным образом, приятно сообщить о последнем состоянии для различных рабочих процессов. Все рабочие процессы могут создать значок состояния, который визуально привлекательно в файле README.md . Чтобы добавить значок состояния рабочего процесса, выполните следующие действия.

  1. В репозитории GitHub выберите параметр навигации Actions .

  2. Все рабочие процессы репозитория отображаются слева, выберите нужный рабочий процесс и кнопку с многоточием (...).

    • Кнопка с многоточием (...) расширяет параметры меню для выбранного рабочего процесса.
  3. Выберите пункт меню "Создать индикатор состояния".

    GitHub: Create status badge

  4. Нажмите кнопку "Копировать состояние" Markdown .

    GitHub: Copy status badge Markdown

  5. Вставьте Markdown в файл README.md , сохраните файл, зафиксируйте и отправьте изменения.

Дополнительные сведения см. в разделе "Добавление индикатора состояния рабочего процесса".

Пример индикатора состояния рабочего процесса CodeQL

Прохождения Неудача Нет состояния
GitHub: CodeQL passing badge GitHub: CodeQL failing badge GitHub: CodeQL no-status badge

См. также

Следующие шаги