Instalar el CLI de CodeQL en tu sistema de IC

Puedes instalar el CodeQL CLI y utilizarlo para llevar a cabo el escaneo de código de CodeQL en un sistema de integración contínua de terceros.

El Escaneo de código se encuentra disponible para todos los repositorios públicos y para los privados que pertenecen a organizaciones en donde se habilitó la GitHub Advanced Security. Para obtener más información, consulta la sección "Acerca de GitHub Advanced Security".

Acerca de utilizar el CodeQL CLI para el escaneo de código

Puedes utilizar el CodeQL CLI para ejecutar el escaneo de código en el código que estás procesando en un sistema de integración continua (IC) de terceros. Escaneo de código es una característica que utilizas para analizar el código en un repositorio de GitHub para encontrar vulnerabilidades de seguridad y errores de código. Cualquier problema que se identifique con el análisis se muestra en GitHub. Para obtener más información, consulta la sección "Acerca del escaneo de código con CodeQL".

El CodeQL CLI es un producto independiente que puedes utilizar para analizar código. Su propósito principal es generar una representación de base de datos de una base de código, una base de datos de CodeQL. Una vez que esté lista la base de datos, puedes consultarla interactivamente o ejecutar una suite de consultas para generar un conjunto de resultados en formato SARIF y cargarlos a GitHub.

Como alternativa, puedes utilizar las GitHub Actions en tu sistema de IC, o al escaneo de código dentro de GitHub. Para obtener más información sobre el escaneo de código utilizando acciones, consulta la sección "Configurar el escaneo de código para un repositorio". Para encontrar un resumen de las opciones para los sistemas de IC, consulta la sección "Acerca del escaneo de código de CodeQL en tu sistema de IC".

Nota: El CodeQL CLI se puede usar gratuitamente en los repositorios públicos que se mantienen en GitHub.com y está disponible para utilizarse en los repositorios privados que pertenezcan a los clientes con una licencia de la Advanced Security. Para obtener información, consulta la sección "Términos y condiciones del CodeQL de GitHub" y CLI de CodeQL".

Descargar el CodeQL CLI

Debes descargar el paquete de CodeQL desde https://github.com/github/codeql-action/releases. Este paquete contiene:

  • El producto de CodeQL CLI
  • Una versión compatible de las consultas y bibliotecas de https://github.com/github/codeql
  • Versiones precompiladas de todas las consultas que se incluyen en el paquete

Siempre debes utilizar Siempre debes utilizar el paquete de CodeQL, ya que este garantiza la compatibilidad y también te da un rendimiento mucho mejor que una descarga independiente del CodeQL CLI y una verificación de las consultas de CodeQL. Si solo ejecutarás el CLI en una plataforma específica, descarga el archivo codeql-bundle-PLATFORM.tar.gz adecuado. Como alternativa, puedes descargar el codeql-bundle.tar.gz que contiene el CLI para todas las plataformas.

Nota: La funcionalidad de administración de paquetes de CodeQL, incluyendo los paquetes de CodeQL, se encuentra actualmente en beta y está sujeta a cambios.

Configurar el CodeQL CLI en tu sistema de IC

Necesitas habilitar el contenido integral del paquete de CodeQL CLI para cada servidor de IC en el que quieras ejecutar el análiss del escaneo de código de CodeQL. Por ejemplo, puedes configurar cada servidor para copiar el paquete desde una ubicación intera y centrar y extraerlo. Como alternativa, puedes utilizar la API de REST para obtener el paquete directamente desde GitHub para garantizar que te beneificarás de las últimas mejoras a las consultas. Las actualizaciones del CodeQL CLI se lanzan cada 2 o 3 semanas. Por ejemplo:

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

Después de que extraes el paquete del CodeQL CLI, puedes ejecutar el ejecutable del codeql en el servidor:

  • Al ejecutar /<extraction-root>/codeql/codeql, en donde <extraction-root> es la carpeta en donde extrajiste el paquete de CodeQL CLI.
  • Si agregas /<extraction-root>/codeql a tu PATH para que puedas ejecutar los archivos ejecutables como codeql simplemente.

Probar la configuración del CodeQL CLI

Después de que extraes el paquete de CodeQL CLI, puedes ejecutar el siguiente comando para verificar que el CLI esté configurado correctamente para crear y analizar bases de datos.

  • codeql resolve qlpacks if /<extraction-root>/codeql is on the PATH.
  • /<extraction-root>/codeql/codeql resolve qlpacks otherwise.

Extraer desde una salida exitosa:

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)
...

Debes verificar que la salida contenga los lenguajes esperados y también que la ubicación del directorio para el archivo de qlpack sea correcta. La ubicación debe estar dentro del paquete del CodeQL CLI que se extrajo, el cual se muestra anteriormente como <extraction root>, a menos de que hayas utilizado una verificación de github/codeql. Si el CodeQL CLI no es capaz de localizar los qlpacks para los lenguajes esperados, verifica que hayas descargado el paquete de CodeQL y no una copia independiente del CodeQL CLI.

Generar un token para autenticarse con GitHub

Cada servidor de IC necesita una GitHub App o un token de acceso personal para que utilice el CodeQL CLI para cargar los resultados a GitHub. Debes utilizar un token de acceso o una GitHub App con el permiso de escritura security_events. Si los servidores de IC utilizan un token con este alcance para verificar los repositorios de GitHub, podrías permitir potencialmente que CodeQL CLI utilice el mismo token. De lo contrario, debes crear un token nuevo con el permiso de escritura security_events y agregarlo al almacenamiento secreto del sistema de IC. Para obtener más información, consulta las secciones "Crear GitHub Apps" y "Crear un token de acceso personal".

Pasos siguientes

Ahora estás listo para configurar el sistema de IC para que ejecute el análisis de CodeQL, genere resultados y los cargue en GitHub donde dichos resultados se empatarán con una rama o solicitud de cambios y se mostrarán como alertas del escaneo de código. Para obtener información detallada, consulta la sección "Configurar el CodeQL CLI en tu sistema de IC".

¿Te ayudó este documento?

Política de privacidad

¡Ayúdanos a hacer geniales estos documentos!

Todos los documentos de GitHub son de código abierto. ¿Notas algo que esté mal o que no sea claro? Emite una solicitud de cambios.

Haz una contribución

O, aprende cómo contribuir.