SCA puede analizar archivos de gestión de dependencias en tus repositorios para detectar de forma estática bibliotecas de código abierto utilizadas en tu código base. SCA admite el análisis de bibliotecas en los siguientes lenguajes y archivos de bloqueo:
Seleccionar dónde realizar análisis estáticos de SCA
Analizar utilizando el análisis alojado en Datadog
Para los repositorios de GitHub, puedes ejecutar análisis de SCA en Datadog directamente en la infraestructura de Datadog’. Para empezar, ve a la página Code Security.
Analizar en pipelines CI
En primer lugar, configura tus claves de API y aplicación Datadog añadiendo DD_APP_KEY y DD_API_KEY como secretos. Asegúrate de que tu clave de aplicación Datadog tiene el contexto code_analysis_read.
A continuación, ejecuta SCA siguiendo las instrucciones del proveedor de CI que hayas elegido.
GitHub Actions
SCA puede ejecutarse como una tarea en tus flujos de trabajo de GitHub Actions. La acción que se proporciona a continuación invoca Datadog osv-scanner, nuestro generador de SBOM recomendado, en tu código base, y carga los resultados en Datadog.
Añade el siguiente fragmento de código en .github/workflows/datadog-sca.yml. Asegúrate de sustituir
el atributo dd_site por el sitio Datadog que estés utilizando.
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_site:"datadoghq.com"
Si no utilizas GitHub Actions, puedes ejecutar la CLI datadog-ci directamente en tu plataforma de pipelines CI y cargar tu SBOM en Datadog.
Requisitos previos:
descomprimir
Node.js v14 o posterior
Configura las siguientes variables de entorno:
Nombre
Descripción
Obligatorio
Valor predeterminado
DD_API_KEY
Tu clave de API Datadog. Esta clave la crea tu organización Datadog y debe guardarse como secreto.
Sí
DD_APP_KEY
Tu clave de aplicación Datadog. Esta clave, creada por tu organización Datadog, debe incluir el contexto code_analysis_read y almacenarse como secreto.
Sí
DD_SITE
El sitio Datadog al que enviar la información. Tu sitio Datadog es .
No
datadoghq.com
Proporciona las siguientes entradas:
Nombre
Descripción
Obligatorio
Valor predeterminado
service
El nombre del servicio utilizado para etiquetar los resultados.
Sí
env
El entorno utilizado para etiquetar los resultados. ci es un valor útil para esta entrada.
No
none
subdirectory
La ruta del subdirectorio al que debe limitarse el análisis. La ruta es relativa al directorio raíz del repositorio.
No
# Set the Datadog site to send information toexportDD_SITE=""# Install dependenciesnpm install -g @datadog/datadog-ci
# Download the latest Datadog OSV Scanner:# https://github.com/DataDog/osv-scanner/releasesDATADOG_OSV_SCANNER_URL=https://github.com/DataDog/osv-scanner/releases/latest/download/osv-scanner_linux_amd64.zip
# Install OSV Scannermkdir /osv-scanner
curl -L -o /osv-scanner/osv-scanner.zip $DATADOG_OSV_SCANNER_URLunzip /osv-scanner/osv-scanner.zip -d /osv-scanner
chmod 755 /osv-scanner/osv-scanner
# Run OSV Scanner and scan your dependencies/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
# Upload results to Datadogdatadog-ci sbom upload /tmp/sbom.json
Seleccionar tu proveedor de gestión de código fuente
Datadog SCA admite todos los proveedores de gestión de código fuente, con compatibilidad nativa con GitHub.
Al instalar una aplicación GitHub, se requieren los siguientes permisos para habilitar determinadas funciones:
Content: Readque permite ver fragmentos de código en Datadog.
Pull Request: Read & Writeque permite a Datadog añadir comentarios sobre infracciones directamente en tus solicitudes de extracción mediante comentarios en las solicitudes de extracción.
Otros proveedores de gestión de código fuente
Si estás utilizando otro proveedor de gestión de código fuente, configura SCA para que se ejecute en tus pipelines CI utilizando la herramienta CLI datadog-ci y carga los resultados en Datadog.
Debes ejecutar un análisis de tu repositorio en la rama por defecto antes de que los resultados puedan empezar a aparecer en la página Code Security.
Vincular resultados a servicios y equipos de Datadog
Vincular resultados a servicios
Datadog asocia el código estático y los resultados del análisis de la biblioteca con los de servicios 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 software
La versión del esquema v3 y posteriores del Catálogo de software te permiten añadir la asignación del código de localización de 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 deben 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 en el repositorio, Datadog intenta encontrar una coincidencia en la
path del archivo. Si hay un servicio llamado myservice y la ruta es /path/to/myservice/foo.py, el archivo se asocia a myservice porque el nombre servicio forma parte de la ruta. Si hay dos servicios
en la ruta, se selecciona el nombre de servicio más cercano al nombre del archivo.
Vincular resultados a equipos
Datadog asocia automáticamente el equipo adjunto a un servicio cuando se detecta una infracción o vulnerabilidad. 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 encuentran servicios o equipos, Datadog utiliza el archivo CODEOWNERS 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.