Líderes de ingeniería: la seguridad también es vuestra responsabilidad
El auge de DevOps seguro ha hecho que muchos profesionales de la seguridad tengan que luchar por ganarse la atención y el apoyo de sus compañeros ingenieros. ¿Qué pueden hacer los líderes de ingeniería para garantizar que haya una estrecha colaboración? Te presentamos cuatro ideas para integrar la seguridad en tu cultura, flujos de trabajo y objetivos de DevOps.
Lo bueno del modelo DevOps es que une a dos equipos con responsabilidades en las aplicaciones (desarrollo y operaciones) para que juntos diseñen un ciclo de vida de las aplicaciones más ágil y eficiente. Los dos grupos, que históricamente habían vivido aislados, obtienen un reconocimiento equivalente en la creación de la aplicación y el proceso de despliegue.
Ahora, la ingeniería también necesita integrar la seguridad en todos y cada uno de los aspectos del ciclo de DevOps, desde la especificación del usuario y el diseño hasta el desarrollo y las operaciones. Es posible que surjan obstáculos a la hora de adoptar una mentalidad DevSecOps, pero, al fin y al cabo, debemos ser conscientes de que el éxito del producto también depende de la seguridad.
Los equipos de ingeniería deben dar prioridad a la seguridad como elemento fundamental del diseño y la implementación del software. Deben colaborar con los equipos de seguridad y las partes interesadas del negocio, sin querer competir por la atención de la parte ejecutiva. Este cambio no consiste únicamente en adelantar la seguridad acercándola a la fase de desarrollo, sino también en incorporar la seguridad a una visión general que vaya de la mano del negocio.
Te presentamos cuatro maneras de conseguirlo:
1. Convencer sin imponer
Los desarrolladores no escriben código con fallos de seguridad porque sí. Lo que ocurre es que acaban introduciendo vulnerabilidades en el código porque no disponen de las herramientas adecuadas o del conocimiento necesario sobre vulnerabilidades y patrones seguros, o bien porque los líderes de ingeniería animan a desarrollar nuevas funcionalidades rápidamente sin dar prioridad a la seguridad.
Sí, la seguridad debe integrarse en cada fase del proceso de desarrollo y despliegue. Debe formar parte inseparable del ciclo de DevOps, y para ello se empieza con las personas. Haz que los ingenieros de seguridad colaboren codo con codo con los equipos de desarrollo; promueve la pasión por la seguridad entre los desarrolladores y organiza sesiones de repaso del trabajo centradas en clases concretas de vulnerabilidades.
2. Integrar herramientas de seguridad en los procesos de desarrollo
Una buena manera de cumplir con unos objetivos rápidos de lanzamiento e innovación sin desatender la seguridad es integrar las herramientas y pruebas de seguridad en cada fase del ciclo de DevOps. Se pueden utilizar linter para comprobar si hay errores fáciles de detectar, así como herramientas de pruebas de seguridad de análisis estático (SAST) para analizar el código una vez confirmado. Además, las aplicaciones que estén listas para su despliegue deben someterse a ensayos y pruebas dinámicas, mientras que los firewalls de aplicaciones web deben proteger y supervisar las aplicaciones una vez estén desplegadas.
El departamento de ingeniería debe permanecer en contacto con los equipos de seguridad y desarrollo para automatizar nuevas comprobaciones de seguridad con las herramientas adecuadas. La única manera de garantizar un nivel de seguridad uniforme es integrando los test y los controles en la cadena de producción mediante la automatización.
3. Integrar incentivos de seguridad en los objetivos de ingeniería
Los equipos de seguridad que necesitan un mes, o incluso una semana, para realizar auditorías de seguridad ralentizarán el desarrollo, lo cual creará conflictos inevitables entre los objetivos de DevOps y los de seguridad. Para avanzar a la par que DevOps, la seguridad tiene que estar mejor integrada en el proceso de desarrollo de software, y esa tarea recae en el personal de ingeniería.
La rapidez forma parte de la nueva normalidad, y las empresas presionan a los equipos de ingeniería para impulsar la transformación digital y adaptarse a la pandemia. El año pasado, si la seguridad se consideraba un obstáculo para la expansión digital y móvil, el personal de ingeniería se veía obligado a tomar decisiones difíciles. Si bien puede resultar tentador priorizar el lanzamiento de código respecto a las necesidades de seguridad, si no integramos y probamos la seguridad nos podemos encontrar con vulnerabilidades más adelante, lo cual conllevará pérdida de productividad, experiencias negativas para los clientes u otras consecuencias.
Para resolver esto, los equipos de ingeniería necesitan incorporar incentivos de seguridad en sus objetivos y resultados clave, así como garantizar que todo el personal de desarrollo e ingeniería tenga motivación para producir código de calidad y reducir las vulnerabilidades.
4. DevOps precisa de ingeniería flexible
El debate sobre DevOps se suele centrar en la integración y el despliegue continuos (CI/CD), pero los equipos de DevOps deberían prestar la misma atención a las prácticas recomendadas en el ciclo de vida de desarrollo seguro (SDL): recopilación reiterada de opiniones, incluidos informes de productos de seguridad y test, e incorporación de las recomendaciones en la siguiente versión de la aplicación.
Este ciclo requiere flexibilidad por parte del personal de ingeniería, ya que será necesario modificar los procesos y las herramientas para incorporar los comentarios orientados a la mejora de la aplicación y de los controles de seguridad. Los líderes de ingeniería deben asegurarse de que la infraestructura de DevOps sea lo suficientemente flexible como para adoptar cambios rápidos. Para ello, hace falta crear un proceso de aprobación que dé lugar a cambios claros y no fomente la burocracia. Si el proceso de cambio es demasiado pesado, los desarrolladores no tendrán incentivos para colaborar con los ingenieros en la seguridad, lo cual puede hacer que el proceso se deje a un lado.
Sin una infraestructura flexible y continua de test y supervisión, no se puede garantizar la seguridad del código. Los desarrolladores necesitan procesos de ingeniería que refuercen los principios de seguridad y presten la atención que merece este aspecto, ya que, sin comprobaciones de seguridad repetibles, la rapidez de DevOps se puede perder por vulnerabilidades y vacíos de seguridad.