DevSecOps: la evolución de la seguridad del software

Hablamos constantemente de cómo se transforman las compañías, de cómo se actualiza el software… pero, ¿cómo evoluciona la seguridad en el desarrollo de proyectos?

Hoy en el blog, hablamos de cómo integramos en Paradigma la seguridad dentro de los procesos DevOps, de cómo funciona la nueva filosofía bautizada como DevSecOps y de cómo estamos trabajando para conseguir una entrega de valor que incluya la seguridad de la misma forma que hoy en día se incluye QA o sistemas de CI/CD.

Filosofía DevSecOps

DevSecOps no es solo un método, es una filosofía que se basa en la integración de la seguridad en el proceso DevOps. ¿Cómo conseguimos llevarla a cabo? Mediante una cultura basada en el concepto «Seguridad como Código», con colaboración flexible y constante entre los equipos de desarrollo, operaciones y seguridad.

El movimiento DevSecOps tiene, como el movimiento DevOps, el foco en crear nuevas soluciones dentro de un framework ágil, para procesos complejos de desarrollo de software.

En DevSecOps observamos dos objetivos aparentemente opuestos: «velocidad de entrega»  prácticas ágiles, las pruebas de seguridad que se hacen mediante iteraciones sin frenar o ralentizar los ciclos de entrega.

Los problemas críticos de seguridad se resuelven de forma preventiva, no después de que se haya convertido en una amenaza o hayan sido comprometidos.

DevSecOps es la respuesta natural y necesaria ante los constantes cuellos de botella que generan los modelos de seguridad tradicionales en los entornos de desarrollo modernos basados en Continuous Delivery.

El objetivo es garantizar una entrega rápida y segura del código mientras se atajan los problemas tradicionales entre el desarrollo y la seguridad.

Con el enfoque DevSecOps se pretende reemplazar los métodos tradicionales con comunicación y responsabilidad compartida de las tareas de seguridad durante todas las fases del proceso de entrega.

Beneficios de un enfoque DevSecOps

Algunos de los beneficios inherentes a DevSecOps son los siguientes:

  • Temprana identificación de vulnerabilidades en el código.
  • Mayor velocidad y agilidad en la aplicación de la seguridad.
  • Habilidad para responder a los cambios y requisitos rápidamente.
  • Mejor colaboración y comunicación entre equipos.
  • Más oportunidades para builds automatizadas y test de QA.
  • Concienciación sobre la seguridad entre los miembros de los equipos.
  • El Equipo de Seguridad se ve liberado para poder hacer trabajo que aporte mayor valor de negocio.

Cuando integramos la seguridad en el proceso de desarrollo, en lugar de ser una capa añadida posteriormente, permitimos que se aproveche el poder de las metodologías ágiles por parte de los profesionales DevOps y de Seguridad, con el objetivo de evitar bloqueos para conseguir generar código seguro.

Nuestro manifiesto DevSecOps

En Paradigma estamos trabajando para integrar esta filosofía en nuestra forma de trabajar con los clientes, y para eso hemos decidido elaborar un manifiesto con las máximas de nuestra visión acerca de la misma.

Las máximas que hemos establecido son las siguientes:

  • Seguridad por diseño, en lugar de revisiones de seguridad.
  • Flexibilidad en la toma de decisiones en lugar de las negativas sistemáticas.
  • Datos y ciencia de seguridad en lugar de miedo, paranoia e incertidumbre.
  • Contribución y colaboración abierta en lugar de requerimientos de seguridad exclusivos.
  • Integrar la seguridad en el proceso de desarrollo en lugar de añadirla posteriormente.
  • Servicios de seguridad consumibles y transparentes, en lugar de controles de seguridad y burocracia.
  • Trabajar en un cambio de la cultura por encima de establecer políticas de seguridad.
  • Apoyarse más en equipos de desarrollo formados en seguridad que en especialistas de Seguridad.

Aplicando el método DevSecOps

