Los contenedores son el estándar para ejecutar aplicaciones en servidores hoy en día, por lo que probablemente tenga muchos SBOMs que desea cargar en Dependency Track SaaS. Afortunadamente, la extracción de software empaquetado como contenedores o Docker es rápida y muy sencilla.
En el siguiente ejemplo, ilustraremos la generación de SBOM desde una imagen Docker y su carga en Dependency Track SaaS. Para generar el SBOM desde cualquier software, utilice uno de los métodos descritos en este Cheat Sheet.
Transferencia de SBOM desde Docker
Para automatizar la transferencia, debe vincular el archivo SBOM con un proyecto en Dependency Track. Hay varias opciones, incluida la creación automática de un nuevo proyecto.
En el escenario más probable, asumimos que ya tiene un proyecto en Dependency Track y desea actualizar su lista de componentes. La forma más sencilla es vincular el SBOM con el UUID del proyecto en Dependency Track.
El siguiente script realiza la extracción de SBOM desde un registro Docker local y la carga en su inquilino de Dependency Track. Lo ejecutaría con algo como extract-sbom.sh alpine:latest 29cd2fb7-db8c-4513-8c6c-ffb4443be67f
. El UUID del proyecto de Dependency Track que desea utilizar se encuentra en la identificación del objeto de la información del proyecto.
Por supuesto, debe modificar el script y reemplazar <SuDominioPrefijo>
y <SuApiKey>
en las líneas 9 y 10 con los valores que recibió después de ordenar su suscripción SaaS.
#!/bin/bash
if [ "$#" -ne 2 ]; then
echo "$0 <dockerImage> <depTrackProjectUuid>"
exit -1
fi
# AQUÍ REEMPLAZAR-------------------------
companyPrefix=<SuDominioPrefijo>
apiKey=<SuApiKey>
# FIN REEMPLAZAR--------------------------
SCRIPT_PATH=$(dirname -- "$(readlink -f "${BASH_SOURCE}")")
project="$2"
sbom="$(uuidgen).sbom"
echo -n "Extrayendo SBOM..."
&& $SCRIPT_PATH/syft.sh scan "registry:$1" -o cyclonedx-json > $sbom
&& echo -ne " hecho\nEnviando SBOM..."
&& curl -X POST -H "X-API-Key: $apiKey"
-H 'Content-Type: multipart/form-data; boundary=__X_BOM__'
-F "bom=@$sbom"
-F "project=$project"
"https://$companyPrefix.deptrack.yoursky.blue/api/v1/bom"
&& echo -e " enviado\n\nLimpiando..."
&& rm $sbom
El script anterior ya no utiliza el comando docker scout sbom, ya que este ya no admite SBOMs en formato CycloneDX. En su lugar, utiliza nuestro script syft.sh.
Plugins de CI/CD
En su CI/CD, puede reutilizar fácilmente la parte de transferencia del script anterior. La transferencia de SBOM se puede simplificar aún más utilizando uno de los siguientes plugins de código abierto:
- Azure Pipelines
- GitHub Action
- Jenkins
- dtrack-audit herramienta genérica para la transferencia y verificación escrita en Go, con compatibilidad especial para TeamCity CI
Además, los siguientes plugins pueden ser útiles para otros escenarios de automatización, como la implementación de políticas basadas en análisis de vulnerabilidades:
- dtapac revisa los resultados de Dependency Track y las violaciones de políticas a través de políticas como código
- DTrackAuditor puede interrumpir la compilación de CI debido a la gravedad de las vulnerabilidades o violaciones de políticas
Otros escenarios posibles
Con el ejemplo de SBOM desde Docker mostrado arriba, solo hemos rasgado la superficie; hay muchos escenarios de automatización posibles. Puede servir como plantilla para empezar. Con algunos ajustes, puede generar el SBOM desde otras fuentes, como se describe en el Cheat Sheet.
Otras opciones de transferencia son posibles, por favor consulte nuestra documentación de la API.
Estamos encantados de ayudarle con cualquier pregunta sobre la transferencia de SBOM.
¡Háganos saber cómo podemos asistirle!