Início Rápido: Criar um fluxo de trabalho do GitHub de verificação de segurança

Neste início rápido, você aprenderá a criar um fluxo de trabalho do GitHub do CodeQL para automatizar a descoberta de vulnerabilidades em sua base de código do .NET.

No CodeQL, o código é tratado como dados. Vulnerabilidades de segurança, bugs e outros erros são modelados como consultas que podem ser executadas em bancos de dados extraídos do código.

Pré-requisitos

Criar um arquivo do fluxo de trabalho

No repositório do GitHub, adicione um novo arquivo YAML ao diretório .github/workflows. Escolha um nome de arquivo significativo, algo que indique claramente o que o fluxo de trabalho se destina a fazer. Para obter mais informações, confira Arquivo do fluxo de trabalho.

Importante

O GitHub exige que os arquivos que compõem o fluxo de trabalho sejam colocados no diretório .github/workflows.

Os arquivos do fluxo de trabalho normalmente definem uma composição de uma ou mais ações do GitHub por meio do jobs.<job_id>/steps[*]. Para obter mais informações, confira Sintaxe de fluxo de trabalho do GitHub Actions.

Crie um novo arquivo chamado codeql-analysis.yml e copie e cole o seguinte conteúdo YML nele:

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

Na composição anterior do fluxo de trabalho:

  • O name: CodeQL define o nome, "CodeQL" aparecerá nas notificações de status do fluxo de trabalho.

    name: "CodeQL"
    
  • O nó on indica os eventos que disparam o fluxo de trabalho:

    on:
      push:
        branches: [main]
        paths:
        - '**.cs'
        - '**.csproj'
      pull_request:
        branches: [main]
        paths:
        - '**.cs'
        - '**.csproj'
      schedule:
        - cron: '0 8 * * 4'
    
    • Disparado quando um push ou pull_request ocorrem no branch main quando todos os arquivos alterados terminam com as extensões de arquivo .cs ou .csproj.
    • Como um trabalho cron (em um agendamento)— para ser executado às 8:00 UTC todas as quintas-feiras.
  • O nó jobs compila as etapas para o fluxo de trabalho a ser realizado.

    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
    
    • Há um único trabalho, chamado analyze, que será executado na versão mais recente do Ubuntu.
    • strategy define a C# como language.
    • A ação do GitHub github/codeql-action/init@v1 é usada para inicializar o CodeQL.
    • A ação do GitHub github/codeql-action/autobuild@v1 cria o projeto .NET.
    • A ação do GitHub github/codeql-action/analyze@v1 executa a análise de CodeQL.

Para obter mais informações, confira GitHub Actions: Configurar a verificação de código.

Criar uma notificação de status de fluxo de trabalho

É comum que os repositórios do GitHub tenham um arquivo README.md na raiz do diretório do repositório. Da mesma forma, é bom relatar o status mais recente para vários fluxos de trabalho. Todos os fluxos de trabalho podem gerar uma notificação de status, que são visualmente atraentes no arquivo README.md. Para adicionar a notificação de status ao fluxo de trabalho:

  1. No repositório do GitHub, selecione a opção de navegação Ações.

  2. Todos os fluxos de trabalho do repositório são exibidos no lado esquerdo. Selecione o fluxo de trabalho desejado e o botão de reticências (...).

    • O botão de reticências (...) expande as opções de menu para o fluxo de trabalho selecionado.
  3. Selecione a opção no menu Criar notificação de status.

    GitHub: Create status badge

  4. Selecione o botão Copiar Markdown da notificação de status.

    GitHub: Copy status badge Markdown

  5. Cole o Markdown no arquivo README.md, salve o arquivo, faça commit das alterações e envie por push.

Para obter mais informações, confira Como adicionar uma notificação de status do fluxo de trabalho.

Exemplo de notificação de status de fluxo de trabalho de CodeQL

Em aprovação Com falha Sem status
GitHub: CodeQL passing badge GitHub: CodeQL failing badge GitHub: CodeQL no-status badge

Confira também

Próximas etapas