DevSecOps en AWS

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.

¿Qué es DevOps y DevSecOps?

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.

Servicios en AWS para DevSecOps

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.

Más información aquí.

Creando un Pipeline de Laboratorio

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 Raghu, 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 EasyBuggy por k-tamura.

En el repo 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.

GitHub Repo
AWS EC2 Instance

Luego, se realiza la integración con Sonar Cloud. Se debe crear una cuenta aquí e instalar los plugins requeridos. En el repo 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.

SonarCloud

El pipeline también se integra con Snyk, 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.

Para los contenedores, se utiliza AWS ECR como registro para hacer “push” de las imágenes construidas de EasyBuggy.

AWS ECR

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.

AWS CloudFormation
sh('kubectl delete all --all -n devsecops')
sh ('kubectl apply -f deployment.yaml --namespace=devsecops'

AWS EKS

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.

zap.sh -cmd -quickurl http://$(kubectl get services/asgbuggy --namespace=devsecops -o json| jq -r ".status.loadBalancer.ingress[] | .hostname") -quickprogress -quickout ${WORKSPACE}/zap_report.html'

Mi repo final está aquí.

https://github.com/sh4z3r/asecurityguru-devsecops-jenkins-k8s-tf-sast-sca-build-push-and-deploy-to-k8-repo

Jenkins Build

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.

Referencias y créditos:

Conceptos generales - OpenAI GPT - https://chat.openai.com/

The Phoenix Project - Book - https://www.oreilly.com/library/view/the-phoenix-project/9781457191350/

AWS DevSecOps - https://aws.amazon.com/what-is/devsecops/

Dzone - https://dzone.com/articles/10-tips-for-integrating-security-into-devops

DevSecOps Tools - https://www.atlassian.com/devops/devops-tools/devsecops-tools

A Sec Guru on Udemy [Recomendado] - https://www.udemy.com/course/devsecops-with-terraform-kubernetes-jenkins-aws

Last updated

Was this helpful?