Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
DevSecOps: Desafío o aliado del Líder de Seguridad hacia la
Transformación Digital
Javier Galindo Ortegón
Agenda
• Contexto
• DevOps
• Desarrollo de software Seguro
• DevSecOps: ¿Cómo integrar seguridad dentro de DevOps?
• Conclusiones
• Preguntas
Contexto
Information Security
Professionals: ¿Do You Believe Your
Information Security
Policies/Teams Are Slowing IT Down?
Gartner (September 2016) DevSecOps: How to Seamlessly Integrate Security Into DevOps
IT Operations Professionals:
¿Do You Believe Your Information
Security Policies/Teams Are Slowing IT
Down?
Gartner (September 2016) DevSecOps: How to Seamlessly Integrate Security Into DevOps
Realidades
Verizon Breach Report 2016Gartner Forecast 2016
Los sitios y las aplicaciones web son uno de los
objetivos principales de cibercrimen.
Un atacante sólo necesita explotar una
vulnerabilidad, en un día determinado, para lograr
hacer daño.
Pese a esto, solo el 10% de la organizaciones prueba
sus aplicaciones críticas de negocio antes y después de
desplegarlas
De las brechas de seguridad están causados por
aplicaciones web.
Solo se invierte el 1% de seguridad TI en
asegurar las aplicaciones.
40%
de todos los sitios web, tienen al menos una
vulnerabilidad seria, que está expuesta cada día
del año.33%
De las aplicaciones web usan administración de
credenciales (Contraseñas fuertes).35%
Realidades
Veracode State of Software Security Report 2016Verizon Data Breech and Incident Report 2016
Los sitios y las aplicaciones web son uno de los
objetivos principales de cibercrimen.
De las aplicaciones son vulnerables a ataques de
redirección que permiten a los atacantes remotos
redirigir a los usuarios a otros sitios web.28%
de las aplicaciones web no cumplen con OWASP
Top 10 al primer paso61%
De las aplicaciones no cumplió con las políticas
empresariales de seguridad en la primera revisión.70%
De las aplicaciones Java contienen una
vulnerabilidad conocida, módulos open-source y de
terceros61%
Seguridad en iniciativas de DevOps
• Para 2019, más del 70% de las iniciativas empresariales en torno a DevOps tendrán incorporados mecanismos de escaneo automático de vulnerabilidades de seguridad y configuración para componentes de código abierto y paquetes comerciales.
• Para 2019, más del 50% de las iniciativas empresariales en torno a DevOps tendrán incorporados mecanismos de pruebas de seguridad para código desarrollado.
• Para 2019, más del 60% de iniciativas DevOps habrán adoptado el control de versiones y la administración estricta de las herramientas de automatización de infraestructura.
Gartner (September 2016) DevSecOps: How to Seamlessly Integrate Security Into DevOps
DevOps
Entrega más frecuente y consistente de servicios de IT y aplicaciones de alta calidad a los usuarios finales.
OBJETIVO DevOps
¿Qué es DevOps? – Forma de pensamiento
DevOps es una agregación de un conjunto de prácticas colaborativas…
que influencian el desarrollo de IT, el equipo de gestión de servicios y el equipo de pruebas…
para que unan esfuerzos…
para entregar más frecuente y consistentemente servicios de IT y aplicaciones…
de alta calidad a los usuarios finales.
La clave para que los equipos de IT generen, apoyen y
soporten la transformación digital está en poder adoptar y
adaptarse a la forma de trabajo “modo DevOps”
DevOps - Proceso y Herramientas para Automatización
BU
ILD
OP
ER
AT
E
MONITORTEST
CODE DEPLOY
BU
ILD
OP
ER
AT
E
MONITORTEST
CODE DEPLOY
Iniciativas para mejorar la oportunidad y calidad de software – DevOps
BU
ILD
OP
ER
AT
E
MONITORTEST
CODE DEPLOY
Integración continua y construcción automática de instaladores
Integración continua y
construcción automática de
instaladores
BU
ILD
OP
ER
AT
E
MONITORTEST
CODE DEPLOY
Automatización de despliegues
BU
ILD
OP
ER
AT
E
MONITORTEST
CODE DEPLOY
Generación de Ambientes Dinámicos (dockerización)
Gestión del Ciclo de Vida de Desarrollo (Reqs → Release)
BU
ILD
OP
ER
AT
E
MONITORTEST
CODE DEPLOY
Gestión del Ciclo de Vida de Desarrollo (Reqs→ Release)
BU
ILD
OP
ER
AT
E
MONITORTEST
CODE DEPLOY
Automatización de pruebas:Automatización de casos de prueba
Generación de datos de pruebasVirtualización de servicios.
Automatización de pruebas
BU
ILD
OP
ER
AT
E
MONITORTEST
CODE DEPLOY
Seguridad en el Proceso de
Desarrollo
Seguridad en el Proceso de Desarrollo
BU
ILD
OP
ER
AT
E
MONITORTEST
CODE DEPLOY
Monitoreo de Negocio
(Ops)
Monitoreo de Negocio - (Ops)
Iniciativas para mejorar la oportunidad y calidad de software – DevOps
• Definición de lineamientos de arquitectura para DevSecOps.
• Selección e Implementación de herramientas.
• Sensibilización, definición y ajuste de procesos de software.
• Definición de procedimientos de automatización.
• Entrenamiento (Conceptos y herramientas).
Gestión del Ciclo de Vida de Desarrollo (Reqs → Release)
BU
ILD
OP
ER
AT
E
MONITORTEST
CODE DEPLOY
Automatización de despliegues
Generación de Ambientes Dinámicos
(dockerización)
Automatización de pruebasAutomatización de casos de prueba
Generación de datos de pruebasVirtualización de servicios.
Monitoreo de Negocio
(Ops)
Seguridad en el Proceso de Desarrollo
Integración continua y
construcción automática de
instaladores
Desarrollo de Software Seguro
Mientras más temprano se detecte un problema, menos costoso en tiempo y esfuerzo será solucionarlo y menor será el
impacto sobre los proyectos de software.
Revisiones de pares
• Requerimientos
• Arquitectura
- Análisis estático de
código / Adherencia:
• PCI
• OWASP
• CWE/SANS
• Pruebas de
penetración estática y
dinámica
Proceso de Desarrollo Seguro con puntos de control
Requerimientos de Seguridad
Cuáles son los requerimientos para:
Confidencialidad
Integridad
Disponibilidad
Autenticación
Autorización
Auditoría
Manejo de sesión
Manejo de errores y excepciones
Manejo de parámetros de configuración
Archivo/Almacenamiento de información
Entorno de despliegue
Antipiratería
Diseño de mecanismos de Seguridad
• Confidencialidad → ¿Criptografía ?• Integridad → ¿Hashing?• Autenticación → ¿SSO?• Auditoría → ¿Syslog / Base de
Datos?• Manejo de sesión → ¿Expiración
de sesión?• Manejo de errores y excepciones → ¿Enmascaramiento?
• Manejo de parámetros de configuración → ¿Prevención de modificación no autorizada?
Proceso de Desarrollo Seguro con puntos de control
Punto de control
Revisiones de pares
• Requerimientos, incluyendo
los de seguridad
• Arquitectura
• Casos de prueba de
seguridad
• Trazabilidad entre casos de
prueba y requerimientos de
seguridad
Implementación y Codificación segura
• Reglas de seguridad independiente del lenguaje
• Guías de código seguro• Top 10-OWASP
• CWE/SANS 25
• HIPAA
• Manejo adecuado de versiones
• Análisis de código
• Revisiones de pares automatizadas
Punto de control
- Análisis estático de código
- Verificación de adherencia de
seguridad
• PCI
• OWASP
• CWE/SANS
• Políticas de cubrimiento
de código
- Creación y Ejecución continua
y automática de casos de
prueba
Proceso de Desarrollo Seguro con puntos de control
Pruebas seguras
• Adicional a las tradicionales• Funcionales, Unitarias,
Integración, Regresión
• Pruebas de funciones de seguridad vs. Pruebas seguras• Validación de entradas
• Inyección de código (SQL, LDAP, etc.)
• Fallas de sistema
• Herramientas • Escáneres de vulnerabilidades
• Analizadores de protocolos
• Análisis de código estático y dinámico
Punto de control
- Ejecución de pruebas
Funcionales de
seguridad
- Ejecución continua y
automática de casos de
prueba manuales y de
código
- Pruebas de penetración
estática y dinámica
Proceso de Desarrollo Seguro con puntos de control
Aceptación de software
• Típicamente realizada por el cliente final• Software completo, documentado• Validar si la solución se debe incluir en el BCP• Evaluar proveedores, incluyendo su proceso de desarrollo seguro,
certificaciones de seguridad, etc.• Mecanismos legales, manejo de garantías, patentes y/o derechos
de autor• Exigir cumplimientos de SLAs• Verificaciones y validaciones de terceros (a nivel de seguridad de
las aplicaciones)
Proceso de Desarrollo Seguro con puntos de control
Punto de control
- Pruebas de aceptación
funcional del cliente
Despliegue Seguro
• Hardening de infraestructura
• Configuración de entorno / parámetros de configuración
• Monitoreo de actividades de uso de aplicaciones
• Gestión de incidentes
• Aplicación de parches para aplicativos
Punto de control
- Pruebas no funcionales
- Pruebas de penetración
estática y dinámica
Punto de control
Proceso de Desarrollo Seguro con puntos de control
DevSecOps: ¿Cómo integrarseguridad dentro de
DevOps?
¿Qué es DevSecOps?
• Es un método para construir seguridad en la entrega continua de software como parte del proceso DevOps.
• Es un paso adelante para eliminar los cuellos de botella y los procesos que bloquea.
• Es un medio para ara ayudar a los equipos de DevOps a comprender cómo crear software seguro y comprender cuándo se está explotando de una forma que no se pretendía.
• Aborda la seguridad con un enfoque en la innovación y la escalabilidad al mismo tiempo que involucra la seguridad más cerca del código fuente de aplicaciones, clientes, desarrolladores y DevOps.
Fuente: http://www.devsecops.org/
Retos principales
• El cumplimiento de DevOps es una de las principales preocupaciones de los líderes de TI, pero la seguridad de la información se considera un inhibidor de la agilidad de DevOps.
• La infraestructura de seguridad se ha rezagado en "software definido" y programable, lo que dificulta la integración de los controles de seguridad en los flujos de trabajo de estilo DevOps de una manera automática y transparente.
• Las aplicaciones modernas están en gran parte "ensambladas", no desarrolladas y los desarrolladores a menudo descargan y usan los componentes y frameworks que tienen vulnerabilidades conocidas.
DevSecOps – Claves para eléxito
• Detectar y resolver problemasde seguridad rápidamente
• Usar capacidades de seguridadnativas cuando sea posible
• Alistar y habilitar la organización
• Educando a la par de ir implementando
https://github.com/devsecops/devsecops/blob/master/01_What_is_DevSecOps.md
Integración continua – Versión DevSecOps
Orquestador
Checkout desde repositorio
CompilaRevisa Código
(Seguridad y Confiabilidad)
Portal de revisión de
código
Crea instaladores
Crea la Infraestructura (Dockeriza)
Infraestructura
Despliega
231
567
Ejecuta Pruebas funcionales automáticas
84
ReportaRepositorio de
despiegues 9
Beneficios
• Mejora la oportunidad en la generación de soluciones al negocio
• Libera talento técnico gracias a la automatización
• Control sobre de los activos de software dentro de la organización y no en proveedores
• Reduce riesgos y tiempos en la generación de software
• Reduce procesos repetitivos manuales
• Crea una versión de software mediante un proceso conocido, confiable, probado, versionado y repetible
• Mejora la visibilidad del estado del proyecto
• Incorpora la seguridad dentro del proceso de desarrollo
Recomendaciones
Recomendaciones
• Los controles de seguridad deben ser programables y automatizados siempre que sea posible
• Use IAM y control de acceso basado en roles para proporcionar separación de funciones
• Implementar un modelo simple de riesgo y amenaza para todas las aplicaciones
• Escanear código desarrollado, aplicaciones y APIs
• Escanear en desarrollo librerías Open Source
Recomendaciones
• Los controles de seguridad deben ser programables y automatizados siempre que sea posible
• Use IAM y control de acceso basado en roles para proporcionar separación de funciones
• Implementar un modelo simple de riesgo y amenaza para todas las aplicaciones
• Escanear código desarrollado, aplicaciones y APIs
• Escanear en desarrollo librerías Open Source
Recomendaciones
• Escanear vulnerabilidades y corregir la configuración en desarrollo
• Tratar Scripts / Plantillas / Layers como si fuera código sensible
• Medir la integridad de los sistemas y asegurarse que la configuración sea correcta/segura
• Bloquear cambios a infraestructura y servicios de producción
• Si se utilizan contenedores, reconocer y abordar las limitaciones de seguridad que tiene la tecnología adoptada.
Conclusiones
Recomendaciones finales - Arquitectos de seguridad de la información deberían:
• Iniciar con entrenamiento en desarrollo Seguro, pero no hagan que los desarrolladores se conviertan en expertos!
• Adoptar el concepto de seguridad centrada en las personas y empoderen a los desarrolladores para que asuman de forma personal la responsabilidad de la seguridad. Acepte la mentalidad de "confiar y verificar".
• Requerir que todas las plataformas de seguridad de la información involucradas en el proceso de desarrollo expongan la funcionalidad completa mediante API para la automatización.
• Utilizar herramientas y control de versiones comprobados para todo el software, tan importante como para todos los scripts, plantillas utilizados en entornos DevOps.
• Adoptar una mentalidad de infraestructura inmutable donde los sistemas de producción se bloquean y cambian a través del desarrollo.
Conclusiones
• La seguridad NO ES UN MÓDULO!
• La seguridad debe estar contenida comoparte integral del ciclo de vida de desarrollode software
• Se debe entrenar / concientizar a losmiembros del equipo de desarrollo (analistas,desarrolladores, QA) con respecto al aportede cada uno a la seguridad del proceso
• Revisión de código → exigencia futura? para la adquisición de desarrollos.
Preguntas
Mientras más temprano se detecte un problema, menos costoso en tiempo y esfuerzo será solucionarlo y menor será el impacto sobre los proyectos
de software.
Javier Galindo