DEV Community

Cover image for Desarrolla de forma segura, aplicando DevSecOps
Andrea Liliana Griffiths for GitHub

Posted on

Desarrolla de forma segura, aplicando DevSecOps

Las soluciones de seguridad de aplicaciones tradicionales están diseñadas como soluciones independientes y se atornillan a las herramientas y procesos de desarrollo como una idea de último momento.

Con GitHub DevSecOps puedes incorporar medidas de seguridad para tu código de manera íntegra, acelerando la manera como ejecutas tus proyectos, reduciendo el esfuerzo de seguridad y en un entorno que te permite evolucionar continuamente.

seguridad

DevSecOps

Las prácticas objetivas de DevSecOps se pueden resumir en tres pilares: "shift left", mejorar la observabilidad y ampliar la responsabilidad compartida.

pilares de seguridad

Shift left o seguridad a la izquierda significa que movemos la mayor parte de nuestro proceso en el ciclo de desarrollo.

Cuanto antes identifiquemos las configuraciones malas o una vulnerabilidad, más fácil será remediarlo.

Como aplicar principios DevSecOps en tu ciclo de desarrollo

En todas las etapas de desarrollo, es esencial tomar decisiones considerando la seguridad de tus aplicaciones primero que todo, esto lo puedes hacer por medio de varios ejercicios y utilizando herramientas, por ejemplo:

1. Modelado de amenazas (Threat Modelling)

Incorporando el modelado de amenazas en tu ciclo de desarrollo, colaborando con los equipos de seguridad; facilita que puedan, ayudar a guiar/identificar diseños de sistemas que podrían presentar vulnerabilidades futuras.

Para aprender más acerca de estos modelos, consulta las siguientes herramientas gratuitas:

  • OWASP Threat Dragon
    Una aplicación web de modelado de amenazas en línea que incluye diagramas de sistemas y un motor de reglas para generar automáticamente amenazas / mitigaciones.

  • Microsoft Threat Modeling Tool
    Microsoft Threat Modeling Tool 2016 es una herramienta que ayuda a encontrar amenazas en la fase de diseño de proyectos de software.

  • Threatspec
    Un proyecto de código abierto que tiene como objetivo cerrar la brecha entre el desarrollo y la seguridad al llevar el proceso de modelado de amenazas aún más al proceso de desarrollo.

  • Threagile
    Threagile es un kit de herramientas de código abierto para el modelado ágil de amenazas.

2. Reducción de la superficie de ataque (Attack Surface Reduction)

Evaluando la superficie de ataque históricamente ha sido una responsabilidad de los especialistas en seguridad; sin embargo, como desarrollador, entender estos conceptos y aprender a monitorearlos te ayuda a:

  • Identificar qué funciones y qué partes del sistema necesita revisar/probar para detectar vulnerabilidades de seguridad.

  • Identificar áreas de código de alto riesgo que requieren protección de defensa en profundidad: qué partes del sistema necesita defender.

  • Limitar las oportunidades para los cibercriminales.

Están son algunas técnicas que puedes aplicar para reducir la superficie de ataque:

  • Asume confianza cero.

  • Controla el acceso a tus repositorios para configurar quién puede ver y modificar el código.

  • Mantén tus dependencias actualizadas con la ayuda de Dependabot.

Activa la gráfica de dependencias

"Dependency Graph" te ayuda a comprender las dependencias de tus proyectos: Tener un inventario, de qué dependencias usa, conocer las vulnerabilidades en esas dependencias, y remediarlas.

Las alertas de seguridad para dependencias vulnerables te "alertan" cuándo una de ellas contiene una vulnerabilidad
y las actualizaciones de seguridad de Dependabot te envían una solicitud de extracción para sugerir automáticamente una actualización a una versión fija.

3. Escaneo de Codigo (Code Scanning)

Escaneo de código es una característica que puedes utilizar para analizar el código en un repositorio de GitHub para encontrar vulnerabilidades de seguridad y errores de código. Cualquier problema que se identifique con el análisis se muestra en GitHub.

Puedes emplear escaneo de código para encontrar, clasificar y priorizar los arreglos a problemas existentes en tu código. Escaneo de código también previene a los desarrolladores de introducir nuevos problemas.

En GitHub tienes la flexibilidad de programar días y horas específicos para los escaneos, o activarlos cuando ocurra un evento específico en el repositorio, tal como una carga de información.

Puedes configurar escaneo de código agregando un flujo de trabajo pre-desarrollado a tu repositorio, y es gratuito para repositorios públicos.

El siguiente es un ejemplo de como establecer un flujo de trabajo pre-desarrollado para escanear tu repositorio:

  1. En GitHub.com, visita la página principal del repositorio.

  2. Debajo de tu nombre de repositorio, haz clic en Acciones.

Pestaña de acciones en la navegación del repositorio principal<br>

  1. Si el repositorio ya tiene al menos un flujo de trabajo configurado y en ejecución, haz clic en Nuevo flujo de trabajo y vaya al paso 5. Si actualmente no hay flujos de trabajo configurados para el repositorio, vaya al paso siguiente.

Captura de pantalla del botón Nuevo flujo de trabajo

  1. Desplácese hacia abajo hasta la categoría "Seguridad" y haz clic en Configurar en el flujo de trabajo que desea configurar, o haz clic en Ver todo para ver todos los flujos de trabajo de seguridad disponibles.

Captura de pantalla de la sección de seguridad de flujos de trabajo de acciones

  1. En el panel derecho de la página del flujo de trabajo, haz clic en Documentación y siga las instrucciones que aparecen en pantalla para adaptar el flujo de trabajo a sus necesidades.

Captura de pantalla de la ficha Documentación para flujos de trabajo de inicio

Opcionalmente, puedes gestionarlo de manera manual

Finalmente, DevSecOps no funciona a menos que tengamos una responsabilidad compartida por la seguridad.
"Shift left" acerca las consideraciones de seguridad a tu ciclo de desarrollo.

Al fin del día todos somos responsables por la seguridad.

¿Utilizas alguna práctica para asumir seguridad de tu código? Compártelas en los comentarios.

Discussion (0)