Herramientas de DevSecOps
Las herramientas de DevSecOps que protegen los flujos de trabajo de DevOps
Kev Zettler
Desarrollador web de pila completa
A pesar de todos los esfuerzos de las empresas de software, sigue habiendo brechas de seguridad. Desde el año 2000, se calcula que unos 3500 millones de personas han sido víctimas del robo de sus datos personales. Parte del problema es que, a medida que crece la escala y la complejidad del código base de las aplicaciones de software, también lo hacen las áreas para vulnerabilidades de seguridad y exploits.
Además, a medida que crece el número de organizaciones que adoptan un enfoque de DevOps (por el que se automatizan e integran los procesos entre el desarrollo de software y los equipos de TI), las herramientas de seguridad tradicionales suelen dejar de ser adecuadas. En la actualidad, los desarrolladores deben incorporar medidas de seguridad en todas las etapas del flujo de trabajo de desarrollo. En lo que respecta a la seguridad de los flujos de trabajo de DevOps, esta práctica se conoce como DevSecOps.
¿Qué es DevSecOps?
La práctica de DevSecOps consiste en integrar la seguridad en una canalización de integración continua, entrega continua e implementación continua. Al aplicar los valores de DevOps a la seguridad de software, la verificación de la seguridad se convierte en una parte activa e integrada del proceso de desarrollo.
Al igual que DevOps, DevSecOps es una metodología técnica y organizativa que combina flujos de trabajo de gestión de proyectos con herramientas de TI automatizadas. DevSecOps integra auditorías de seguridad activas y pruebas de seguridad en flujos de trabajo de DevOps y de desarrollo ágiles, a fin de integrar la seguridad en el producto, en lugar de aplicarla a un producto terminado.
Para implementar DevSecOps, los equipos deben hacer lo siguiente:
- Introducir la seguridad a lo largo de todo el ciclo de vida del desarrollo del software para minimizar las vulnerabilidades del código de software.
- Garantizar que todo el equipo de DevOps, incluidos los desarrolladores y los equipos de operaciones, compartan la responsabilidad de seguir las prácticas recomendadas de seguridad.
- Posibilitar las comprobaciones de seguridad automatizadas en cada etapa de la entrega de software mediante la integración de controles, herramientas y procesos de seguridad en el flujo de trabajo de DevOps.
Con DevSecOps, la seguridad debe aplicarse en cada etapa de la canalización típica de DevOps: planificación, compilación, pruebas, implementación, operación y observación.
La continuidad es una característica diferenciada de una canalización de DevOps. Incluye integración continua, entrega/implementación continuas (CI/CD), feedback continuo y operaciones continuas. En lugar de pruebas puntuales o implementaciones programadas, cada función se realiza de forma continua.
Material relacionado
Más información sobre Snyk para Bitbucket Cloud
Ver la solución
Conseguir Snyk para Bitbucket Cloud
Planifica
La fase de planificación es la menos automatizada de DevSecOps e incluye la colaboración, discusión, revisión y estrategia de análisis de seguridad. Los equipos deben realizar un análisis de seguridad y crear un plan que detalle dónde, cómo y cuándo se realizarán las pruebas de seguridad. Una herramienta de planificación popular para DevSecOps y de diseño colaborativo para el modelado de amenazas es IriusRisk. Otras herramientas son las de gestión y seguimiento de incidencias, como Jira, y las de comunicación y chat, como Slack.
Compila
La fase de compilación comienza cuando los desarrolladores confirman el código en el repositorio fuente. Las herramientas de compilación de DevSecOps se centran en el análisis de seguridad automatizado con respecto al artefacto de salida de la compilación. Son prácticas de seguridad importantes el análisis de componentes de software, las pruebas de seguridad de aplicaciones estáticas (SAST) y las pruebas unitarias. Las herramientas se pueden conectar a una canalización de CI/CD existente para automatizar estas pruebas.
Los desarrolladores instalan y compilan con regularidad dependencias de código de terceros, que pueden proceder de una fuente desconocida o que no es de confianza. Las dependencias de código externo pueden incluir vulnerabilidades de seguridad y exploits de forma accidental o malintencionada. Durante la etapa de compilación, es fundamental revisar y analizar estas dependencias en busca de vulnerabilidades de seguridad.
Algunas herramientas conocidas para ejecutar análisis de fase de compilación son: OWASP Dependency-Check, SonarQube, SourceClear, Retire.js, Checkmarx y Snyk.
Las herramientas de DevSecOps para la etapa de código ayudan a los desarrolladores a escribir código más seguro. Las prácticas de seguridad más importantes de la etapa de código son el análisis de código estático, las revisiones de código y los hooks previos a la confirmación.
Cuando las herramientas de seguridad se conectan directamente con el flujo de trabajo de Git existente de los desarrolladores, cada confirmación y fusión desencadena automáticamente una prueba o revisión de seguridad. Estas herramientas admiten diferentes lenguajes de programación y entornos de desarrollo integrados. Algunas de las herramientas de código de seguridad más populares son Gerrit, Phabricator, SpotBugs, PMD, CheckStyle y Find Security Bugs.
Prueba
La fase de pruebas se desencadena después de crear un artefacto de compilación y de implementarlo correctamente en entornos de ensayo o pruebas. Ejecutar un conjunto de pruebas completo requiere una cantidad considerable de tiempo. En esta fase deberían identificarse rápidamente los errores para que las tareas de prueba más costosas queden para el final.
La fase de pruebas utiliza herramientas de pruebas dinámicas de seguridad de las aplicaciones (DAST) para detectar flujos de aplicaciones en tiempo real, como autenticación de usuarios, autorización, SQL Injection y puntos de conexión relacionados con API. Las DAST centradas en la seguridad analizan una aplicación con respecto a una lista de problemas conocidos de alta gravedad, como los que figuran en la lista de las 10 principales vulnerabilidades de OWASP.
Hay un gran número de herramientas de pruebas de código abierto y de pago que ofrecen todo tipo de funcionalidades y soporte para ecosistemas de lenguajes, como BDD Automated Security Tests, JBroFuzz, Boofuzz, OWASP ZAP, Arachni, IBM AppScan, GAUNTLT y SECApps Suite.
Despliega
Si las etapas anteriores se superan correctamente, es el momento de implementar el artefacto de compilación en producción. Las áreas de seguridad que se deben abordar durante la etapa de implementación son solo las que están relacionadas con el sistema de producción en vivo. Por ejemplo, se debe revisar exhaustivamente toda diferencia de configuración entre el entorno de producción y los entornos de ensayo y desarrollo anteriores. También deben verificarse y revisarse para su renovación los certificados TLS y DRM de producción.
La etapa de implementación es un buen momento para herramientas de verificación de tiempo de ejecución como Oschery, Falco y Tripwire, que funcionan extrayendo información de un sistema en ejecución para determinar si funciona según lo previsto. Las organizaciones también pueden aplicar los principios de ingeniería del caos experimentando en un sistema para generar confianza en su capacidad para resistir condiciones inestables. Se pueden simular eventos reales, como caídas de servidores, fallos en el disco duro o cortes graves en la conexión de red. Es muy conocida la herramienta Chaos Monkey de Netflix, que aplica los principios de ingeniería del caos. Netflix también utiliza la herramienta Security Monkey, que busca infracciones o vulnerabilidades en grupos de seguridad de infraestructura mal configurados y desconecta los servidores vulnerables.
En la etapa de publicación del ciclo DevSecOps, el código de la aplicación y el ejecutable ya deben haber pasado por pruebas exhaustivas. Esta etapa se centra en proteger la infraestructura del entorno de ejecución mediante el examen de los valores de configuración del entorno, como el control de acceso de usuarios, el acceso al firewall de red y la gestión de datos secretos.
El principio de privilegios mínimos (PoLP) es una cuestión clave de la fase de publicación. PoLP significa que cualquier usuario, programa o proceso recibe los privilegios de acceso mínimos para realizar su función. Implica auditar claves de API y tokens de acceso para que los propietarios tengan acceso limitado. Sin esta auditoría, un atacante podría encontrar una clave con acceso a áreas no deseadas del sistema.
Las herramientas de gestión de la configuración son un elemento clave para la seguridad en la etapa de publicación, ya que dan visibilidad a la configuración estática de una infraestructura dinámica. La configuración del sistema se puede auditar y revisar. La configuración se vuelve inmutable y solo se puede actualizar mediante confirmaciones en un repositorio de gestión de la configuración. Algunas herramientas de gestión de la configuración populares son Ansible, Puppet, HashiCorp Terraform, Chef y Docker.
La comunidad de seguridad ofrece pautas y recomendaciones sobre prácticas recomendadas con las que reforzar tu infraestructura, como las referencias de seguridad del CIS (Center for Internet Security) y las checklists de configuración del NIST.
Observa
Una vez que una aplicación se implementa y estabiliza en un entorno de producción en vivo, se requieren otras medidas de seguridad. Las empresas deben supervisar y observar la aplicación en vivo en busca de ataques o fugas, con controles de seguridad automatizados y bucles de supervisión de la seguridad.
La autoprotección de aplicaciones en tiempo de ejecución (RASP) identifica y bloquea automáticamente las amenazas de seguridad entrantes en tiempo real. RASP actúa como un proxy inverso que observa los ataques entrantes y permite que la aplicación cambie de configuración automáticamente sin intervención humana en respuesta a condiciones expresas.
Un equipo interno o externo especializado puede realizar pruebas de penetración para detectar vulnerabilidades de seguridad o exploits poniendo en peligro deliberadamente un sistema. Otra técnica de seguridad es ofrecer un programa de recompensas por errores que pague a personas externas por informar de vulnerabilidades de seguridad y exploits.
La supervisión de seguridad utiliza análisis para instrumentar y supervisar parámetros críticos relacionados con la seguridad. Por ejemplo, estas herramientas marcan las solicitudes a puntos de conexión públicos confidenciales, como formularios de acceso a cuentas de usuario o puntos de conexión de bases de datos. Algunas herramientas de defensa en tiempo de ejecución populares son Imperva RASP, Alert Logic y Halo.
Conclusión
A medida que crece el número de equipos de desarrollo que transforma sus procesos y adopta nuevas herramientas, deben ser más cuidadosos con la seguridad. DevSecOps es un proceso cíclico que debe repetirse y aplicarse continuamente en cada nueva implementación de código. Las vulnerabilidades de seguridad y los atacantes no paran de evolucionar y es importante que los equipos de software modernos también lo hagan.
Un buen punto de partida para empezar a probar DevSecOps es automatizar tus pruebas con Bitbucket Pipelines. Además, echa un vistazo a las herramientas y los recursos de automatización de pruebas disponibles en Atlassian Marketplace.
Compartir este artículo
Tema siguiente
Lecturas recomendadas
Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.