Partilhar via


Guia de início rápido: criar um fluxo de trabalho do GitHub de verificação de segurança

Neste guia de início rápido, você aprenderá como criar um fluxo de trabalho CodeQL GitHub para automatizar a descoberta de vulnerabilidades em sua base de código .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

  • Uma conta GitHub.
  • Um repositório de código-fonte .NET.

Criar um arquivo de fluxo de trabalho

No repositório 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 pretende fazer. Para obter mais informações, consulte Arquivo de fluxo de trabalho.

Importante

O GitHub requer que os arquivos de composição do fluxo de trabalho sejam colocados no diretório .github/workflows .

Os arquivos de 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, consulte Sintaxe do fluxo de trabalho para ações do GitHub.

Crie um novo arquivo chamado codeql-analysis.yml, 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 do fluxo de trabalho anterior:

  • O name: CodeQL define o nome, "CodeQL" aparecerá nos selos de status do fluxo de trabalho.

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

    on:
      push:
        branches: [main]
        paths:
        - '**.cs'
        - '**.csproj'
      pull_request:
        branches: [main]
        paths:
        - '**.cs'
        - '**.csproj'
      schedule:
        - cron: '0 8 * * 4'
    
    • Acionado quando um push ou ocorre na main ramificação onde quaisquer arquivos foram alterados terminando com as extensões de arquivo .cs ou .csprojpull_request.
    • Como um trabalho cron (em um horário) - para executar às 8:00 UTC todas as quintas-feiras.
  • O jobs nó cria as etapas a serem executadas pelo fluxo de trabalho.

    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.
    • O strategy define C# como o language.
    • A github/codeql-action/init@v1 ação do GitHub é usada para inicializar o CodeQL.
    • A github/codeql-action/autobuild@v1 Ação GitHub cria o projeto .NET.
    • A github/codeql-action/analyze@v1 ação do GitHub executa a análise CodeQL.

Para obter mais informações, consulte Ações do GitHub: configurar a verificação de código.

Criar um selo de status do fluxo de trabalho

É uma nomenclatura comum para repositórios do GitHub ter 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 um selo de status, que são visualmente atraentes dentro do arquivo README.md . Para adicionar o selo de status do fluxo de trabalho:

  1. No repositório 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 de menu Criar selo de status.

    GitHub: Create status badge

  4. Selecione o botão Copiar selo de status Markdown .

    GitHub: Copy status badge Markdown

  5. Cole o Markdown no arquivo README.md , salve o arquivo, confirme e envie as alterações.

Para saber mais, consulte Adicionando um selo de status do fluxo de trabalho.

Exemplo de selo de status do fluxo de trabalho CodeQL

Passagem Com falhas Sem estatuto
GitHub: CodeQL passing badge GitHub: CodeQL failing badge GitHub: CodeQL no-status badge

Consulte também

Próximos passos