Prácticas recomendadas para las cadenas de herramientas de DevSecOps
En las siguientes secciones se describen las prácticas recomendadas para cada cadena de herramientas de DevSecOps: integración continua (CI), CI para infraestructura como código ( IaC ), implementación continua (CD) y cumplimiento continuo (CC).
Prácticas recomendadas para la cadena de herramientas de integración continua (CI)
La cadena de herramientas de CI de DevSecOps sigue estas prácticas:
- Se ejecuta en
detect-secretslos repositorios de aplicaciones para evitar fugas de información confidencial en el código fuente de las aplicaciones. - Ejecuta pruebas unitarias y pruebas de aplicación sobre el código de la aplicación.
- Ejecuta escáneres de código estáticos en los repositorios de las aplicaciones para identificar vulnerabilidades de seguridad en el código fuente.
- Realiza comprobaciones de cumplimiento normativo mediante escáneres de cumplimiento, como Code Risk Analyzer, en todos los repositorios de aplicaciones, lo que incluye el análisis de vulnerabilidades y una comprobación de la lista de materiales (BOM) en todas las dependencias de los paquetes.
- Recopila datos de cumplimiento sobre revisiones por pares para todas las solicitudes de incorporación de cambios fusionadas desde la última compilación.
- Crea una imagen de contenedor con cada confirmación de Git, asignándole una etiqueta basada en el número de compilación, la marca de tiempo y el ID de la confirmación para garantizar la trazabilidad.
- Firma la imagen del contenedor generada.
- Analiza la imagen del contenedor en busca de vulnerabilidades de seguridad.
- Implementa el artefacto compilado en un entorno de desarrollo y ejecuta un análisis dinámico (análisis mediante la API y la interfaz de usuario de ZAP) sobre la aplicación en ejecución para detectar vulnerabilidades en tiempo de ejecución.
- Realiza pruebas de aceptación e integración en el artefacto desplegado en el entorno de desarrollo.
- Recopila todas las pruebas (resultados de análisis, resultados de pruebas, registros, datos de revisión por pares y datos de ejecución del proceso) en un almacén de pruebas al final de cada ejecución del proceso.
Prácticas recomendadas para la integración continua (CI) en la cadena de herramientas de infraestructura como código ( IaC )
La cadena de herramientas de DevSecOps CI para IaC sigue estas prácticas:
- Se ejecuta
detect-secretsen los repositorios de IaC para evitar fugas de secretos en la configuración de Terraform. - Ejecuta pruebas unitarias en la configuración de IaC con cada confirmación de Git.
- Realiza un análisis estático del código en los repositorios de IaC, incluyendo herramientas específicas de Terraform como
tflintpara la detección de errores de sintaxis y la aplicación de las mejores prácticas, yterraform fmtyterraform validatepara garantizar la coherencia en el formato y la validez de la configuración. - Realiza comprobaciones de cumplimiento en los repositorios de IaC o utilizando herramientas e IaC-specific as (como Code Risk Analyzer o
checkov) para detectar problemas de cumplimiento. - Crea un archivo Tar que contiene la configuración de Terraform en cada confirmación de Git.
- Firma el artefacto Tar compilado.
- Implementa la configuración de IaC en un entorno de desarrollo mediante IBM Cloud Schematics o la CLI de Terraform.
- Realiza pruebas de aceptación e integración en la configuración implementada en el entorno de desarrollo.
- Añade los artefactos compilados al repositorio de inventario para garantizar la trazabilidad y su implementación en entornos posteriores.
- Recopila todas las pruebas (resultados de análisis, resultados de pruebas, datos de firma, registros y datos de ejecución del proceso) en un almacén de pruebas al final de cada ejecución del proceso.
Prácticas recomendadas para la cadena de herramientas de implementación continua (CD) con el fin de implementar una aplicación segura
Para implementar una aplicación segura, la cadena de herramientas de CD de DevSecOps sigue estas prácticas:
- Utiliza una solicitud de incorporación de cambios (pull request) de promoción en el repositorio de inventario para definir el alcance de la implementación y calcular el delta de la implementación, que es el conjunto de artefactos que han cambiado desde la última implementación finalizada.
- Comprueba que todas las solicitudes de incorporación de cambios (pull requests) dentro del ámbito de la implementación actual hayan sido revisadas por pares y aprobadas antes de continuar. Detiene la implementación si alguna solicitud de incorporación de cambios no está aprobada.
- Comprueba que todos los artefactos programados para su implementación estén correctamente firmados. Bloquea la implementación si falta una firma válida.
- Calcula la lista de materiales (BOM) de la implementación a partir del delta de la implementación y recopila un resumen de pruebas tanto de la ejecución del pipeline de CI asociada como de la ejecución actual del pipeline de CD.
- Crea una solicitud de cambio en el sistema de gestión de cambios configurado y adjunta la lista de materiales (BOM) de la implementación, el resumen de pruebas y los datos de cumplimiento de la revisión por pares.
- Aprueba automáticamente la solicitud de cambio si se cumplen todos los criterios de cumplimiento. Admite la aprobación manual o el etiquetado de emergencia cuando no se cumplen plenamente los criterios.
- Implementa los artefactos del inventario en el entorno de destino (como el de pruebas o el de producción) una vez que la solicitud de cambio se aprueba o se marca como emergencia.
- Realiza pruebas de aceptación e integración tras la implementación para comprobar que esta se ha llevado a cabo correctamente y que la aplicación funciona según lo previsto.
- Revierte automáticamente la implementación dentro de la misma ejecución del pipeline si se produce un fallo durante la fase de implementación o de pruebas de aceptación, conservando el último estado válido conocido en el inventario.
- Cierra la solicitud de cambio con un
close_categoryde oSuccessfulSuccessful with issues, y traslada la etiqueta de inventario<target-environment>_latesta la confirmación implementada. - Recopila y sube todos los archivos de registro, artefactos y pruebas al almacén de pruebas al final de cada ejecución del proceso.
- Opcionalmente, etiqueta las solicitudes de incorporación de cambios fusionadas con
deploy:{region}:{env}tras una implementación correcta, para proporcionar trazabilidad de la implementación de principio a fin sin necesidad de acceder a los detalles del proceso.
Prácticas recomendadas para la cadena de herramientas de cumplimiento continuo (CC)
La cadena de herramientas CC de DevSecOps sigue estas prácticas:
- Se ejecuta
detect-secretsen todos los repositorios de código fuente del inventario para identificar fugas de secretos en el código fuente de la aplicación. - Realiza un análisis estático del código ( SonarQube o una implementación personalizada) en todos los repositorios de código fuente que se encuentran en el inventario.
- Realiza un análisis dinámico de seguridad de la aplicación (OWASP ZAP) en la aplicación implementada para detectar vulnerabilidades en tiempo de ejecución.
- Realiza comprobaciones de cumplimiento normativo mediante herramientas (como Code Risk Analyzer) en todos los repositorios de código fuente del inventario, lo que incluye análisis de vulnerabilidades, comprobaciones CIS en los manifiestos de implementación de Kubernetes, comprobaciones de la lista de materiales (BOM) en todas las dependencias de los paquetes y verificación de la protección de las ramas.
- Analiza todas las imágenes de contenedores implementadas en busca de vulnerabilidades de seguridad.
- Crea o actualiza incidencias para cada CVE, vulnerabilidad o alerta detectada durante la ejecución del proceso y establece una fecha límite para cada incidencia.
- Recopila pruebas de cada fase en el almacén de pruebas, adjunta los resultados del análisis y de la comprobación a las incidencias correspondientes y actualiza el estado de cumplimiento de todos los artefactos analizados.