La guía está inspirada en el Cuaderno de estrategias de éxito del sistema de ingeniería (ESSP) de GitHub, que recomienda estrategias y métricas para impulsar mejoras en los sistemas de ingeniería.
Si vas a iniciar un lanzamiento de Copilot, se recomienda definir los objetivos, planear el lanzamiento en consecuencia y comunicar claramente los objetivos al personal. Consulta Lograr los objetivos de ingeniería de tu empresa con GitHub Copilot.
1. Identificación de barreras para alcanzar el éxito
El primer paso que recomienda el ESSP es desarrollar una comprensión clara de los obstáculos que impiden mejoras en tu empresa. Al comprender la línea de base actual, el estado futuro deseado y las barreras que te impiden avanzar, puedes asegurarte de que los cambios están dirigidos al objetivo y son efectivos.
A medida que los equipos de desarrollo trabajan para ofrecer nuevas características y mantener sus aplicaciones en funcionamiento sin problemas, su enfoque suele ser la velocidad y la funcionalidad. Pero con el tiempo se pueden acumular problemas pequeños, como los siguientes:
- Puntos débiles de seguridad conocidos que no se han corregido.
- Dependencia de componentes de software más antiguos con posibles errores.
- Retrasos en la solución de problemas cuando se detectan.
Para muchas organizaciones, esta acumulación de problemas de seguridad sin resolver y componentes obsoletos crea un trabajo pendiente significativo, una deuda de seguridad.
Esta deuda conlleva riesgos reales. Cuanto más tiempo pase sin que se solucione, más grande puede hacerse y más costoso cuando se resuelva. Una deuda de seguridad grande puede dejar a los sistemas vulnerables a ataques, exponer datos confidenciales y, en última instancia, dañar la confianza del cliente e influir en los resultados.
El reto es equilibrar la necesidad de un desarrollo rápido con la responsabilidad fundamental de mantener un entorno de software seguro y estable.
2. Evaluación de las opciones
El siguiente paso consiste en evaluar y aceptar soluciones para abordar las barreras que has identificado en el paso uno. En esta guía, nos centraremos en el impacto que GitHub Copilot puede tener en el objetivo que has identificado. Ten en cuenta que los lanzamientos correctos de una nueva herramienta también requieren cambios en la referencia cultural y los procesos.
Ejecutarás pruebas de nuevas herramientas y procesos con grupos piloto para recopilar comentarios y medir el éxito. Para obtener información sobre los recursos de entrenamiento y las métricas que se usarán durante las pruebas, puedes examinar las secciones3. Implementación de cambios y Métricas que se van a ver.
Cómo Copilot puede servir de ayuda
GitHub Copilot puede ayudar a mitigar la deuda de seguridad mediante la integración de consideraciones de seguridad directamente en el ciclo de vida de desarrollo. Sus capacidades pueden facilitar a los desarrolladores identificar y abordar de forma proactiva posibles vulnerabilidades y mantener sus proyectos actualizados.
Copilot puede ayudar a reducir las vulnerabilidades de seguridad a lo largo del ciclo de vida de desarrollo de software.
Durante el desarrollo
Copilot revisa de forma proactiva el código a medida que se escribe, aprovechando su comprensión de los errores y patrones de seguridad comunes para marcar áreas que podrían ser susceptibles a la explotación. Este análisis en tiempo real puede exponer vulnerabilidades ocultas que, de lo contrario, podrían perderse durante las revisiones de seguridad iniciales o de desarrollo estándar.
Cuando se identifican problemas, Copilot puede sugerir al instante cambios de código procesables para corregir vulnerabilidades, lo que permite a los desarrolladores abordar las debilidades en el ciclo de desarrollo y evitar que la deuda de seguridad se acumule.
Mantenimiento continuo
Copilot se integra con las funcionalidades de escaneo de código de GitHub para proteger el código base existente. Cuando el escaneo de código identifica una posible alerta de seguridad, Autocorrección de Copilot puede analizar inteligentemente la vulnerabilidad y proporcionar recomendaciones específicas del contexto dirigidas para resolverla.
Estas sugerencias de corrección concretas simplifican la corrección, lo que reduce el tiempo que los desarrolladores dedican a investigar vulnerabilidades y a averiguar cómo abordarlas. Como resultado, las alertas de seguridad se resuelven de forma más eficaz y tienen menos probabilidades de permanecer o contribuir a la deuda de seguridad continua.
Consideraciones culturales
Junto con el lanzamiento de GitHub Copilot, también debes abordar cualquier factor social o cultural que pueda impedir que logre tus objetivos.
Los ejemplos siguientes se extraen de la sección "Antipatrones" del ESSP.
- Los equipos pueden omitir o aplazar la deuda de seguridad, lo que permite que los sistemas ineficaces y vulnerables persistan. Esto podría deberse a un enfoque basado en la fecha límite sobre las características o a una falta de educación sobre el impacto a largo plazo de la deuda de seguridad.
- Los equipos pueden crear soluciones demasiado complejas para problemas sencillos, lo que dificulta el mantenimiento del código y los problemas de seguridad más difíciles de detectar. Esto podría deberse a un deseo de hacer una prueba de futuro sin que sea necesaria o presionar para agregar valor mediante la complejidad.
3. Implementación de cambios
Cuando hayas identificado el enfoque adecuado para superar las barreras, escalarás las soluciones que identificaste. Para un lanzamiento correcto de una nueva herramienta o proceso, es importante asignar la propiedad a cada parte del lanzamiento, comunicar de forma transparente tus objetivos, proporcionar entrenamiento eficaz y medir los resultados.
En esta sección se proporcionan escenarios de ejemplo, procedimientos recomendados y recursos para desarrolladores. Se recomienda usar esta sección para planear las comunicaciones y las sesiones de aprendizaje para ayudar a los empleados a usar Copilot de una manera que se alinee con tu objetivo.
- Análisis del código para detectar vulnerabilidades de seguridad
- Uso de Autocorrección de Copilot para las alertas de code scanning
- Procedimientos recomendados para desarrolladores
- Recursos para desarrolladores
Análisis del código para detectar vulnerabilidades de seguridad
Según el tamaño del código base, es posible que Copilot no pueda analizar todo el proyecto mientras los desarrolladores escriben código debido a restricciones de contexto. Pero los desarrolladores pueden adoptar una práctica de pedir a Copilot que analice archivos específicos para las prácticas de código no seguras.
-
Abre los archivos que se van a analizar en Visual Studio Code.
-
En Copilot Chat, pregunta lo siguiente:
Analyze this code for potential security vulnerabilities and suggest fixes
También puedes usar la variable de chat
#file
para incluir específicamente el contenido de un archivo en el símbolo del sistema o usar archivos de solicitud e instrucciones personalizadas para guiar las respuestas de Copilot. -
Copilot Chat analizará el código, identificará las vulnerabilidades de seguridad y sugerirá las correcciones adecuadas.
-
Revisa los cambios sugeridos y aplícalos según corresponda.
Entre los ejemplos de avisos se incluyen los siguientes:
Are there any security vulnerabilities in my code? If so, can you explain them and suggest fixes?
Does this code follow secure code best practices? If not, what specific improvements can I make?
What are the potential security risks in this code if it were deployed to production? How can I mitigate them?
Uso de Autocorrección de Copilot para las alertas de code scanning
Autocorrección de Copilot es un componente de GitHub Code Security que puede sugerir posibles correcciones a las alertas de code scanning. Autocorrección de Copilot está disponible en repositorios públicos y repositorios con una licencia para GitHub Code Security.
Cuando alguien ejecuta un examen de código en un repositorio, se generan posibles problemas como alertas de code scanning en el repositorio. Los desarrolladores pueden resolver las alertas siguiendo este flujo:
- Abrir una alerta en GitHub.
- Hacer clic en Generate fix, que se muestra si Copilot puede resolver la alerta.
- Autocorrección de Copilot generará una posible corrección para esta alerta, en la que se muestran los cambios de código en la propia alerta. Después, ofrece la opción de confirmar este cambio de código en una nueva rama o en una existente.
- En este punto, puedes probar el código y, después, abrir una solicitud de cambios para mover los cambios a la rama principal.
- Una vez que muevas los cambios a la rama principal y code scanning compruebe que la alerta se ha corregido, esta se cerrará automáticamente.
Procedimientos recomendados para desarrolladores
Los desarrolladores deben:
- Usar Copilot Chat regularmente para analizar fragmentos de código y detectar vulnerabilidades: utilízalo para comprobar de forma proactiva los problemas de seguridad antes de confirmar los cambios.
- Sacar provecho de Autocorrección de Copilot para las alertas de code scanning: cuando aparezcan alertas, usa Autocorrección de Copilot como primer paso para corregirlas rápidamente.
- Proporcionar mensajes claros y específicos a Copilot Chat: cuanto más detallada sea la solicitud, mejor podrá analizar Copilot el código y sugerir correcciones pertinentes. Por ejemplo, incluye el lenguaje de programación y áreas problemáticas específicas en las indicaciones.
- Combinar Copilot con las herramientas de seguridad existentes: usa Copilot como una capa adicional de análisis de seguridad, no como reemplazo de escáneres de seguridad y prácticas dedicados.
Los desarrolladores no deben:
- Aceptar automáticamente las sugerencias de seguridad de Copilot: revisa y prueba siempre los cambios de código que sugiere Copilot para asegurarte de que son adecuados y eficaces.
- Confiar únicamente en Copilot para auditorías de seguridad completas: Copilot es una herramienta útil, pero no debe reemplazar las revisiones de seguridad exhaustivas y las pruebas de penetración.
- Omitir las alertas de code scanning: soluciona todas las alertas rápidamente, aunque parezcan menores, para evitar la acumulación de la deuda de seguridad.
- Usar Copilot como excusa para evitar el aprendizaje de prácticas de codificación seguras: continúa formándote a ti y al equipo en los procedimientos recomendados de seguridad.
- Suponer que Copilot detectará cada vulnerabilidad: la seguridad es un proceso continuo y la vigilancia siempre es necesaria.
- Usar Copilot para omitir las directivas de seguridad: cumple con los protocolos de seguridad de tu organización y usa Copilot como herramienta para mejorarlas, no eludirlas.
Recursos para desarrolladores
- Chat de Copilot en GitHub
- Finding existing vulnerabilities in code
- GitHub Skills; Introducción a GitHub Copilot
Métricas que se van a ver
Para evaluar las pruebas de las nuevas herramientas y asegurarte de que los lanzamientos completos proporcionan mejoras coherentes, debes supervisar los resultados y realizar ajustes cuando sea necesario. En general, se recomienda considerar las zonas clave de calidad, velocidad y felicidad del desarrollador, y cómo estas zonas se unen para contribuir a obtener resultados empresariales.
Estas son algunas métricas que se recomienda examinar para evaluar el impacto de Copilot en esta meta específica.
- Relación de deuda de seguridad: usa la información general de seguridad para ver si el número de alertas decrece con el tiempo.
- Tiempo para corregir problemas de seguridad: usa la información general de seguridad para ver si el tiempo para corregir los problemas de seguridad decrece con el tiempo.