Existen seis importantes componentes de la filosofía DevSecOps:

  • Análisis de código: entregar el código de forma incremental, con el objetivo de poder detectar las vulnerabilidades rápidamente.
  • Gestión de cambios: incrementar la velocidad y eficiencia permitiendo que los cambios vengan de cualquier fuente, para luego determinar si estos cambios son beneficiosos o no mediante un proceso de revisión.
  • Monitorización de cumplimiento: estar listos para una auditoría en cualquier momento (LOPDGGD, RGPD…​).
  • Investigación de amenazas: identificar posibles amenazas emergentes con cada actualización del código y ser capaz de responder rápido.
  • Análisis de vulnerabilidades: identificar nuevas vulnerabilidades con análisis de código, pentesting y análisis de arquitectura, para luego analizar los tiempos de respuesta y parcheado.
  • Formación en seguridad: formar en buenas prácticas de seguridad a los equipos de sistemas y desarrollo.

Es importante destacar que, aunque lo mencionado anteriormente recae principalmente sobre el propio Equipo de Seguridad, una de las mayores máximas de DevSecOps es descentralizar la seguridad, de forma que se convierta en un requisito más en el flujo de desarrollo y entrega, siendo algo que, como por ejemplo el rendimiento, se tenga en cuenta como prioridad y todo el equipo lo mantenga en mente.

Desde Paradigma estamos actualmente trabajando en desarrollar una interacción con los equipos mediante la definición de un glosario de medidas de seguridad. Partiendo de las medidas implementadas por los equipos, estas se abstraen para su uso por parte de toda la organización.

La definición de las medidas definidas se consensúan con los distintos equipos, a ser posible en los refinamientos, ya que es probable que muchas de ellas se traduzcan en tareas a añadir al backlog. El resto serán comportamientos que el equipo tendrá que decidir cómo implementar.

El hecho de que el Equipo de Seguridad apoye en la definición de las medidas no implica que estos sean los que la implementen.

La idea es que los equipos sigan buscando soluciones, teniendo en cuenta los requisitos y apoyándose en el Equipo de Seguridad, y así desarrollando no solo soluciones extrapolables a todos los proyectos con requisitos similares, sino desarrollando esta cultura de seguridad en la compañía.

Durante el ciclo de vida del proyecto pueden surgir incidentes de seguridad. En estos casos, el equipo responde a estas incidencias de forma inmediata, y Seguridad da apoyo en esta respuesta.

Aunque la presencia del personal de seguridad no es necesaria, sí es recomendable, ya que puede aportar una experiencia que el resto del equipo puede no tener. En estos casos, ayudará a agilizar el proceso, resolver técnicamente la incidencia y a garantizar que se sigue el procedimiento.

En otra línea de trabajo, se están investigando activamente tecnologías y herramientas que se puedan integrar en el ciclo de CI de forma automatizada para aumentar la seguridad de las builds, incidiendo en el análisis estático del código, test de seguridad y programación segura y tests de vulnerabilidades de aplicaciones web.

Por último, el Equipo de Seguridad cumple una labor de formación dentro de Paradigma para crear esa cultura de seguridad por diseño y concienciar a todos los miembros de la organización en este ámbito.

Para esto, se están impartiendo seminarios de vulnerabilidades web y se está trabajando en sesiones de formación más específicas, enfocadas cada una a distintos ámbitos de trabajo con el objetivo de conseguir que la seguridad esté en mente de todas las personas que trabajan en Paradigma.

Conclusiones

En Paradigma nos tomamos en serio la seguridad y estamos apostando actualmente por un enfoque DevSecOps y Security by Design.

A medida que las tecnologías avanzan y aumenta el valor del dato, nos encontramos en un terreno en el que la seguridad se convierte no solo en un valor añadido, sino en una parte esencial del diseño, tanto como puede serlo el rendimiento.

Esta filosofía no es nada nuevo y se basa en la adaptabilidad. Como dijo el célebre Bruce Lee:

No te establezcas en una forma, adáptala y construye la tuya propia, y déjala crecer, sé como el agua. Vacía tu mente, sé amorfo, moldeable, como el agua. Si pones agua en una taza se convierte en la taza, si pones agua en una botella se convierte en la botella, si la pones en una tetera se convierte en la tetera. El agua puede fluir o puede aplastar. Sé como el agua, amigo, el agua que corre nunca se estanca; así es que hay que seguir fluyendo.

Bruce Lee

Con este enfoque conseguimos conocernos a nosotros mismos, y ser conscientes en la medida de lo posible de quiénes son los demás.

De esta forma no reaccionamos ante los ataques, sino que estamos preparados para evitarlos y, si se produjeran, para enfrentarnos a ellos con eficiencia y sin miedos ni desconocimiento, adaptándonos a los cambios de la forma más eficaz posible.

Escribe un comentario