Skip to main content

Fase 5: Lanzamiento y escalado del análisis de código

Puedes aprovechar las API disponibles para lanzar code scanning mediante programación por equipo y lenguaje en toda la empresa mediante los datos del repositorio que recopilaste anteriormente.

Note

Este artículo forma parte de una serie sobre la adopción de GitHub Advanced Security a escala. Para obtener el artículo anterior de esta serie, consulta Fase 4: Creación de documentación interna.

Habilitación del análisis de código

Con los datos que intercalaste en la fase 2, puedes empezar a habilitar la GHAS y, a continuación, code scanning en los repositorios, lenguaje por lenguaje. El proceso paso a paso para habilitar la GHAS debe tener este aspecto:

  1. Habilita la GHAS en el repositorio. Para más información, consulta Administración de la configuración de seguridad y análisis para el repositorio.
  2. Crea una solicitud de incorporación de cambios en la rama predeterminada del repositorio con un archivo codeql-analysis.yml que contenga un ejemplo de cómo ejecutar CodeQL para ese lenguaje. Para más información, consulta Crear una solicitud de incorporación de cambios.
  3. Crea una incidencia en el repositorio para explicar por qué se ha generado una solicitud de incorporación de cambios. La incidencia que crees puede contener un vínculo a la comunicación anterior enviada a todos los usuarios, pero también puede explicar los cambios que introduce la solicitud de incorporación de cambios, qué pasos siguientes debe realizar el equipo, cuáles son las responsabilidades del equipo y cómo el equipo debe usar code scanning. Para más información, consulta Crear una propuesta.

Hay una herramienta disponible públicamente que completa los dos primeros pasos denominada herramienta de habilitación de la GHAS. Puedes volver a ejecutar la herramienta de habilitación de la GHAS en lotes de lenguajes donde tenga sentido. Por ejemplo, es probable que JavaScript, TypeScript, Python y Go tengan un proceso de compilación similar y, por tanto, podrían usar un archivo de análisis de CodeQL parecido. La herramienta de habilitación de la GHAS también se puede usar para lenguajes como Java, C y C++, pero, debido a la naturaleza variada de la forma en que estos lenguajes se generan y compilan, es posible que tengas que crear archivos de análisis de CodeQL más dirigidos.

Note

Si vas a usar GitHub Actions para controlar code scanning y no usas la herramienta ghas-enablement, ten en cuenta que no hay acceso mediante API al directorio .github/workflow. Esto significa que no puedes crear un script sin un cliente de Git subyacente a la automatización. La solución consiste en aprovechar el scripting de Bash en un equipo o contenedor que tenga un cliente de Git. El cliente de Git puede insertar y extraer archivos en el directorio .github/workflows donde se encuentra el archivo codeql-analysis.yml.

Es importante no solo insertar el archivo codeql-analysis.yml en la rama predeterminada del repositorio. El uso de una solicitud de incorporación de cambios coloca la propiedad en el equipo de desarrollo para revisar y combinar, lo que permite al equipo de desarrollo obtener información sobre code scanning e involucrarse en el proceso.

Debes capturar las direcciones URL de solicitud de incorporación de cambios creadas por la automatización y comprobar cada semana si hay alguna actividad y ver cuáles están cerradas. Al cabo de unas semanas, puede que valga la pena crear otra incidencia o enviar correos electrónicos internos si la solicitud de incorporación de cambios sigue sin combinarse.

Creación de conocimientos sobre la materia

Después, puede continuar con la siguiente fase de la habilitación, que consiste en crear expertos internos en la materia (o SME) y organizar reuniones empresariales. La apertura de solicitudes de incorporación de cambios e incidencias en los repositorios probablemente abordará un gran porcentaje de la adopción, pero no aborda los casos de uso únicos en los que un proceso de compilación, un marco o una biblioteca específicos necesitan la habilitación de marcas de características concretas. Se requiere un enfoque más personalizado y práctico para insertar una adopción alta, especialmente para Java, C y C++.

Es una buena idea celebrar reuniones periódicas en la empresa sobre temas específicos para formar y comentar el lanzamiento con un grupo más grande. Esto es mucho más eficaz para una empresa con miles de repositorios en comparación con trabajar equipo por equipo. Los equipos pueden venir a las sesiones que consideren relevantes para ellos. Algunas sesiones de ejemplo que se han llevado a cabo antes incluyen las siguientes:

  • Code scanning en un contenedor
  • Code scanning & Java Struts
  • Code scanning & JSP

Puedes usar los datos recopilados sobre la distribución de distintos lenguajes entre repositorios para crear reuniones dirigidas.

Note

Para ver el siguiente artículo de esta serie, consulta Fase 6: Lanzamiento y escalado del análisis de secretos.