Este artículo forma parte de una serie sobre la adopción de GitHub Advanced Security a escala. Para ver el artículo anterior de esta serie, consulta "Fase 1: Alineación con la estrategia y los objetivos de lanzamiento".
Preparación para la habilitación de code scanning
Code scanning 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 Enterprise Server. Para obtener más información, consulta "Acerca del análisis de código".
El lanzamiento de code scanning en cientos de repositorios puede resultar difícil, sobre todo si no se hace de una forma eficaz. Si sigues estos pasos, te asegurarás de que el lanzamiento sea eficaz y correcto. Como parte de la preparación, trabajarás con los equipos, usarás la automatización para recopilar datos sobre los repositorios y habilitarás code scanning.
Preparación de los equipos para code scanning
En primer lugar, prepara a tus equipos para que usen code scanning. Cuantos más equipos usen code scanning, más datos tendrás plara generar planes de corrección y supervisar el progreso del lanzamiento. Durante esta fase, céntrate en aprovechar las API y ejecutar eventos de habilitación internos.
El enfoque principal debe ser preparar tantos equipos como sea posible para que usen code scanning. También puedes animar a los equipos a corregir correctamente, pero se recomienda priorizar la habilitación y el uso de code scanning por encima de la corrección de incidencias durante esta fase.
Recopilación de información sobre los repositorios
Puedes recopilar información mediante programación sobre los distintos lenguajes de programación que se usan en los repositorios y usar esos datos para habilitar code scanning en todos los repositorios que usan el mismo lenguaje, mediante la GraphQL API de GitHub Enterprise Server.
Nota: Para recopilar estos datos sin ejecutar manualmente las consultas de GraphQL descritas en este artículo, puedes usar nuestra herramienta disponible públicamente. Para obtener más información, consulta el repositorio "herramienta de habilitación de GHAS".
Si quieres recopilar información de repositorios que pertenecen a varias organizaciones de la empresa, puedes usar la consulta siguiente para obtener los nombres de las organizaciones y, a continuación, introducirlos en la consulta del repositorio. Reemplaza OCTO-ENTERPRISE por el nombre de tu empresa.
query {
enterprise(slug: "OCTO-ENTERPRISE") {
organizations(first: 100) {
totalCount
nodes {
name
}
pageInfo {
endCursor
hasNextPage
}
}
}
}
Puedes identificar qué repositorios usan los lenguajes mediante la intercalación de repositorios por lenguaje en el nivel de organización. Puedes modificar la consulta de GraphQL de ejemplo siguiente, reemplazando OCTO-ORG por el nombre de la organización.
query {
organization(login: "OCTO-ORG") {
repositories(first: 100) {
totalCount
nodes {
nameWithOwner
languages(first: 100) {
totalCount
nodes {
name
}
}
}
pageInfo {
endCursor
hasNextPage
}
}
}
}
Para obtener más información sobre la ejecución de consultas de GraphQL, consulta "Creación de llamadas con GraphQL".
A continuación, convierte los datos de la consulta de GraphQL en un formato legible, como una tabla.
Idioma | Número de repositorios | Nombre de los repositorios |
---|---|---|
JavaScript (TypeScript) | 4212 | org/repo org/repo |
Python | 2012 | org/repo org/repo |
Go | 983 | org/repo org/repo |
Java | 412 | org/repo org/repo |
Swift | 111 | org/repo org/repo |
Kotlin | 82 | org/repo org/repo |
C | 12 | org/repo org/repo |
Puedes filtrar los lenguajes que actualmente no son compatibles con GitHub Advanced Security de esta tabla.
Si tienes repositorios con varios lenguajes, puedes dar formato a los resultados de GraphQL como se muestra en la tabla siguiente. Filtra los lenguajes que no se admiten, pero conserva todos los repositorios con al menos un lenguaje admitido. Puedes habilitar code scanning en estos repositorios y se analizarán todos los lenguajes admitidos.
Idiomas | Número de repositorios | Nombre de los repositorios |
---|---|---|
JavaScript/Python/Go | 16 | org/repo org/repo |
Rust/TypeScript/Python | 12 | org/repo org/repo |
Comprender qué repositorios usan qué lenguajes te ayudará a identificar los repositorios candidatos para programas piloto en la fase 3 y te preparará para habilitar code scanning en todos los repositorios lenguaje por lenguaje en la fase 5.
Habilitación de code scanning para el dispositivo
Para poder continuar con los programas piloto y el lanzamiento de code scanning en la empresa, primero debes habilitar code scanning para el dispositivo. Para obtener más información, consulta "Configuración del análisis de código para el dispositivo".
Preparación para la habilitación de secret scanning
Si tu proyecto se comunica con un servicio externo, puede que use un token o una clave privada para la autenticación. Si registras un secreto en un repositorio, cualquiera que tenga acceso de lectura al mismo puede utilizarlo para acceder al servicio externo con tus privilegios. Secret scanning analizará todo el historial de Git en todas las ramas presentes en los repositorios de GitHub en busca de secretos y te alertará. Para más información, vea "Acerca del examen de secretos".
Consideraciones al habilitar secret scanning
La funcionalidad secret scanning de GitHub Enterprise Server es un poco diferente de code scanning, ya que no requiere ninguna configuración específica por lenguaje de programación o por repositorio y requiere menos configuración en general para empezar. Esto significa que habilitar secret scanning en el nivel de organización puede ser fácil, pero hacer clic en Habilitar todo en el nivel de organización y marcar la opción Habilitar secret scanning automáticamente para cada repositorio nuevo tiene algunos efectos descendentes que debes tener en cuenta:
- Consumo de licencias
La habilitación de secret scanning para todos los repositorios consumirá todas tus licencias, incluso si nadie usa el análisis de código. No es ningún problema a menos que planees aumentar el número de desarrolladores activos en la organización. Si es probable que el número de desarrolladores activos aumente en los próximos meses, puede que superes el límite de licencias y que no puedas usar GitHub Advanced Security en los repositorios recién creados. - Volumen inicial de secretos detectados alto
Si habilitas secret scanning en una organización grande, prepárate para ver un número elevado de secretos detectados. A veces esto choca a las organizaciones y saltan todas las alarmas. Si quieres activar secret scanning en todos los repositorios a la vez, planea cómo responderás a varias alertas en toda la organización.
Secret scanning se puede habilitar para repositorios individuales. Para más información, vea "Configuración de secret scanning para los repositorios". Secret scanning también se puede habilitar para todos los repositorios de la organización, como se ha descrito anteriormente. Para obtener más información sobre la habilitación para todos los repositorios, consulta "Administración de la configuración de seguridad y análisis para la organización".
Patrones personalizados para secret scanning
Secret scanning detecta un gran número de patrones predeterminados, pero también se puede configurar para que detecte patrones personalizados, como formatos de secreto exclusivos de tu infraestructura o usados por integradores que secret scanning de GitHub Enterprise Server actualmente no detecta. Para obtener más información sobre los secretos admitidos para los patrones de asociados, consulta "Patrones de análisis de secretos".
A medida que auditas los repositorios y hablas con los equipos de seguridad y desarrolladores, crea una lista de los tipos de secretos que usarás más adelante para configurar patrones personalizados para secret scanning. Para más información, vea "Definición de patrones personalizados para el análisis de secretos".
Para ver el artículo siguiente de esta serie, consulta "Fase 3: Programas piloto".