Introducción
Las prácticas de DevOps permiten a los equipos de desarrollo implementar aplicaciones con mayor rapidez y frecuencia. Sin embargo, la velocidad sin seguridad crea riesgos. Avanzar rápidamente hacia una vulnerabilidad de seguridad no ayuda a su empresa. El desafío es mantener la velocidad a la vez que garantiza que las aplicaciones permanezcan seguras durante su ciclo de vida.
El desafío de seguridad en el desarrollo moderno
Los equipos de DevOps tienen acceso a una infraestructura sin precedentes y escalado a través de plataformas en la nube. Esta accesibilidad ofrece oportunidades, pero también expone a las organizaciones a amenazas de seguridad sofisticadas. Cada implementación de aplicaciones podría arriesgar la seguridad empresarial, los datos de los clientes y la reputación de la organización.
Los enfoques de seguridad tradicionales producen errores en entornos modernos: Los modelos de seguridad basados en perímetro que protegen los centros de datos con firewalls y controles de red no se traducen en entornos de nube distribuidos. Las aplicaciones abarcan varios servicios, regiones y proveedores de nube. Los flujos de datos entre microservicios, API e integraciones externas. El enfoque tradicional de castillo y foso ya no ofrece una protección suficiente.
La seguridad moderna requiere varias capas de defensa: Las organizaciones deben adoptar la seguridad en varios niveles, incluido el código de aplicación, la infraestructura, la red, los datos y la identidad. La seguridad no puede existir como un único punto de control. Debe integrarse en toda la arquitectura con múltiples oportunidades para detectar y prevenir amenazas.
El enfoque de DevSecOps
¿Cómo se asegura de que las aplicaciones sean seguras y se mantengan seguras con la integración continua y la entrega continua? ¿Cómo puede encontrar y corregir problemas de seguridad al principio del proceso de desarrollo? La respuesta se encuentra en las prácticas a las que se suele denominar DevSecOps.
Seguridad como responsabilidad compartida: DevSecOps incorpora equipos de seguridad y sus funcionalidades en las prácticas de DevOps, lo que hace que la seguridad sea responsabilidad de todos los usuarios del equipo en lugar de una función independiente. Los desarrolladores, ingenieros de operaciones y especialistas en seguridad colaboran durante todo el ciclo de vida de desarrollo.
Desplazar la seguridad a la izquierda: La seguridad debe pasar de ser una idea tardía evaluada al final del desarrollo a ser una consideración en cada etapa del proceso. Este enfoque de "desplazamiento a la izquierda" detecta problemas de seguridad en las etapas iniciales, cuando son más fáciles y menos costosos de corregir. Una vulnerabilidad encontrada durante la revisión de código cuesta mucho menos de una detectada en producción.
Seguridad como proceso continuo
La protección de aplicaciones es un proceso continuo que abarca varias áreas:
Infraestructura segura: Basarse en bases seguras, incluidos los sistemas operativos protegidos, las redes configuradas correctamente, el almacenamiento cifrado y la administración segura de identidades.
Arquitectura con seguridad superpuesta: Diseñe aplicaciones con seguridad integradas en la arquitectura. Implemente la defensa en profundidad con varias capas de seguridad, por lo que si se produce un error en un control, otros siguen siendo eficaces.
Validación continua de seguridad: Automatice las pruebas de seguridad en toda la canalización. Ejecute exámenes de seguridad, evaluaciones de vulnerabilidades y comprobaciones de cumplimiento como parte de la integración e implementación continuas.
Supervisión y respuesta: Supervise las aplicaciones en producción para detectar amenazas de seguridad y comportamiento anómalo. Responda rápidamente a los problemas detectados con la corrección automatizada siempre que sea posible.
Enfoque de seguridad holístico: La seguridad es responsabilidad de todos los usuarios y debe abordarse holísticamente en todo el ciclo de vida de la aplicación desde el diseño inicial a través de la operación de producción y la eventual retirada.
Lo que trata este módulo
En este módulo se presentan los conceptos y procedimientos de DevSecOps que integran la seguridad a lo largo del ciclo de vida de desarrollo:
Vulnerabilidades comunes: Obtendrá información sobre los ataques por inyección de CÓDIGO SQL, una de las vulnerabilidades de seguridad más frecuentes y peligrosas. Comprender cómo funcionan estos ataques ayuda a evitarlos en las aplicaciones.
Principios de DevSecOps: Comprenderá cómo DevSecOps difiere de los enfoques de seguridad tradicionales y cómo integrar prácticas de seguridad en los flujos de trabajo de DevOps existentes sin sacrificar la velocidad de desarrollo.
Seguridad de canalización: Detectará puntos de validación críticos en la canalización de CI/CD donde se deben realizar comprobaciones de seguridad. Aprenda a implementar pruebas de seguridad automatizadas que detectan vulnerabilidades antes de llegar a producción.
Modelado de amenazas: Aprenderá enfoques sistemáticos para identificar, evaluar y priorizar amenazas de seguridad. El modelado de amenazas le ayuda a centrar los esfuerzos de seguridad en los riesgos más significativos para las aplicaciones y las empresas.
Análisis de seguridad automatizado: Explorará herramientas como GitHub CodeQL que proporcionan análisis de seguridad automatizados. Estas herramientas examinan el código para detectar vulnerabilidades y patrones de seguridad, lo que le permite encontrar problemas al principio sin revisiones de seguridad manuales para cada cambio de código.
Aceleración de los equipos de seguridad: Las canalizaciones de integración e implementación continuas pueden acelerar realmente el trabajo de los equipos de seguridad mediante la automatización de comprobaciones repetitivas de seguridad y la mejora de la colaboración con los equipos de desarrollo de software. Los equipos de seguridad pueden centrarse en amenazas complejas en lugar de revisar manualmente los cambios rutinarios.
Objetivos de aprendizaje
Después de completar este módulo, podrá:
- Identifique y comprenda los ataques por inyección de CÓDIGO SQL y su impacto en la seguridad de las aplicaciones.
- Explicar los principios de DevSecOps y cómo se integra la seguridad a lo largo del ciclo de vida de desarrollo.
- Implemente la validación de seguridad en los puntos clave de la canalización de DevOps.
- Realice el modelado de amenazas para identificar y priorizar los riesgos de seguridad.
- Use GitHub CodeQL para el análisis automatizado de seguridad y la detección de vulnerabilidades.
Prerrequisitos
- Descripción de los conceptos y prácticas de DevOps.
- Familiaridad con la integración continua y las canalizaciones de implementación continua.
- Conocimientos básicos sobre el desarrollo de aplicaciones y los conceptos de seguridad comunes.
- Experiencia con sistemas de control de versiones como Git.
- Beneficioso para tener experiencia en una organización que entrega software.