Instalando CodeQL CLI no seu sistema de CI

Você pode instalar o CodeQL CLI e usá-lo para executar CodeQL Varredura de código em um sistema de integração contínua de terceiros.

Varredura de código está disponível para repositórios de organizações onde Segurança Avançada GitHub está habilitado. Para obter mais informações, consulte "Sobre Segurança Avançada GitHub".

Observação: O administrador do site deve habilitar Varredura de código para sua instância do GitHub Enterprise Server antes de usar este recurso. Para obter mais informações, consulte "Configurar o Varredura de código para seu aplicativo ".

Sobre o uso do CodeQL CLI for Varredura de código

Você pode usar CodeQL CLI para executar o Varredura de código no código que você está processando em um sistema de integração contínua (CI) de terceiros. Varredura de código é um recurso que você usa para analisar o código em um repositório de GitHub para localizar vulnerabilidades de segurança e erros de codificação. Quaisquer problemas identificados pela análise são exibidos em GitHub Enterprise Server. Para obter informações, consulte "Sobre Varredura de código com CodeQL."

O CodeQL CLI é um produto inependente que você pode usar para analisar o código. Seu principal propósito é gerar uma representação do banco de dados de uma base de código, um banco de dados de CodeQL. Assim que o banco de dados estiver pronto, você poderá consultá-lo interativamente, ou executar um conjunto de consultas para gerar um conjunto de resultados no formato SARIF e fazer o upload dos resultados para sua instância do GitHub Enterprise Server.

Como alternativa, você pode usar GitHub Actions para executar Varredura de código em GitHub Enterprise Server. Para obter informações sobre Varredura de código usando ações, consulte "Configurar Varredura de código para um repositório". Para obter uma visão geral das opções para os sistemas de CI, consulte "Sobre o CodeQL Varredura de código no seu sistema de CI".

Observação: O CodeQL CLI está disponível para clientes com uma licença de Segurança Avançada.

Fazer o download do CodeQL CLI

Você deve fazer o download do pacote CodeQL em https://github.com/github/codeql-action/releases. O pacote contém:

  • produto de CodeQL CLI
  • Uma versão compatível das consultas e bibliotecas de https://github.com/github/codeql
  • Versões pré-compiladas de todas as consultas incluídas no pacote

Você sempre deve usar o pacote de CodeQL, uma vez que ele garante compatibilidade e também fornece um desempenho muito melhor do que um download separado de CodeQL CLI e checkout das consultas de CodeQL. Se você estiver executando o CLI apenas em uma plataforma específica, faça o download do arquivo codeql-bundle-PLATFORM.tar.gz apropriado. Como alternativa, você pode fazer o download de codeql-bundle.tar.gz, que contém a CLI para todas as plataformas compatíveis.

Configurando o CodeQL CLI no seu sistema de CI

Você precisa disponibilizar todo o conteúdo do pacote CodeQL CLI para cada servidor de CI no qual você deseja executar a análise de CodeQL de Varredura de código. Por exemplo, você pode configurar cada servidor para que copie o pacote de um local interno central, interno e extraí-lo. Como alternativa, você pode usar a API REST para obter o pacote diretamente do GitHub, garantindo que você irá beneficiar-se das últimas melhorias das consultas. Atualizações no CodeQL CLI são lançadas a cada 2 a 3 semanas. Por exemplo:

$ wget https://HOSTNAME/github/codeql-action/releases/latest/download/codeql-bundle-linux64.tar.gz
$ tar -xvzf ../codeql-bundle-linux64.tar.gz

Depois de extrair o pacote do CodeQL CLI, você poderá executar o executável codeql no servidor:

  • Ao executar /<extraction-root>/codeql/codeql, onde <extraction-root> é a pasta onde você extraiu o pacote CodeQL CLI.
  • Adicionando /<extraction-root>/codeql ao seu PATH, para que você possa executar o executável como apenas codeql.

Testando a configuração de CodeQL CLI

