
[27/09/2022] La mentalidad del ingeniero es comprender un problema, crear una solución y luego descubrir cómo desplegar una implementación robusta y segura en ambientes de producción.
Desafortunadamente, a menudo es más complicado y costoso integrar las mejores prácticas de seguridad en una solución una vez que se implementa, y la presión para lanzar innovaciones rápidamente a menudo lleva a los equipos de desarrollo a liberar la deuda de seguridad. Las mejores prácticas de DevSecOps son "desplazar hacia la izquierda” el conocimiento, las mejores prácticas y la seguridad en el proceso de desarrollo para que los equipos de desarrollo ágiles tengan más probabilidades de incorporar la seguridad directamente en el microservicio, la aplicación o la base de datos.
[Reciba lo último de CIO Perú suscribiéndose a nuestro newsletter semanal]
Pero ¿qué pasa con el pipeline de integración continua y entrega continua (CI/CD)? Esta automatización mejora la confiabilidad de la implementación cuando los pasos manuales para compilar, integrar, empaquetar y entregar código a los ambientes se programan en herramientas de CI/CD. Los equipos de DevOps con implementaciones sólidas de CI/CD a menudo dan el siguiente paso y consideran la implementación continua para ambientes de producción, lo que conlleva más riesgos, pero permite implementaciones más frecuentes.
Considere estas recomendaciones y mejores prácticas para garantizar pipelines de CI/CD sólidos y seguros.
1. Establecer prácticas de desarrollo de seguridad mucho antes de CI/CD
Kulbir Raina, líder de metodología ágil y DevOps en Capgemini, comparte un principio que precede a todo: "la seguridad y la calidad deben integrarse en el código, y no deben dejarse en manos de las puertas de calidad cuando se trata de la automatización en el pipeline de CI/CD”. Continúa añadiendo: "los desarrolladores necesitan herramientas de seguridad integradas en su ambiente de desarrollo integrado para poder delinear correctamente el código”.
Linting es un proceso realizado por herramientas que identifican desviaciones de estilo de codificación y prácticas inseguras. Las herramientas más sofisticadas de Static Application Security Testing (SAST) pueden encontrar desbordamientos de búfer, fallas de inyección SQL y otros problemas. Raina recomienda integrar SAST en la integración continua.
Steve Jones, defensor de DevOps en Redgate Software, afirma que las herramientas son importantes, pero "como cualquier proceso de desarrollo, asegúrese de aprender y crecer con el tiempo”. Él afirma que "es fundamental que eduque regularmente a sus desarrolladores sobre prácticas de codificación seguras y se asegure de que no permitan vulnerabilidades simples, como la inyección de SQL.
Tim Lucas, cofundador y codirector ejecutivo de Buildkite, comparte otras prácticas recomendadas. Recomienda revisar las dependencias de código abierto y de terceros para detectar vulnerabilidades y exposiciones comunes (CVE, por sus siglas en inglés). Los equipos de DevOps "nunca deben poner en producción software vulnerable”. Sugiere "usar firmas verificables para el software del proveedor, de modo que, si un proveedor se ve comprometido, su cadena de abastecimiento de seguridad no se vea comprometida”.
lkka Turunen, CTO de campo en Sonatype, está de acuerdo. "Una de las mejores prácticas es ser selectivo en la búsqueda de proyectos de software de código abierto -como en la fabricación tradicional, no todas las piezas se crean de la misma manera”. Él recomienda que "buscar proyectos que sean mantenidos por un grupo de desarrolladores comprometidos y responsables no solo aumenta la capacidad de mantenimiento de su cadena de abastecimiento de software, sino que también disminuye la deuda técnica, las modificaciones y el riesgo de seguridad”.
Estas recomendaciones son solo la punta del iceberg cuando se trata de aplicar las mejores prácticas de seguridad en el ciclo de vida del desarrollo de software, pero son requisitos previos críticos para desarrollar un pipeline de entrega segura.
2. Cree pruebas continuas en los pipelines de CI/CD
Es importante reconocer que CI/CD no solo entrega código. También es una oportunidad para adoptar pruebas de cambio a la izquierda y desarrollar una estrategia de prueba continua. Los equipos que adoptan las pruebas como un principio central pueden buscar oportunidades para validar la seguridad antes de activar los pipelines de CI/CD destinadas a implementar versiones en cualquier ambiente. Además de integrar las pruebas de seguridad SAST, los equipos deben centrarse en:
- Activación de pruebas de penetración para encontrar back doors y otras vulnerabilidades de puntos de entrada.
- Validación de controles de seguridad y autorizaciones de pruebas.
- Pruebas para OWASP Top 10 de alta gravedad con herramientas de Dynamic Application Security Testing (DAST)
La automatización de pruebas también debe tener en cuenta los pasos para remediar problemas comunes, notificaciones para alertar a los equipos correctos y procedimientos de reversión.
3. Automatice los procedimientos de seguridad de datos dentro de CI/CD
Los pipelines de CI/CD también deben usarse para automatizar los procedimientos de seguridad que tienen dependencias de código y compilación. Un área en la que centrarse es la seguridad de los datos porque los lanzamientos pueden incluir nuevas bases de datos, modelos de datos actualizados o nuevos conjuntos de datos.
Una función que a menudo se pasa por alto es la actualización de los ambientes de desarrollo y prueba con datos extraídos de los ambientes de producción. Los equipos de desarrollo deben usar datos extraídos recientemente para validar funciones y probar experiencias, además de emplear el enmascaramiento de datos para ocultar información de identificación personal y otros datos sujetos a requisitos de cumplimiento de datos.
Roman Golod, CTO y cofundador de Accelario, sugiere que "el enmascaramiento de los datos es una parte crítica de la automatización de la seguridad durante CI/CD. Los equipos de desarrollo y pruebas necesitan datos reales para garantizar que todo funcione sin problemas una vez que esté en producción, pero los sistemas que no son de producción no suelen ser lo suficientemente seguros”.
Otras técnicas incluyen el uso de datos sintéticos y virtualización de servicios. Golod agrega que "un conjunto de datos sintéticos para imitar los datos reales fortalecerá aún más la seguridad, ya que los actores de amenazas no obtienen nada si se infiltran en esa base de datos”.
Daniel Riedel, vicepresidente sénior de servicios estratégicos de Copado, agrega un punto de partida clave para los equipos DevOps. Él afirma: "conozca sus datos, específicamente las políticas de seguridad y cumplimiento que regulan esos datos. Una vez que comprenda esas políticas, trabaje con cuidado para crear un marco de automatización de seguridad fenomenal, que esté bien probado y lo cubra para las reglas y controles establecidos en esas políticas”.
4. Aplicar principios de confianza cero para asegurar el pipeline de CI/CD
¿Cómo deberían los equipos de DevOps bloquear los pipelines para que solo las personas autorizadas puedan activarlos? Grant Fritchey, defensor de DevOps en Redgate Software, tiene una recomendación: "la clave para automatizar la seguridad dentro de los pipelines de DevOps es exactamente la misma que para una buena seguridad: el principio de privilegio mínimo”, afirma Fritchey. Continúa: "si se asegura de otorgar suficientes privilegios al pipeline, la automatización de la seguridad en, alrededor y dentro de ella será simple y brindará los resultados que desea”.
Algunas prácticas básicas incluyen ocultar las claves de las API, definir credenciales de seguridad basadas en roles y proyectos en herramientas de CI/CD, así como asegurar el acceso para miembros del equipo de desarrollo remoto.
5. Valide las implementaciones integrando CI/CD con AIops y automatización de seguridad
Las responsabilidades del equipo DevOps no terminan una vez que el código se implementa en producción. Ahí es donde las inversiones en capacidad de observación y monitoreo se convierten en importantes herramientas de retroalimentación operativa. Los equipos de DevOps deben trabajar con los equipos operativos y las herramientas para responder a incidentes y reconocer cuándo la deuda técnica se convierte en un problema operativo o de seguridad.
Algunos detalles:
- Las herramientas de AIops centralizan los datos operativos, correlacionan alertas con incidentes y ayudan a automatizar la respuesta a incidentes en torno a problemas de rendimiento y confiabilidad.
- La automatización de seguridad protege contra amenazas y ataques y simultáneamente habilita automatizaciones que establecen permisos, parchado de sistemas y respuesta a incidentes de seguridad.
- Muchas herramientas de CI/CD brindan integraciones bidireccionales con AIops, automatización de seguridad y otras herramientas de automatización de TI generalizadas. Los equipos de DevOps deben activar notificaciones a estas herramientas como parte del pipeline de CI/CD para informar a las operaciones y a la seguridad de la información sobre las entregas de código. También deben permitir que las operaciones de TI y las automatizaciones de seguridad de la información activen compilaciones o reversiones para soportar las necesidades operativas y de seguridad.
El flujo de trabajo de DevOps muestra un camino continuo, desde la planificación hasta el monitoreo de las implementaciones, para garantizar que los equipos planifiquen, entreguen, lancen y ejecuten sistemas de manera confiable y segura. CI/CD es una de las principales prácticas de desarrollo, por lo que incorporar la seguridad antes, dentro y después de las canalizaciones es una responsabilidad fundamental.
Basado en el artículo de Isaac Sacolick (InfoWorld) y editado por CIO Perú