DevSecOps en AWS
Last updated
Was this helpful?
Last updated
Was this helpful?
Hace más de una década, durante mis estudios universitarios trasnoché bastante aprendiendo sobre el desarrollo de software desde Perl, pasando por C hasta Java, más adelante trabajé en algunos proyectos con código, incluyendo un Bootcamp en Web y PHP. Sin embargo, al especializar mi carrera hacia la seguridad de la información, me alejé un poco del mundo del software. Más adelante, aprendí sobre la importancia de las prácticas de DevOps, pero me encantó cuando me encontré hace menos de un par de años que se incluyó la seguridad en el nuevo término DevSecOps, lo cual es una perfecta intersección en mi carrera.
DevOps es un término que se utiliza para describir la metodología de trabajo que busca mejorar la colaboración y la comunicación entre los equipos de desarrollo de software y los de operaciones de TI (Tecnología de la Información). El objetivo principal de DevOps es acelerar el ciclo de vida de desarrollo de software, permitiendo a los equipos de desarrollo lanzar nuevas versiones de software más rápidamente, mientras que los equipos de operaciones mantienen el software en producción de manera confiable y estable.
DevSecOps es una extensión de la metodología de trabajo DevOps, que incluye la seguridad como una parte integral de todo el ciclo de vida de desarrollo de software (SDLC). Se agrega un tercer equipo, el equipo de seguridad, para asegurar que los productos y servicios de software sean seguros y estén protegidos contra posibles ataques.
AWS tienen muchos servicios para facilitar la implementación de DevSecOps. Se ofrece una amplia gama de servicios, como por ejemplo:
AWS CodePipeline: Permite automatizar la entrega y la integración continuas de aplicaciones. Los desarrolladores pueden utilizar CodePipeline para automatizar el proceso de construcción, pruebas y despliegue de sus aplicaciones.
AWS CodeCommit: Proporciona un sistema de control de versiones para los desarrolladores. Los desarrolladores pueden utilizar CodeCommit para almacenar y administrar el código fuente de sus aplicaciones de manera segura.
AWS CodeBuild: Proporciona un entorno de compilación en la nube para los desarrolladores. Los desarrolladores pueden utilizar CodeBuild para compilar y probar su código en un entorno seguro y controlado..
AWS Identity and Access Management (IAM): Proporciona herramientas para gestionar el acceso a los recursos de AWS. Los equipos de seguridad pueden utilizar IAM para gestionar el acceso a los recursos de AWS de manera segura y controlada.
AWS Security Hub: Este servicio proporciona una vista centralizada de la seguridad y el cumplimiento de las aplicaciones y los recursos de AWS. Los equipos de seguridad pueden utilizar Security Hub para identificar y remediar las vulnerabilidades y los problemas de seguridad en tiempo real.
Para los contenedores, se utiliza AWS ECR como registro para hacer “push” de las imágenes construidas de EasyBuggy.
Para el despliegue se utiliza un clúster de Kubernetes en AWS EKS, con AWS se hace mucho más fácil crear el clúster y desplegar las imágenes desde ECR. Para la creación del clúster se utiliza CloudFormation, el cual se encarga de crear todo lo necesario, incluyendo los nodos el control plane, etc.
Para DAST (pruebas dinámicas), se utiliza la versión de línea de comandos de OWASP ZAP, se obtiene la URL de EKS y se genera un reporte en HTML con las vulnerabilidades.
Mi repo final está aquí.
Este es solo una introducción práctica a cómo se puede integrar seguridad en el pipeline y una demostración de algunas herramientas que nos ayudan a identificar vulnerabilidades en las distintas etapas del SDLC.
En DevSecOps, los equipos de seguridad utilizan herramientas y prácticas específicas como las mencionadas aquí para identificar y mitigar posibles riesgos de seguridad, y para promover que los requisitos de seguridad se cumplan a lo largo de todo el proceso. De esta manera, se minimiza el riesgo de brechas de seguridad y otros incidentes informáticos.
Más información .
En varios entrenamientos encontré distintas formas de practicar cómo asegurar las etapas del desarrollo de software, pero una de mis favoritas fue de la mano de , ya que integra ejercicios muy claros para crear un pipeline que automatice desde las pruebas de seguridad hasta el despliegue en Kubernetes, incluyendo el reporte de vulnerabilidades en Jira. A continuación, lo explicaré brevemente:
El objetivo es entender todas cómo implementar seguridad en todas las etapas del SDLC de una imagen modificada de un app muy vulnerable y con malas practicas de desarrollo como lo es por k-tamura.
En el original, se encuentran las instrucciones para adaptar la creación de la Infraestructura requerida utilizando Terraform, donde se crea la instancia EC2 con Jenkins. Lo importante está en la ejecución del script install_jenkins.sh, donde se instalan las dependencias y herramientas requeridas. Se recomienda utilizar una instancia t2.xlarge para tener buen rendimiento.
Luego, se realiza la integración con Sonar Cloud. Se debe crear una cuenta e instalar los plugins requeridos. En el original se puede observar el Jenkinsfile, donde se especifican los datos de la cuenta de Sonar Cloud. Una vez finalizado el build se pueden ver los hallazgos.
El pipeline también se integra con , un proveedor que ofrece servicios de SAST (análisis estático) y SCA (análisis de componentes). Se pueden hacer escaneos gratuitos bajo algunas condiciones.
Conceptos generales - OpenAI GPT -
The Phoenix Project - Book -
AWS DevSecOps -
Dzone -
DevSecOps Tools -
A Sec Guru on Udemy [Recomendado] -