Depois de extrair o pacote de CodeQL CLI, você pode executar o comando a seguir para verificar se a CLI está configurada corretamente para criar e analisar bases de dados.

  • codeql resolve qlpacks se /<extraction-root>/codeql estiver em PATH.
  • Caso contrário, /<extraction-root>/codeql/codeql resolve qlpacks.

Extrair da saída bem-sucedida:

codeql-cpp (/<extraction-root>/codeql/qlpacks/codeql-cpp)
codeql-cpp-examples (/<extraction-root>/codeql/qlpacks/codeql-cpp-examples)
codeql-cpp-upgrades (/<extraction-root>/codeql/qlpacks/codeql-cpp-upgrades)
codeql-csharp (/<extraction-root>/codeql/qlpacks/codeql-csharp)
codeql-csharp-examples (/<extraction-root>/codeql/qlpacks/codeql-csharp-examples)
codeql-csharp-upgrades (/<extraction-root>/codeql/qlpacks/codeql-csharp-upgrades)
codeql-go (/<extraction-root>/codeql/qlpacks/codeql-go)
codeql-go-examples (/<extraction-root>/codeql/qlpacks/codeql-go-examples)
codeql-go-upgrades (/<extraction-root>/codeql/qlpacks/codeql-go-upgrades)
codeql-java (/<extraction-root>/codeql/qlpacks/codeql-java)
codeql-java-examples (/<extraction-root>/codeql/qlpacks/codeql-java-examples)
codeql-java-upgrades (/<extraction-root>/codeql/qlpacks/codeql-java-upgrades)
codeql-javascript (/<extraction-root>/codeql/qlpacks/codeql-javascript)
codeql-javascript-examples (/<extraction-root>/codeql/qlpacks/codeql-javascript-examples)
codeql-javascript-upgrades (/<extraction-root>/codeql/qlpacks/codeql-javascript-upgrades)
codeql-python (/<extraction-root>/codeql/qlpacks/codeql-python)
codeql-python-examples (/<extraction-root>/codeql/qlpacks/codeql-python-examples)
codeql-python-upgrades (/<extraction-root>/codeql/qlpacks/codeql-python-upgrades)
...

Você deve verificar se a saída contém as linguagens esperadas e também se o local do diretório de arquivos qlpack está correto. O local deve estar dentro do pacote de CodeQL CLI extraído, mostrado acima como <extraction root>, a menos que você esteja usando uma verificação github/codeql. Se o CodeQL CLI não conseguir localizar os qlpacks para as linguagens esperadas, certifique-se de que você faz o download do pacote CodeQL e não uma cópia independente do CodeQL CLI.

Gerando um token para autenticação com GitHub Enterprise Server

Cada servidor de CI precisa de um aplicativo GitHub ou token de acesso pessoal para CodeQL CLI para usar para fazer o upload dos resultados para GitHub Enterprise Server. Você deve usar um token de acesso ou um aplicativo GitHub com a permissão de gravação de security_events. Se os servidores de CI já usam um token com este escopo para repositórios de checkout de GitHub Enterprise Server, potencialmente você poderia permitir que CodeQL CLI usasse o mesmo token. Caso contrário, você deve criar um novo token com a permissão de gravação de security_events e adicionar isso à loja secreta do sistema de CI. Para obter informações, consulte "Criar Aplicativos do GitHub" e "Criar um token de acesso pessoal".

Próximas etapas

Agora você está pronto para configurar o sistema de CI para executar a análise de CodeQL, gerar resultados e enviá-los para GitHub Enterprise Server onde os resultados serão correspondidos com um branch ou pull request e exibidos como alertas de Varredura de código. Para obter informações detalhadas, consulte "Configurar CodeQL CLI no seu sistema de CI".

Esse documento ajudou você?

Política de Privacidade

Ajude-nos a tornar esses documentos ótimos!

Todos os documentos do GitHub são de código aberto. Você percebeu que algo que está errado ou não está claro? Envie um pull request.

Faça uma contribuição

Ou, aprenda como contribuir.