Introducción

Completado

Las aplicaciones modernas dependen en gran medida de componentes de código abierto y bibliotecas de terceros. Aunque estas dependencias aceleran el desarrollo y proporcionan funcionalidad probada, también presentan vulnerabilidades de seguridad y riesgos de cumplimiento de licencias. El análisis de composición de software (SCA) proporciona herramientas y procesos automatizados para identificar, realizar un seguimiento y administrar los riesgos de seguridad y cumplimiento en la cadena de suministro de software.

Sin el análisis sistemático de dependencias, las organizaciones siguen sin tener en cuenta las vulnerabilidades de sus aplicaciones hasta que se produzcan infracciones. Los investigadores de seguridad detectan miles de nuevas vulnerabilidades en componentes de código abierto anualmente y las aplicaciones que usan versiones afectadas permanecen vulnerables hasta que se actualizan las dependencias. El seguimiento manual de dependencias en cientos de aplicaciones no es práctico, lo que requiere soluciones de SCA automatizadas.

En este módulo se proporcionan instrucciones completas sobre la implementación del análisis de composición de software en los flujos de trabajo de desarrollo. Aprenderá los aspectos básicos de SCA, implementará la detección automatizada de vulnerabilidades con GitHub Dependabot, integrará las herramientas de SCA en Azure Pipelines, automatizará el análisis de contenedores e interpretará las alertas de seguridad para priorizar la corrección de forma eficaz.

Temas que se abordarán

En este módulo se tratan los conocimientos esenciales para implementar el análisis de composición de software:

  • Descripción del análisis de composición de software: Explorará qué es SCA, por qué es fundamental para el desarrollo moderno, qué detectan las herramientas de SCA y las ventajas del examen automatizado de dependencias. Comprender los aspectos básicos de SCA le ayuda a reconocer por qué la administración manual de dependencias no se escala y cómo las herramientas automatizadas proporcionan visibilidad continua de los riesgos de seguridad y cumplimiento.

  • Inspección y validación de bases de código: Aprenderá a inventariar todas las dependencias de las aplicaciones, validar el cumplimiento de licencias para evitar problemas legales, detectar vulnerabilidades de seguridad conocidas a través de bases de datos CVE y evaluar la calidad de dependencia, incluido el estado de mantenimiento y el estado de la comunidad.

  • Implementación de GitHub Dependabot: Descubrirá cómo GitHub Dependabot examina automáticamente las dependencias de vulnerabilidades, crea solicitudes de incorporación de cambios con actualizaciones de seguridad, genera gráficos de dependencias que muestran dependencias transitivas e se integra con la pestaña Seguridad de GitHub para la administración centralizada de vulnerabilidades.

  • Integración de SCA en canalizaciones: Explorarás cómo implementar el escaneo automatizado en Azure Pipelines durante la construcción y la implementación, configurarás herramientas de SCA como Mend (WhiteSource), Snyk y OWASP Dependency-Check, establecerás puertas de calidad que provoquen fallos en las construcciones cuando se detecten vulnerabilidades críticas y generarás la Lista de Materiales de Software (SBOM) para el cumplimiento y la transparencia.

  • Examen de las herramientas de SCA: Comparará diferentes soluciones de SCA que comprenden sus puntos fuertes, limitaciones y casos de uso ideales. Entre las herramientas que se tratan se incluyen ofertas comerciales como Mend y Snyk que proporcionan un análisis completo con soporte, opciones de código abierto como OWASP Dependency-Check para el análisis rentable y soluciones integradas en la plataforma, como Azure Artifacts upstream sources y GitHub Dependabot.

  • Automatización del examen de contenedores: Aprenderá a examinar imágenes base de contenedor para detectar vulnerabilidades, analizar las dependencias de la aplicación dentro de contenedores, integrar el examen de contenedores en canalizaciones de CI/CD y configurar registros de contenedor como Azure Container Registry y Docker Hub para bloquear imágenes vulnerables automáticamente.

  • Interpretación de las alertas del analizador: Descubrirá cómo evaluar la gravedad de la vulnerabilidad mediante puntuaciones de CVSS, determinar la vulnerabilidad teniendo en cuenta si las vulnerabilidades son accesibles en la aplicación, priorizar la corrección en función del impacto empresarial y el riesgo, y administrar falsos positivos que pueden sobrecargar a los equipos si no se filtran correctamente.

Objetivos de aprendizaje

Después de completar este módulo, podrá:

  • Comprenda el análisis de composición de software (SCA) y reconozca por qué el análisis automatizado de dependencias es esencial para administrar los riesgos de seguridad y cumplimiento en las aplicaciones modernas creadas a partir de componentes de código abierto.
  • Inspeccione y valide las bases de código mediante el inventario de todas las dependencias, incluidas las dependencias transitivas, la validación del cumplimiento de licencias, la detección de vulnerabilidades conocidas a través de bases de datos CVE y la evaluación de la calidad de dependencia.
  • Implemente GitHub Dependabot para detectar automáticamente dependencias vulnerables, recibir solicitudes de incorporación de cambios con actualizaciones de seguridad, visualizar gráficos de dependencias e integrar alertas de vulnerabilidad con la pestaña Seguridad de GitHub.
  • Integre las comprobaciones de SCA en Azure Pipelines mediante la implementación de análisis automatizados durante las compilaciones, la configuración de puertas de calidad que fallen las compilaciones en caso de vulnerabilidades críticas, la generación de informes de cumplimiento y la creación de la Lista de Materiales de Software (SBOM).
  • Examine y configure herramientas de SCA, incluidas soluciones comerciales como Mend (WhiteSource) y Snyk, herramientas de código abierto como OWASP Dependency-Check y soluciones integradas en la plataforma como fuentes ascendentes de Azure Artifacts.
  • Automatice el examen de imágenes de contenedor para detectar vulnerabilidades en imágenes base y dependencias de aplicaciones, integrar el examen en flujos de trabajo de CI/CD y configurar registros para evitar la implementación de contenedores vulnerables.
  • Interprete las alertas de las herramientas de análisis mediante la evaluación de la gravedad con puntuaciones de CVSS, la determinación de la vulnerabilidad y la accesibilidad, la priorización de la corrección basada en el impacto empresarial y la administración eficaz de falsos positivos.

Prerrequisitos

Antes de iniciar este módulo, debería tener lo siguiente:

  • Descripción de las dependencias de software: Conocimientos básicos sobre cómo las aplicaciones usan bibliotecas, marcos y paquetes de administradores de paquetes como npm, pip, NuGet o Maven.
  • Familiaridad con los conceptos de DevOps: Descripción de la integración continua, la entrega continua, las canalizaciones de compilación y el ciclo de vida de desarrollo de software.
  • Experiencia de control de versiones: Experiencia básica con Git, solicitudes de incorporación de cambios y flujos de trabajo de revisión de código en los que normalmente se produce la administración de dependencias.
  • Reconocimiento de código abierto: Comprensión general de que los componentes de código abierto pueden contener vulnerabilidades de seguridad y tener requisitos de licencia (el conocimiento de los módulos anteriores es beneficioso).
  • Experiencia de Azure DevOps o GitHub: Familiaridad con Azure Pipelines o Acciones de GitHub para implementar el análisis automatizado en flujos de trabajo de CI/CD.

La experiencia en el trabajo en organizaciones que ofrecen software es beneficiosa, pero no necesaria. Este módulo se basa en conceptos de software de código abierto y proporciona instrucciones prácticas de implementación para el análisis de composición de software.