O que é a varredura de código?
A varredura de código usa CodeQL para analisar o código em um repositório GitHub para encontrar vulnerabilidades de segurança e erros de codificação. A varredura de código está disponível para todos os repositórios públicos e para repositórios privados pertencentes a organizações em que a Segurança Avançada do GitHub está habilitada. Se a varredura de código encontrar uma possível vulnerabilidade ou erro em seu código, o GitHub exibirá um alerta no repositório guia Segurança. Depois de corrigir o código que disparou o alerta, GitHub fecha o alerta.
Você pode usar a varredura de código para encontrar, fazer triagem e priorizar correções para problemas existentes em seu código. A varredura de código também impede que os desenvolvedores introduzam novos problemas. Você pode agendar varreduras para determinados dias e horas ou disparar varreduras quando ocorre um evento específico no repositório, como um push.
Nesta unidade, você aprenderá sobre o CodeQL, as três opções para configurar a verificação de código, e como adicionar o fluxo de trabalho do CodeQL ao seu repositório.
Sobre a varredura de código com CodeQL
CodeQL é o mecanismo de análise de código que o GitHub desenvolveu para automatizar as verificações de segurança. Você pode analisar seu código usando CodeQL e exibir os resultados como alertas de varredura de código. Há três maneiras principais de configurar a análise do CodeQL para verificação de código:
- Use a configuração padrão para configurar rapidamente a análise do CodeQL para verificação de código em seu repositório. A configuração padrão manipula a escolha dos idiomas a serem analisados, o pacote de consultas a ser executado e os eventos que disparam verificações com a opção de configurar manualmente os idiomas e os pacotes de consultas. Esta opção de instalação executa a verificação de código como uma ação do GitHub.
- Use a configuração avançada para adicionar o fluxo de trabalho do CodeQL diretamente ao seu repositório. Adicionar o fluxo de trabalho CodeQL diretamente em seu repositório gera um arquivo de fluxo de trabalho personalizável, que usa github/codeql-action para executar a CLI do CodeQL como uma ação do GitHub.
- Execute a CLI do CodeQL diretamente em um sistema de CI externo e carregue os resultados no GitHub.
O CodeQL trata o código como dados, permitindo que você encontre possíveis vulnerabilidades em seu código com maior confiança do que os analisadores estáticos tradicionais. Você gera um banco de dados CodeQL para representar sua base de código e, em seguida, executa consultas CodeQL nesse banco de dados para identificar problemas na base de código. Os resultados da consulta são mostrados como alertas de varredura de código GitHub quando você usa o CodeQL com varredura de código.
O CodeQL oferece suporte a linguagens compiladas e interpretadas e pode encontrar vulnerabilidades e erros no código escrito nas seguintes linguagens compatíveis:
- C ou C++
- C#
- Go
- Java/Kotlin
- JavaScript/TypeScript
- Python
- Ruby
- Swift
A próxima seção explica como adicionar o fluxo de trabalho do CodeQL ao repositório. Você aprenderá a configurar o CodeQL utilizando ferramentas externas na unidade Habilitar verificação de código com ferramentas de terceiros.
Habilitar o CodeQL em seu repositório com a configuração padrão
Se você tiver permissões de gravação em um repositório, poderá instalar ou configurar a varredura de código para esse repositório.
Siga estas etapas para configurar a varredura de código usando o fluxo de trabalho GitHub Actions do CodeQL:
Em GitHub.com, navegue até a página principal do repositório.
Sob o nome do repositório, selecione Segurança.
Selecione Configurar a digitalização de códigos. Se esta opção não estiver disponível, peça a um proprietário da organização ou administrador do repositório para habilitar o GitHub Advanced Security.
No menu suspenso Configurar, selecione Padrão.
Examine as opções padrão. Se necessário, selecione o botão Editar no canto inferior esquerdo da nova janela para personalizar a execução do CodeQL.
Os gatilhos
on:pull_requesteon:pushsão o padrão para a verificação de código e cada um deles é útil para fins diferentes. Você saberá mais sobre esses gatilhos na unidade Configurar verificação de Código.Selecione Ativar CodeQL quando estiver pronto para habilitar a verificação de código.
No fluxo de trabalho de análise padrão do CodeQL, a verificação de código é configurada para analisar seu código sempre que você envia uma alteração por push para quaisquer branches protegidos ou gera uma solicitação de pull no branch padrão. Depois que o push é efetuado, a verificação de código é executada automaticamente.
Na seção anterior, habilitamos a verificação de código utilizando a configuração padrão, que executa verificações de código como uma Ação do GitHub sem a necessidade de manter um arquivo de fluxo de trabalho. A outra opção é a configuração Avançada, que gera o arquivo de fluxo de trabalho padrão que você pode editar para configuração avançada e mais etapas. Abordaremos o uso da configuração avançada para configurar a verificação de código em uma unidade posterior.
A execução da verificação de código com o GitHub Actions afeta os minutos cobrados de você mensalmente. Se você quiser usar o GitHub Actions além do armazenamento ou dos minutos incluídos em sua conta, o uso adicional será cobrado.
Sobre a cobrança do Actions
A verificação de código usa o GitHub Actions, e cada execução de um fluxo de trabalho de verificação de código consome minutos do GitHub Actions. O uso do GitHub Actions é gratuito para repositórios públicos e executores auto-hospedados. No caso dos repositórios privados, cada conta do GitHub recebe determinado número de minutos livres, dependendo do produto usado com a conta. Os limites de gastos controlam qualquer uso além dos valores incluídos. Se você for um cliente com cobrança mensal, sua conta terá um limite de gastos padrão de zero dólares americanos (USD), o que impede o uso extra de minutos ou armazenamento para repositórios privados além dos valores incluídos em sua conta. Se você pagar sua conta por fatura, sua conta terá um limite de gastos padrão ilimitado. Os minutos são redefinidos a cada mês, enquanto o uso do armazenamento não.