Datadog Code Analysis te permite identificar y solucionar problemas de calidad del código y vulnerabilidades de seguridad antes de desplegarlo en producción, garantizando un código seguro y limpio durante todo el ciclo de vida de desarrollo del software.
Static Analysis (SAST) analiza tus repositorios en busca de problemas de calidad y seguridad en el código de origen y sugiere correcciones para evitar que estos problemas afecten a la producción.
Software Composition Analysis (SCA) analiza tu código base en busca de bibliotecas de código abierto importadas, ayudándote a gestionar tus dependencias y a proteger tus aplicaciones frente a amenazas externas.
Al utilizar datadog-ci, puedes integrar los análisis de otros proveedores en tu flujo de trabajo de desarrollo, lo que te permite enviar resultados de Static Analysis y SCA directamente a Datadog. Puedes acceder a los últimos resultados de análisis de cada repositorio en la página Repositorios para monitorizar de forma efectiva y mejorar el estado del código en todas las ramas.
Configurar Code Analysis
Puedes configurar Code Analysis para ejecutar análisis de código directamente en Datadog o de códigos que se ejecutan en tus pipelines CI. Para empezar, ve a Entrega de software > Code Analysis > Repositorios y haz clic en + Add a Repository (Añadir un repositorio).
Con los análisis alojados en Datadog, tu código se analiza en la infraestructura de Datadog, en lugar de en tu pipeline CI. Datadog lee tu código, ejecuta el analizador estático para realizar análisis de Static Analysis o Software Composition Analysis, y carga los resultados.
El uso de análisis alojados en Datadog elimina la necesidad de configurar un pipeline CI para poder utilizar Code Analysis.
Habilita Code Analysis en tus repositorios de GitHub para cada cuenta de GitHub que hayas añadido, configurando la integración GitHub.
Puedes activar Software Composition Analysis (SCA) para buscar vulnerabilidades, problemas de licencias y riesgos de la cadena de suministro en tus bibliotecas de código abierto en todos los repositorios o puedes activar SCA para repositorios individuales, en el panel lateral Repositorios.
Selecciona entre los siguientes tipos de análisis que quieres ejecutar en tu repositorio.
Static Analysis: Examina tu código en busca de malas prácticas y vulnerabilidades.
Selecciona un proveedor de gestión de código fuente (SCM) como GitHub u otro proveedor.
GitHub
Si utilizas un repositorio de GitHub, puedes configurar la integración GitHub y conectar tu repositorio para habilitar los análisis de Static Analysis y Software Composition Analysis.
Los comentarios en las solicitudes pull de GitHub están habilitados por defecto. Haz clic en Connect Repositories (Conectar repositorios) en la página de configuración de Code Analysis y pasa el cursor sobre el marcador “Falta”, en la columna Permisos de solicitudes pull, para ver qué permisos necesitas actualizar para tu cuenta.
d
Para desactivar esta función, ve a la página [**Configuración de Code Analysis**][106] y haz clic en el conmutador de la columna Comentarios de GitHub.
Especifica un nombre para el servicio o la biblioteca en el campo dd_service, como por ejemplo, shopist.
Acción de GitHub
Puedes configurar una acción de GitHub para ejecutar un análisis de Static Analysis y Software Composition Analysis como parte de tus flujos de trabajo CI.
Crea un archivo .github/workflows/datadog-static-analysis.yml en tu repositorio con el siguiente contenido:
A continuación, crea un archivo .github/workflows/datadog-sca.yml en tu repositorio con el siguiente contenido:
on:[push]name:Datadog Software Composition Analysisjobs:software-composition-analysis:runs-on:ubuntu-latestname:Datadog SBOM Generation and Uploadsteps:- name:Checkoutuses:actions/checkout@v3- name:Check imported libraries are secure and compliantid:datadog-software-composition-analysisuses:DataDog/datadog-sca-github-action@mainwith:dd_api_key:${{ secrets.DD_API_KEY }}dd_app_key:${{ secrets.DD_APP_KEY }}dd_service:shopistdd_env:cidd_site:datadoghq.com
Script personalizable
Puedes cargar un informe SARIF con los resultados de Static Analysis o un informe SBOM con los resultados de Software Composition Analysis en Datadog utilizando el paquete NPM datadog-ci.
Análisis estático
Para cargar informes de Static Analysis en Datadog, debes instalar Unzip y Node.js versión 14 o posterior.
Añade el siguiente contenido a la configuración de tu pipeline CI:
# Configura el sitio Datadog para enviar información aexportDD_SITE="datadoghq.com"# Instala dependenciasnpm install -g @datadog/datadog-ci
# Descarga el analizador estático de Datadog más reciente:# https://github.com/DataDog/datadog-static-analyzer/releasesDATADOG_STATIC_ANALYZER_URL=https://github.com/DataDog/datadog-static-analyzer/releases/latest/download/datadog-static-analyzer-x86_64-unknown-linux-gnu.zip
curl -L $DATADOG_STATIC_ANALYZER_URL > /tmp/ddog-static-analyzer.zip
unzip /tmp/ddog-static-analyzer.zip -d /tmp
mv /tmp/datadog-static-analyzer /usr/local/datadog-static-analyzer
# Ejecuta Static Analysis/usr/local/datadog-static-analyzer -i . -o /tmp/report.sarif -f sarif
# Carga los resultadosdatadog-ci sarif upload /tmp/report.sarif --service "shopist" --env "ci"
Software Composition Analysis
Para cargar informes de Static Analysis en Datadog, debes instalar Trivy y Node.js versión 14 o posterior.
Añade el siguiente contenido a la configuración de tu pipeline CI:
# Configura el sitio Datadog para enviar información aexportDD_SITE="datadoghq.com"# Instala dependenciasnpm install -g @datadog/datadog-ci
# Descarga el Analizador OSV de Datadog más reciente:# https://github.com/DataDog/osv-scanner/releasesDATADOG_OSV_SCANNER_URL=https://github.com/DataDog/osv-scanner/releases/latest/download/osv-scanner_linux_amd64.zip
# Instala el Analizador OSVmkdir /osv-scanner
curl -L -o /osv-scanner/osv-scanner.zip $DATADOG_OSV_SCANNER_URLcd /osv-scanner && unzip osv-scanner.zip
chmod 755 /osv-scanner/osv-scanner
# Recupera los resultados del Analizador OSV/osv-scanner/osv-scanner --skip-git -r --experimental-only-packages --format=cyclonedx-1-5 --paths-relative-to-scan-dir --output=/tmp/sbom.json /path/to/repository
# Carga los resultadosdatadog-ci sbom upload --service "shopist" --env "ci" /tmp/sbom.json
Una vez que hayas configurado estos scripts, ejecuta un análisis de tu repositorio en la rama por defecto. Los resultados empezarán a aparecer en la página Repositorios.
Ejecutar Static Analysis en un IDE
Instala los complementos IDE Datadog para ejecutar análisis de Static Analysis localmente y ver los resultados directamente en su editor de código. Puedes detectar y solucionar problemas como problemas de mantenimiento, errores o vulnerabilidades de seguridad en el código antes de confirmar los cambios.
Para empezar a ejecutar análisis de Static Analysis en tu IDE, consulta la documentación correspondiente al editor de código elegido.
Habilitar los comentarios de Code Analysis en solicitudes pull de GitHub
Puedes integrar Code Analysis con las solicitudes pull de GitHub para señalar automáticamente las infracciones del código y mejorar la calidad del código en el proceso de revisión.
Una vez configurado, Code Analysis comenta directamente la solicitud pull, indicando las infracciones con detalles como el nombre, el ID, la gravedad y las correcciones sugeridas, que puedes aplicar directamente desde la interfaz de usuario de GitHub.
Después de añadir los archivos de configuración apropiados a tu repositorio, crea una aplicación GitHub en Datadog (una nueva aplicación o la actualización de una existente). Asegúrate de que tienes acceso de lectura y escritura a las solicitudes pull.
Una vez que hayas configurado tu aplicación, ve a la página Configuración de Code Analysis y haz clic en el conmutador de la columna Comentarios de GitHub de cada repositorio.
Haz clic en un repositorio en la página Repositorios para acceder a una vista más detallada, donde puedes personalizar la consulta de búsqueda por rama (aparece primero la rama por defecto) y por confirmación (empieza por la más reciente).
Puedes utilizar las siguientes facetas predefinidas para crear una consulta de búsqueda a fin de identificar y solucionar malas prácticas de codificación, en la pestaña Calidad del código, o riesgos de seguridad, en la pestaña Vulnerabilidades de código.
Nombre de la faceta
Descripción
Estado del resultado
Filtra los resultados en función del estado de finalización del análisis.
ID de regla
Normas específicas que activaron los hallazgos.
Nombre de la herramienta
Determina qué herramientas contribuyeron al análisis.
CWE (Common Weakness Enumeration)
Filtra los resultados por categorías de vulnerabilidad reconocidas.
Tiene correcciones
Filtra los problemas para los que existen correcciones sugeridas.
Mensaje de resultado
Contiene descripciones concisas o mensajes asociados a los resultados.
Descripción de la regla
Contiene la justificación de cada regla.
Fuente de origen
Contiene los archivos en los que se detectaron problemas.
Versión de la herramienta
Filtra los resultados por la versión de las herramientas utilizadas.
Puedes acceder a las correcciones sugeridas directamente desde los resultados para mejorar las prácticas de calidad del código y tratar las vulnerabilidades de seguridad.
Puedes utilizar las siguientes facetas predefinidas para crear una consulta de búsqueda a fin de identificar y tratar los riesgos de seguridad en bibliotecas de terceros en la pestaña Vulnerabilidades de bibliotecas o revisar tu inventario de bibliotecas en la pestaña Catálogo de bibliotecas.
Nombre de la faceta
Descripción
Nombre de la dependencia
Identifica las bibliotecas por sus nombres.
Versión de la dependencia
Filtros por versiones específicas de bibliotecas.
Lenguaje
Ordena bibliotecas por el lenguaje de programación.
Puntuación
Ordena la puntuación de riesgo o calidad de las dependencias.
Gravedad
Filtra las vulnerabilidades en función de su gravedad.
Plataforma
Distingue bibliotecas por la plataforma a la que van destinadas.
Puedes acceder a los informes sobre vulnerabilidades y localizar los archivos fuente en los que se detectó la vulnerabilidad en tus proyectos, junto con información sobre los propietarios de código del archivo.
Explorar resultados en el Catálogo de servicios
Investiga las infracciones de código asociadas a tus servicios y las infracciones de código identificadas en Static Analysis para solucionar ralentizaciones y fallos. Ve a Gestión de servicios > Servicios > Catálogo de servicios y haz clic en la vista Delivery (Entrega) para analizar el estado de preproducción de tus servicios.
Haz clic en el servicio para acceder a la información de los pipelines CI desde Pipeline Visibility y también a las vulnerabilidades de seguridad y los problemas de calidad del código desde Code Analysis en la pestaña Delivery (Entrega) del panel lateral.
Vinculación de servicios con infracciones del código y bibliotecas
Datadog asocia las infracciones del código o las bibliotecas a servicios pertinentes mediante los siguientes mecanismos:
Si un método tiene éxito, no se realizan más intentos de asignación. A continuación se detalla cada método de asignación.
Identificación de la localización del código en el Catálogo de servicios
La versión del esquema v3 y posteriores del Catálogo de servicios te permiten añadir la asignación de la localización de tu código a tu servicio. La sección codeLocations especifica la localización del repositorio que contiene el código y sus rutas asociadas.
El atributo paths es una lista de globs
que debe coincidir con las rutas del repositorio.
Datadog detecta el uso de archivos en productos adicionales como Error Tracking y asocia
archivos al servicio de tiempo de ejecución. Por ejemplo, si un servicio llamado foo tiene
una entrada de log o una traza (trace) de stack tecnológico que contiene un archivo con una ruta /modules/foo/bar.py,
se asocian los archivos /modules/foo/bar.py al servicio foo.
Detección de nombres de servicios en rutas y nombres de repositorios
Datadog detecta nombres de servicios en rutas y nombres de repositorios y asocia el archivo al servicio, si se encuentra una coincidencia.
Para una coincidencia de repositorios, si existe un servicio llamado myservice y
la URL del repositorio es https://github.com/myorganization/myservice.git,
se asocia myservice a todos los archivos del repositorio.
Si no se encuentra ninguna coincidencia de repositorios, Datadog intenta encontrar una coincidencia en la
path del archivo. Si existe un servicio llamado myservice y la ruta es /path/to/myservice/foo.py, el archivo se asocia a myservice ya que el nombre del servicio forma parte de la ruta. Si hay dos servicios presentes
en la ruta, se selecciona el nombre del servicio más cercano al nombre del archivo.
Vinculación de los equipos a las infracciones del código y las bibliotecas
Datadog asocia automáticamente el equipo adjunto a un servicio cuando se detecta una infracción del código o un problema en una biblioteca. Por ejemplo, si el archivo domains/ecommerce/apps/myservice/foo.py
está asociado a myservice, entonces el equipo myservice se asociará a cualquier infracción
detectada en este archivo.
Si no se encuentra ningún servicio o equipo, Datadog utiliza el archivoCODEOWNERS
de tu repositorio. El archivo CODEOWNERS determina a qué equipo pertenece un archivo en tu proveedor Git.
Nota: Para que esta característica funcione correctamente, debes asignar con precisión tus equipos de proveedores Git a tus equipos de Datadog.