In this article
Mejores prácticas para impulsar la adopción de herramientas y procesos de seguridad por parte de los desarrolladores
Introducción a la adopción de la seguridad por parte de los desarrolladores
En general, se acepta que la manera de ampliar la seguridad de las aplicaciones en las organizaciones modernas es integrarla directamente en los flujos de trabajo de desarrollo como parte natural del proceso ágil y del pipeline de DevOps. Sin embargo, es mucho más fácil decirlo que hacerlo, y plantea muchos desafíos en cuanto a la aceptación y la adopción por parte de los desarrolladores y los equipos de desarrollo. Este informe técnico resume lo que aprendimos en conversaciones con varias organizaciones que tienen programas de DevSecOps en distintas etapas de madurez. El tema común entre todas las personas y los grupos con los que hablamos fue el deseo de que los equipos de desarrollo adopten prácticas de desarrollo seguro como parte de sus flujos de trabajo.
Es importante tener en cuenta que ninguno de los grupos con los que hablamos trabaja de la misma manera. También es importante señalar que lo que funciona bien en una organización quizá no funcione igual de bien en otra, ya que hay muchos factores distintos que pueden influir en el éxito de estas prácticas. Como lector, es fundamental que identifiques las prácticas y los enfoques de este informe que consideres más adecuados para tu organización, cultura y equipos.
La seguridad para desarrolladores requiere cultura, procesos y herramientas
Cultura
1. Sé empático con tus equipos de desarrollo
Comprende qué tan dispuestos están, en general, a aceptar cambios.
Identifica qué equipos y proyectos probablemente implementen tecnologías y procesos de desarrollo modernos, y cuáles se resisten al cambio.
Determina qué tan bien están definidos la titularidad y el nivel de responsabilidad en los proyectos.
Comprende la capacidad del equipo para entregar resultados y realizar otras tareas, como las relacionadas con el rendimiento y la confiabilidad.
2. Adopta la priorización de la seguridad empresarial de arriba hacia abajo
Deja claro cuándo la prioridad viene del negocio.
Los equipos de seguridad deben ayudar a los equipos de desarrollo a abordar las prioridades de seguridad del negocio, en lugar de sumar más tareas a su carga de trabajo.
3. Facilita la colaboración entre desarrollo y seguridad
Considera crear un programa de security champions o un grupo de seguridad para facilitar la colaboración.
Colabora con los desarrolladores para generar confianza, en lugar de depender del miedo para lograr resultados.
Crea programas compartidos y establece objetivos comunes para los equipos de seguridad y desarrollo.
Identifica quiénes son los responsables en los equipos de desarrollo para que las solicitudes de los equipos de seguridad sean pertinentes.
4. Capacita para facilitar el desarrollo seguro
Capacita a los equipos antes de implementar los programas.
Ten en cuenta que ciertos contenidos de capacitación no son relevantes para todos los equipos.
Capacita a los equipos sobre las vulnerabilidades específicas que les afectan, usando incidentes anteriores como ejemplos.
Haz seguimiento de la capacitación con cuadros de mando.
Gamifica la capacitación cuando sea posible.
5. Recompensas y reconocimiento
Reconoce los logros y las mejoras de seguridad de cada persona.
Destaca los éxitos de los equipos y la adopción de programas para mostrar sus avances y animar a otros a implementarlos.
Asegúrate de que el equipo de liderazgo de ingeniería reconozca a los equipos y demuestre que la seguridad es importante.
Ofrece artículos promocionales, regalos, viajes a conferencias de seguridad y otros incentivos para generar conciencia.
Procesos
1. Incluye a los desarrolladores en las decisiones que cambian los procesos
Comprende cómo integran hoy los equipos de desarrollo las prácticas de seguridad en su pipeline e intenta adaptarte a sus flujos de trabajo.
Cuando se establezcan nuevas reglas o procesos de seguridad, trabaja con los equipos de desarrollo para definir los umbrales y las prácticas de trabajo.
Asegúrate de compartir información y capacitación antes de cualquier cambio de proceso, con suficiente anticipación, mediante blogs, documentación y centros de aprendizaje.
2. Haz que el camino correcto sea el más fácil
No compliques demasiado los procesos. Trabaja con el equipo de desarrollo para simplificarlos.
Asegúrate de contar con buena documentación sobre cómo trabajan los demás equipos y cómo deben realizarse las actividades.
Ofrece caminos recomendados para que los desarrolladores puedan tomar la decisión correcta de forma predeterminada.
Integra los procesos en los flujos de trabajo existentes, en lugar de intentar crear otros nuevos.
Asegúrate de que los procesos y las herramientas se enfoquen en las soluciones, no en los problemas.
3. Genera visibilidad y transparencia entre los equipos
Los cuadros de mando son una excelente manera de informar a la organización sobre el progreso y el estado de la seguridad.
Los equipos deben hacerse responsables de los resultados de los cuadros de mando y priorizar la seguridad según su estado y sus planes.
Apóyate en los valores de los desarrolladores y en la gamificación para incorporar tareas a los sprints, usando los datos de los cuadros de mando como justificación.
4. Velocidad de implementación
Identifica a los equipos que se adaptan con más facilidad y están abiertos a incorporar nuevos programas de seguridad.
Implementa los programas primero en esos equipos, inicialmente con un enfoque de baja intervención y centrado en la visibilidad.
Agrega actividades de desarrollo seguro a los flujos de trabajo de desarrollo y enfócate primero en la seguridad de los cambios incrementales en las aplicaciones.
Refuerza las medidas de protección al ritmo al que los equipos puedan asimilar los cambios, sin abrumarlos.
Cuando los equipos que adoptaron el programa primero hayan demostrado su valor, identifica a otros equipos para incorporarlos.
Usa las mejores prácticas identificadas durante la implementación inicial para impulsar la adopción.
Herramientas
1. Adopta las herramientas para desarrolladores
Las herramientas de seguridad para desarrolladores deben ofrecer una excelente experiencia de autoservicio, con una incorporación sencilla, flujos de trabajo intuitivos y documentación clara.
Las herramientas deben integrarse en los flujos de trabajo existentes, incluidos los IDE, Git y los pipelines.
Las herramientas deben contar con API completas y facilitar la automatización.
Busca herramientas ampliamente adoptadas por las comunidades de código abierto y de seguridad.
Procura elegir una herramienta que cubra toda la aplicación, incluido el código propio, las bibliotecas de terceros, los contenedores, IaC y otros componentes.
Las herramientas deben enfocarse en corregir y remediar los problemas, no solo en detectarlos y reportarlos.
2. No abrumes a los desarrolladores
Al introducir herramientas en una organización o equipo, úsalas al principio para dar visibilidad.
Con el tiempo, refuerza las reglas y las medidas de protección mediante políticas para mejorar el proceso de desarrollo seguro.
Acompaña cualquier cambio en las herramientas con comunicación, información, una justificación clara, documentación de procesos y capacitación.
Enfoca primero las herramientas en la entrega de código nuevo y después en los problemas pendientes, para reducir la carga de trabajo de los desarrolladores.
3. Automatiza todo
La integración en un flujo de trabajo debe automatizarse y realizarse en el lugar adecuado para cada equipo.
Además de las pruebas en el flujo de trabajo, busca otros puntos de integración para conectar herramientas, como la gestión de tickets, los informes y las alertas.
Debes poder extraer datos de informes de tus herramientas, preferiblemente mediante una API, para completar los tableros y cuadros de mando existentes.