Guía de herramientas DevSecOps de código abierto
Un canal DevSecOps integra desarrollo, seguridad y operaciones para ayudar a los equipos a publicar software de alta calidad de la forma más rápida y eficiente posible. Lograr una tubería tan estrechamente integrada requiere varias herramientas para automatizar los procesos y facilitar la colaboración. Las organizaciones pueden utilizar herramientas de pago con licencias empresariales, que suelen incluir asistencia y acuerdos de nivel de servicio, pero tienen un precio más elevado. Otra opción es utilizar herramientas de código abierto desarrolladas y mantenidas por una comunidad abierta de desarrolladores profesionales. Suelen ser gratuitas o relativamente baratas.
Este blog enumera herramientas de código abierto DevSecOps populares y de alta calidad que ofrecen la funcionalidad necesaria para desarrollar, ejecutar y proteger aplicaciones.
Guía de herramientas DevSecOps de código abierto
Contenedores
Los contenedores son entornos de ejecución pequeños y autocontenidos para aplicaciones de microservicios. Las siguientes herramientas DevSecOps de código abierto se utilizan para construir y gestionar contenedores.
Docker
Docker es una plataforma de software de código abierto que se utiliza para crear, distribuir y gestionar aplicaciones en contenedores. Docker lideró la revolución de la contenedorización y ahora es tan omnipresente que «Docker» y «contenedores» son casi sinónimos. Docker simplifica la creación y gestión de contenedores y proporciona una API que permite la automatización y la orquestación. Además, es independiente del proveedor y puede ejecutarse en cualquier sistema operativo o plataforma de nube importante.
Kubernetes
Kubernetes es otro nombre omnipresente en la gestión de contenedores. Kubernetes es una plataforma de orquestación de contenedores de código abierto que automatiza la creación, despliegue, gestión y escalado de contenedores. Los contenedores pueden gestionarse manualmente en despliegues pequeños, pero los entornos más grandes y complejos requieren automatización para una gestión eficiente y sin errores. Kubernetes le permite enviar, controlar, reparar y escalar automáticamente aplicaciones en contenedores para conseguir implantaciones optimizadas y sin errores.
Istio
Istio es una malla de servicios de código abierto para aplicaciones de microservicios en contenedores. Una malla de servicios gestiona las comunicaciones entre los microservicios individuales, utilizando proxies para abstraer la lógica de red -como la seguridad, el cifrado y la observabilidad- a un plano de control común. Esta característica es la forma en que Istio ofrece a los ingenieros una manera de manejar eficientemente la red para docenas o cientos de microservicios desde una plataforma. Istio se basa en el proxy de borde y servicio de código abierto Envoy, que le da acceso a complementos y funciones adicionales.
Control de código fuente
El control de fuentes, también conocido como control de versiones, rastrea los cambios en el código y ayuda a resolver conflictos cuando los cambios se fusionan desde múltiples fuentes.
Git
Git es el estándar de facto para el control de versiones de código abierto. Git almacena el código fuente y su historial de cambios en un repositorio central, permitiendo a los desarrolladores crear ramas que se trabajan en paralelo a la versión principal. Los cambios se envían a la rama y luego ésta se fusiona con la versión principal. Esto facilita la colaboración simultánea en el mismo proyecto y permite a los equipos hacer un seguimiento de los cambios y revertirlos cuando sea necesario. Dado que Git es tan popular, puede utilizarse con una amplia variedad de herramientas y entornos de desarrollo.
CI/CD
La integración continua/entrega continua, o CI/CD, utiliza herramientas de integración y entrega automatizadas que permiten que estos procesos se ejecuten de forma continua, creando un canal de desarrollo más racionalizado. Estas herramientas DevSecOps de código abierto proporcionan capacidades de automatización para CI/CD.
Argo CD
Argo CD es una herramienta de entrega continua GitOps, declarativa y de código abierto para Kubernetes. Argo CD extrae las actualizaciones de los repositorios de código fuente Git y las despliega directamente en los recursos Kubernetes, lo que permite una entrega realmente continua en entornos Kubernetes nativos de la nube. Ofrece a los desarrolladores la posibilidad de gestionar configuraciones de infraestructura y código de aplicación en un solo sistema, y sus canalizaciones declarativas facilitan tener las configuraciones de canalización dentro del control de versiones de Git.
GitLab
GitLab es un repositorio de control de código fuente Git de código abierto basado en la nube con herramientas CI/CD integradas. GitLab soporta la integración continua de cambios de código a través de scripts que construyen y prueban el código automáticamente. Las herramientas de entrega continua verifican automáticamente el código antes de permitir a los desarrolladores activar manualmente los despliegues. La ventaja de GitLab es que todo lo que necesita para CI/CD está integrado en la plataforma, lo que reduce la necesidad de integraciones de terceros.
Jenkins
Jenkins es un servidor de automatización de código abierto que incluye cientos de plugins para automatizar procesos CI/CD. Esto hace que Jenkins sea increíblemente flexible, ya que puedes elegir las herramientas y funcionalidades exactas que necesitas para dar soporte a tu proyecto. Por otro lado, la gestión de todos tus plugins será cada vez más difícil a medida que el proyecto se amplíe.
Monitorización y métricas
Las soluciones de supervisión y métricas analizan los datos de aplicaciones y canalizaciones para realizar un seguimiento del rendimiento y alertar a los ingenieros de los problemas. Entre las herramientas de supervisión y métricas de código abierto para DevSecOps se incluyen:
Prometheus
Prometheus es una solución de monitorización de código abierto alojada en la Cloud Native Computing Foundation (CNCF). Prometheus rastrea puntos finales HTTP para recopilar métricas de series temporales y genera cuadros de mando con visualizaciones y capacidades de consulta en profundidad. Admite la recopilación y consulta de datos multidimensionales, lo que resulta especialmente útil para arquitecturas de aplicaciones de microservicios.
La pila elástica
The Elastic Stack – anteriormente conocido como ELK Stack – es una combinación de proyectos de código abierto mantenidos por Elastic. Incluye:
- Elasticsearch: Motor de búsqueda y análisis.
- Logstash: Canal de procesamiento de datos que transforma los datos y los carga en Elasticsearch.
- Kibana: Visualizaciones de datos en Elasticsearch con tablas y gráficos.
- Latidos: Transmisores de datos ligeros y de propósito único.
Es importante tener en cuenta que, a partir de 2021, Elasticsearch y Kibana ya no son de código abierto, ya que Elastic cambió a licencias duales (Elastic License y SSPL), que no están aprobadas por la Iniciativa de Código Abierto (OSI). Sin embargo, los proyectos siguen siendo de uso gratuito, el código fuente está disponible para el público y Elastic acepta contribuciones de la comunidad.
Infraestructura como código (IaC)
La infraestructura como código (IaC) convierte las configuraciones de infraestructura en código de software desacoplado del hardware subyacente. Las herramientas DevSecOps de código abierto para IaC incluyen:
Terraform
Terraform es una herramienta de código abierto de IaC creada por HashiCorp. Utiliza programación declarativa para aprovisionar, actualizar y gestionar automáticamente la infraestructura de IaC en despliegues locales, en la nube y SaaS. Terraform también puede utilizarse para aprovisionar y gestionar funciones sin servidor y clústeres Kubernetes.
Gestión de la configuración
La gestión de la configuración implica la supervisión continua de las configuraciones de IaC existentes para evitar que los sistemas se desvíen de un estado probado y seguro. Las herramientas de gestión de configuración de código abierto para DevSecOps incluyen:
Chef Infra
Chef Infra es una solución de gestión de configuración de IaC automatizada de código abierto. Las herramientas automatizadas de gestión de la configuración permiten a los administradores definir el estado deseado de un sistema y, a continuación, supervisar continuamente los sistemas para garantizar que no se alejan de ese estado. Chef utiliza «recetas», playbooks automatizados que llevan a cabo instrucciones de programación imperativas para las configuraciones.
Ansible
Ansible es un proyecto de código abierto patrocinado por Red Hat que automatiza la gestión de la configuración, así como el aprovisionamiento de la nube, redes, despliegue y otras tareas de IaC. Ansible utiliza playbooks declarativos, lo que significa que no necesita instrucciones específicas sobre cómo desplegar o mantener configuraciones – simplemente se define el estado deseado, y Ansible determina la mejor manera de alcanzar y mantener ese estado.
Escaneado y corrección de código
Las herramientas de escaneo automático de código analizan cada línea de código en busca de defectos de seguridad y vulnerabilidades, lo que las convierte en un componente crítico de los pipelines DevSecOps. Las siguientes herramientas de código abierto proporcionan capacidades de escaneo automático de código, y algunas también ofrecen corrección automática de defectos.
GitLab
Como parte de su conjunto de herramientas automatizadas de integración continua, la plataforma GitLab incluye una función de análisis automático de la seguridad integrada en su repositorio de código fuente Git. Esto hace de GitLab una opción conveniente para una solución de desarrollo DevSecOps totalmente integrada.
OWASP
El Open Web Application Security Project (OWASP) proporciona una variedad de recursos, herramientas y tecnologías gratuitas y de código abierto para la seguridad de las aplicaciones web. Hay dos herramientas de escaneo de código OWASP que son particularmente útiles para los pipelines DevSecOps:
- Zed Attack Proxy (ZAP) proporciona revisiones de código automatizadas, evaluaciones de vulnerabilidad, pruebas de penetración y pruebas en tiempo de ejecución.
- Dependency-Check es una herramienta de Análisis de Composición de Software (SCA) que escanea las dependencias de un proyecto en busca de vulnerabilidades conocidas.
Snyk
Snyk es una herramienta de código abierto de escaneo y corrección de defectos. Snyk es una solución «primero el desarrollador» que ayuda a los desarrolladores a encontrar, priorizar y corregir defectos y vulnerabilidades en las dependencias de código abierto. Incluye un escaneo continuo y automático del código en busca de vulnerabilidades de seguridad y problemas de conformidad, así como solicitudes de corrección automatizadas con un solo clic.
Inteligencia sobre amenazas
La inteligencia sobre amenazas es la capacidad de identificar, predecir y definir amenazas. Es una herramienta DevSecOps importante porque proporciona la información necesaria para desarrollar software en torno al principio de «seguridad por diseño».
OWASP Threat Dragon
Threat Dragon es otra herramienta de código abierto de OWASP. Threat Dragon crea diagramas de modelos de amenazas que registran las amenazas potenciales y determinan cómo mitigarlas. También proporciona visualizaciones de componentes del modelo de amenazas y superficies de amenazas.
Pruebas de seguridad
Las pruebas de seguridad se utilizan para probar aplicaciones y API desde una perspectiva externa sin acceder al código fuente subyacente. Las herramientas de código abierto DevSecOps para pruebas de seguridad incluyen:
BDD-Seguridad
BDD-Security es un marco de código abierto que aprovecha herramientas como OWASP ZAP para proporcionar pruebas de seguridad basadas en el concepto de Desarrollo Orientado al Comportamiento (BDD). BDD utiliza ejemplos del mundo real (cómo la gente utiliza realmente una aplicación) para ilustrar cómo debería comportarse un sistema. BDD-Security utiliza este concepto para crear especificaciones de seguridad autoverificables para probar automáticamente las aplicaciones.
Chef Inspec
Chef InSpec es un marco de trabajo de código abierto para probar aplicaciones e infraestructuras. El estado deseado de un sistema se expresa en código Chef InSpec, que luego se compara con el estado real, detectando violaciones e informando de los resultados. Chef InSpec también incluye auditorías automatizadas de cumplimiento de seguridad para evitar problemas normativos.