¿Qué es DevSecOps?
Obtenga información sobre cómo integrar prácticas de seguridad en cada fase del ciclo de vida de desarrollo de software en su entorno multinube.
Definición de DevSecOps
DevSecOps, que significa desarrollo, seguridad y operaciones, es un marco que integra la seguridad en todas las fases del ciclo de vida de desarrollo de software. Las organizaciones adoptan este enfoque para reducir el riesgo de publicar código con vulnerabilidades de seguridad. A través de la colaboración, la automatización y los procesos claros, los equipos comparten la responsabilidad de la seguridad, en lugar de dejarla al final cuando los problemas pueden ser mucho más difíciles y costosos de abordar. DevSecOps es un componente fundamental de una estrategia de seguridad multinube.
DevSecOps frente a DevOps
En el desarrollo de software tradicional, los proyectos se dividen en distintas fases para el planeamiento, el diseño, el desarrollo, la integración y las pruebas, que se producen de manera secuencial durante varios meses o incluso años. Aunque este enfoque es muy metódico, muchas organizaciones han detectado que es demasiado lento, lo que dificulta el cumplimiento de las expectativas de los clientes en cuanto a mejoras continuas del producto. Además, la seguridad normalmente se deja para el final, lo que pone a las empresas en riesgo de sufrir una vulneración.
Para seguir siendo competitivas, muchas empresas han adoptado un modelo de DevOps que prioriza la entrega de paquetes más pequeños de código de alta calidad en lugar de proyectos con muchas características que tardan más tiempo. En este marco, los equipos de operaciones y desarrollo de software colaboran para incorporar pruebas e integración a lo largo del proceso. La automatización, los procesos estandarizados y la colaboración ayudan a los equipos a moverse rápidamente sin sacrificar la calidad.
DevSecOps es una mejora de DevOps que integra la seguridad en todos los aspectos del proceso. El objetivo es solucionar los problemas de seguridad desde el principio del proyecto. En este marco, no solo todo el equipo asume la responsabilidad del control de calidad y la integración del código, sino también de la seguridad. En la práctica, esto significa que los equipos analizan las implicaciones de seguridad durante la planeación y comienzan a probar para detectar problemas de seguridad en entornos de desarrollo, en lugar de esperar hasta el final. Otro nombre para este enfoque es seguridad “shift left”.
¿Por qué es importante DevSecOps?
Hay muchos métodos que los atacantes usan para obtener acceso a los datos y recursos de una organización, pero una táctica común es aprovechar las vulnerabilidades de software. Estos tipos de vulneraciones son costosas, consumen mucho tiempo y dependen de la gravedad, lo que afecta a la reputación de una empresa. El marco DevSecOps reduce el riesgo de implementar software con configuraciones incorrectas y otras vulnerabilidades que los actores malintencionados pueden aprovechar.
Componentes clave de DevSecOps
Un proceso de DevSecOps correcto incluye los siguientes componentes:
-
Integración continua
Con la integración continua, los desarrolladores confirman su código en un repositorio central varias veces al día. A continuación, el código se integra y prueba automáticamente. Este enfoque permite a los equipos detectar problemas de integración y errores al principio del proceso, en lugar de esperar hasta el final cuando pueda haber varios problemas que deban resolverse.
-
Entrega continua
La entrega continua se basa en la integración continua para automatizar el proceso de mover código desde el entorno de compilación a un entorno de ensayo. Una vez en el ensayo, además de las pruebas unitarias, el software se prueba automáticamente para garantizar que la interfaz de usuario funciona, que el código se integra correctamente, que las API son confiables y que el software puede controlar los volúmenes de tráfico esperados. El objetivo de este enfoque es ofrecer de forma coherente código listo para producción que proporcione valor a los clientes.
-
Seguridad continua
La creación de seguridad en todo el ciclo de vida de desarrollo de software es un componente clave de DevSecOps. Esto incluye el modelado de amenazas al principio del proceso y las pruebas de seguridad automatizadas a lo largo de todo el ciclo de vida, empezando por los propios entornos de los desarrolladores. Al probar exhaustivamente el software en busca de problemas de seguridad de forma temprana y frecuente, las organizaciones pueden entregar de forma eficaz software con problemas mínimos.
-
Comunicación y colaboración
DevSecOps depende en gran medida de las personas y los equipos que trabajan en estrecha colaboración. La integración continua requiere que las personas colaboren para solucionar conflictos en el código, y los equipos necesitan comunicarse de forma eficaz para unificarse en torno a los mismos objetivos.
Cómo implementar DevSecOps
Agregar seguridad al proceso de DevOps requiere una planeación cuidadosa. Comience lentamente con procesos que presenten la menor fricción para el equipo y ofrezcan la mayor recompensa en términos de seguridad. Estas son algunas maneras de agregar seguridad a un sprint típico de DevOps.
-
Planeamiento y desarrollo
La introducción temprana de la seguridad en los sprints de desarrollo no solo ayuda a reducir las vulnerabilidades más adelante, sino que también ahorra tiempo porque es más fácil solucionar los problemas antes de que el código se haya compilado e integrado. Durante el planeamiento y el desarrollo, use el modelado de amenazas para identificar y mitigar posibles amenazas para la aplicación. Esto le ayudará a crear seguridad en la aplicación desde el principio. Para detectar problemas de seguridad antes de que el código se confirme en el repositorio compartido, implemente comprobaciones automatizadas, como complementos de seguridad del entorno de desarrollo integrado, que proporcionan a los desarrolladores comentarios inmediatos si hay un posible riesgo de seguridad en el código que han escrito. Durante la revisión del código, pida a alguien con experiencia en seguridad que proporcione recomendaciones para realizar mejoras.
-
Confirmación del código
Una de las claves para lograr un proceso de DevSecOps correcto es la integración continua. Normalmente, los desarrolladores confirman su código en un repositorio central varias veces al día para asegurarse de que los problemas de integración se detectan pronto. Es importante agregar comprobaciones de seguridad automatizadas a esta fase. Esto puede incluir el examen de bibliotecas y dependencias de terceros, pruebas unitarias y pruebas de seguridad de aplicaciones estáticas. También es importante implementar controles de acceso basados en roles para proteger la infraestructura de integración continua y entrega continua de atacantes que buscan ejecutar código malintencionado o robar credenciales.
-
Compilación y pruebas
La ejecución de scripts de seguridad automatizados en el entorno de prueba ayuda a descubrir posibles problemas que no se detectaron anteriormente. Algunas de las pruebas de seguridad que puede ejecutar durante esta fase incluyen pruebas de seguridad de aplicaciones dinámicas, análisis de infraestructura, análisis de contenedores, validación de la configuración en la nube y pruebas de aceptación de seguridad.
-
Producción
Una vez implementada la aplicación en producción, algunas organizaciones participan en pruebas de penetración para intentar encontrar puntos débiles en el entorno activo. En las pruebas de penetración, las personas adoptan la mentalidad de un atacante y buscan formas de vulnerar la aplicación.
-
Operación
Incluso el mejor proceso de DevSecOps no detectará todo, por lo que es fundamental supervisar continuamente las aplicaciones en busca de vulnerabilidades y amenazas. Los datos de análisis pueden ayudarle a evaluar si su posición de seguridad mejora y resalta las áreas de optimización.
-
Herramientas y tecnologías de DevSecOps
Al elegir herramientas de seguridad, es importante seleccionar aquellas que funcionen bien con la tecnología de DevOps actual. Esto facilitará la incorporación de la seguridad en todo el proceso. Estos son algunos de los tipos de herramientas que puede necesitar:
-
Análisis de la infraestructura como código
Para mejorar su eficacia, los equipos de DevSecOps suelen usar herramientas de código abierto como Terraform para administrar y aprovisionar infraestructuras como redes, máquinas virtuales y equilibradores de carga mediante código en lugar de hacerlo manualmente. Terraform ayuda a garantizar que la infraestructura se configura y actualiza de forma coherente en cientos o miles de servidores. Para reducir el riesgo de que se implementen configuraciones incorrectas en el entorno de producción, las herramientas de análisis de infraestructura como código comprueban automáticamente la infraestructura en el nivel de código en busca de incumplimiento con las directivas y estándares de seguridad.
-
Pruebas de seguridad de aplicaciones estáticas
Antes de compilar el código, los desarrolladores de DevSecOps comienzan a probar su código personalizado para detectar vulnerabilidades de seguridad. Esto les ayuda a corregir problemas sin afectar a la compilación. Las herramientas de pruebas de seguridad de aplicaciones estáticas facilitan este proceso con comprobaciones automáticas y comentarios en tiempo real. Muchas herramientas identifican exactamente qué código es de riesgo y ofrecen correcciones sugeridas.
-
Análisis de composición de software
Una manera de que los equipos compilen aplicaciones y características de forma más eficaz es mediante el uso de marcos y complementos de terceros. Estas herramientas precompiladas ahorran tiempo, pero también pueden presentar riesgos, como problemas con las licencias, código mal escrito o vulnerabilidades de seguridad. Las herramientas de análisis de composición de software identifican los componentes de código abierto en las aplicaciones y los evalúan con bases de datos privadas o de propiedad para detectar infracciones de licencias y problemas de seguridad y calidad.
-
Pruebas de seguridad de aplicaciones interactivas
Durante las pruebas de control de calidad o cuando se usa una aplicación, las herramientas de seguridad de aplicaciones interactivas examinan el código para encontrar vulnerabilidades y proporcionan informes que identifican dónde se encuentra el problema en el código.
-
Pruebas de seguridad de aplicaciones dinámicas
Las pruebas de seguridad de aplicaciones dinámicas emulan los métodos que un actor malintencionado podría usar para atacar una aplicación. Esta prueba se produce mientras se ejecuta la aplicación y se basa en casos de uso predefinidos.
-
Examen de contenedores
Los contenedores se usan ampliamente en DevSecOps porque ayudan a los desarrolladores a implementar fácilmente unidades de código independientes. Dentro de un contenedor hay una imagen de contenedor que incluye el código que ejecuta los procesos del contenedor. Sin embargo, estas imágenes a menudo se compilan con imágenes existentes o se extraen de repositorios públicos. Las herramientas de análisis de contenedores examinan los contenedores y los comparan con las bases de datos de vulnerabilidades públicas o de propiedad para descubrir posibles problemas de seguridad.
Procedimientos recomendados de DevSecOps
DevSecOps se basa tanto en un cambio de cultura como en el proceso y las herramientas. Estos son algunos procedimientos recomendados para ayudar a que la adopción de este marco sea lo más fluida posible.
-
Cambiar la cultura
Reconozca que las personas pueden tener dificultades para cambiar su forma de trabajar y que pueden surgir conflictos. Para ayudarles a adaptarse, comunique claramente los objetivos y las expectativas de la organización, proporcione muchas oportunidades de diálogo abierto y prevea que tendrá que ser flexible hasta que los equipos encuentren las herramientas, el proceso y la cadencia que mejor se adapten a ellos.
-
Definición de los requisitos y las métricas
Establezca una línea base de seguridad mínima. Para obtener instrucciones, consulte los requisitos normativos y del sector o los Diez principales riesgos críticos de Open Worldwide Application Security Project® (OWASP) para las aplicaciones web y los 25 errores principales de software de SANS. Una vez definidos los requisitos, determine las métricas de las que desea realizar un seguimiento para ayudarle a supervisar el progreso.
-
Empezar poco a poco
Las herramientas de automatización de seguridad ofrecen muchas opciones para comprobar si hay problemas en el código, pero activarlas todas, especialmente al principio de la adopción de DevSecOps, puede sobrecargar al equipo. Sea prudente sobre qué herramientas implementa y el número de problemas que busca.
-
Realizar un modelado de amenazas
Desarrolle un proceso de modelado de amenazas, que puede ser tan sencillo o tan detallado y técnico como necesite. Use este enfoque para documentar una vista de seguridad realista de la aplicación que incluya:
- Cómo los atacantes pueden abusar del diseño de la aplicación.
- Cómo corregir vulnerabilidades.
- Prioridad de los distintos problemas.
-
Implementación de la automatización
La automatización es clave para habilitar la calidad y la velocidad en el proceso de DevSecOps. Al insertar exámenes de seguridad automatizados durante todas las fases del ciclo de vida de integración continua y entrega continua, podrá mejorar la seguridad de las aplicaciones sin ralentizar significativamente el proceso.
-
Administración de dependencias
La mayoría de los desarrolladores usan bibliotecas y paquetes de terceros para compilar las aplicaciones de forma eficaz. El problema es que algunas de estas soluciones tienen errores de seguridad y los desarrolladores no siempre son cuidadosos a la hora de mantenerlas actualizadas. Para reducir el riesgo, asegúrese de que los componentes que usa estén validados para buscar riesgos de seguridad y desarrolle un proceso estandarizado para actualizarlos.
-
Evaluación y mejora
Evalúe periódicamente cómo funciona el proceso y ajústelo según sea necesario para asegurarse de que su organización cumple sus objetivos. Un mensaje libre de culpas después de la finalización de un sprint puede ayudar a descubrir oportunidades de mejora. Los datos de análisis y la inteligencia sobre amenazas también pueden ayudarle a determinar si su enfoque actual no satisface las necesidades de seguridad.
-
DevSecOps para aplicaciones nativas de nube
Las aplicaciones nativas de nube están diseñadas para la nube y suelen ser neutras con respecto al proveedor, lo que permite portarlas de una nube a otra. Diseñadas para ser altamente escalables y resistentes, los equipos de desarrollo suelen compilarlas mediante microservicios, contenedores y automatización, lo que las hace idóneas para un proceso de DevSecOps. La creación de seguridad continua, integración continua y entrega continua en el proceso de desarrollo para aplicaciones nativas de nube permite la escalabilidad sin poner en peligro la seguridad. Use soluciones de seguridad automatizadas, como Microsoft Defender para DevOps, para ayudarle a proteger el código y toda la canalización de DevOps. Una vez que haya implementado la aplicación en la nube, siga supervisando para detectar riesgos. Las plataformas de protección de cargas de trabajo en la nube (CWPP) ayudan a proteger estas aplicaciones y los datos subyacentes mediante la detección y mitigación de amenazas para las cargas de trabajo en entornos multinube. Las soluciones de administración de la posición de seguridad en la nube (CSPM) detectan y abordan errores de configuración y vulnerabilidades en todo el entorno.
Obtener más información sobre la Seguridad de Microsoft
Microsoft Defender for Cloud
Proteja entornos multinube e híbridos desde el desarrollo hasta el tiempo de ejecución con una plataforma de protección de aplicaciones nativas de nube.
Microsoft Defender for Cloud Apps
Modernice cómo proteger las aplicaciones y los datos, y cómo mejorar la posición de seguridad de las aplicaciones con esta solución de software como servicio.
Administración de la posición de seguridad de Microsoft Defender for Cloud
Céntrese en los riesgos más críticos en el entorno multinube con la administración contextual de la posición de seguridad en la nube.
Microsoft Defender para DevOps
Obtenga una administración de seguridad de DevOps unificada en los entornos multinube y de varias canalizaciones.
Preguntas más frecuentes
-
DevSecOps es un proceso que integra la seguridad en todo el ciclo de vida de desarrollo de software. Las organizaciones adoptan este enfoque para reducir el riesgo de publicar código con vulnerabilidades de seguridad. A través de la colaboración, la automatización y los procesos claros, los equipos comparten la responsabilidad de la seguridad, en lugar de dejarla al final cuando los problemas pueden ser mucho más difíciles y costosos de abordar.
-
DevSecOps significa desarrollo, seguridad y operaciones. Hace referencia al proceso de integración de la seguridad en todas las fases de desarrollo de software.
-
“Shift left” es un concepto de DevSecOps que hace referencia a la incorporación de prácticas de seguridad desde el principio del proceso de desarrollo.
-
El marco DevSecOps incluye integración continua, entrega continua y seguridad continua. Es un método por el que la seguridad, las operaciones y los equipos de seguridad trabajan juntos y comparten la responsabilidad de entregar rápidamente software de calidad, a la vez que reducen las vulnerabilidades de seguridad.
-
No hay un único proceso de DevSecOps, pero una manera común de que los usuarios ejecuten estos proyectos es dividir el trabajo en sprints, cada uno de los cuales incluye los siguientes componentes: planeamiento y desarrollo, compilación y prueba, y producción. A lo largo del sprint, los equipos usan la automatización para abordar continuamente problemas de control de calidad, integrar continuamente y probar continuamente para detectar riesgos de seguridad.
Seguir a Seguridad de Microsoft