Puerta de seguridad y cumplimiento de código abierto para GitLab CI y GitHub Actions: SBOM, vulnerabilidades de dependencias, SAST, secretos, IaC y licencias, bajo una política versionada y un veredicto. Sin SaaS, sin código enviado a terceros.
Suite de análisis de código 100% Open Source (seguridad y cumplimiento) para GitLab CI y GitHub Actions — SCA, SAST, secretos y licencias, impulsada por una única política versionada. Repositorios políglotas (Go, Rust, Java/JVM, Python, JS/TS, C/C++). Sin SaaS, sin código enviado a terceros.
oss-analyzer controla un repositorio en función de su seguridad y cumplimiento en CI: ejecuta los escáneres, aplica una única política versionada y emite un único veredicto, con un panel HTML e informes de merge request.
flowchart LR
repo["Your repository"]
subgraph checks["Scanners: they collect, never block"]
deps["Dependencies<br/>Syft SBOM<br/>Grype, OSV-Scanner"]
licenses["Licenses<br/>license gate on the SBOM<br/>policy-licenses.yml"]
code["Code<br/>Semgrep<br/>policy-semgrep.yml"]
secrets["Secrets<br/>Gitleaks, whole git history<br/>policy-gitleaks.toml"]
iac["Dockerfiles, IaC<br/>Trivy"]
headers["SPDX headers<br/>REUSE"]
end
policy{{"Policy<br/>thresholds, modes, exceptions<br/>policy-global.yml"}}
verdict(["One verdict: pass or block<br/>dashboard, merge request reports"])
repo --> deps & licenses & code & secrets & iac & headers --> policy --> verdict
Los archivos policy-* son tu configuración, en tu carpeta security/: cada
uno es opcional y completa los valores predeterminados de oss-analyzer (consulta
Personalizar oss-analyzer).
Cada hallazgo termina en un único panel, aquí en un proyecto de demostración deliberadamente vulnerable (590 hallazgos, 333 de ellos bloqueantes):

Tres formas de ejecutarlo, con la misma política y el mismo informe:
include:
- component: gitlab.com/thalesgroup/oss-analyzer/[email protected]
Eso es todo, en gitlab.com: el componente se publica en su CI/CD
Catalog desde gitlab.com/thalesgroup/oss-analyzer,
una copia de solo lectura de este repositorio. En una instancia autogestionada, que
solo puede incluir sus propios proyectos, replica ese proyecto allí e inclúyelo
por su ruta en tu instancia; su imagen permanece en
registry.gitlab.com/thalesgroup/oss-analyzer (OSA_IMAGE_REPOSITORY),
etiquetada con el SHA del commit del componente. El análisis se ejecuta en la etapa test en merge requests, la
rama por defecto, programaciones y tags; osa_report_aggregate es el único job
que puede bloquear. El dashboard se enlaza como OSS security dashboard en
el widget del pipeline del MR, y la pestaña Reports del MR muestra los hallazgos
(Security scan, Code Quality).
OSA_<TOOL>_IMAGE — consulta
Container images.security/policy-global.yml,
policy-licenses.yml, policy-semgrep.yml, policy-gitleaks.toml,
conteniendo solo tus diferencias — consulta
Customizing oss-analyzer. inputs:
OSA_DISTRIBUTION_MODEL: distributed # saas | distributed | oss_library
OSA_MODE: audit # onboarding: report everything, never block
OSA_JOB_NEEDS: ["build"] # wait for your build first
Cada entrada está documentada en la página del Catálogo de CI/CD del componente y en
templates/analyze.yml.OSA_MODE: audit informa de todo y
no bloquea nada. OSA_GATE_SCOPE: new mantiene el bloqueo de lo que es nuevo: en una
merge request, solo bloquea lo que aún no está en el último informe exitoso
de la rama destino; en otros casos, los hallazgos se informan sin
bloquear (por lo que requiere pipelines de merge request). Consulta
Solo hallazgos nuevos.OSA_ENABLE_MR_COMMENT: true publica el veredicto,
los hallazgos bloqueantes y el enlace al panel como un único comentario, actualizado por
cada pipeline. Requiere un token de acceso al proyecto (ámbito api, rol
Reporter) en una variable CI/CD enmascarada OSA_GITLAB_TOKEN.OSA_MAVEN_MIRROR_URL (por ejemplo, un
remoto de Maven Central de tu repositorio de artefactos), con una variable enmascarada OSA_MAVEN_MIRROR_AUTH
si necesita credenciales, resuelve a través de un espejo en su lugar —
consulta Problemas conocidos.@0.4 sigue sus parches). La interfaz
0.x aún puede cambiar hasta la 1.0.0: un cambio incompatible incrementa la
versión menor, consulta CHANGELOG.md.jobs:
security:
uses: ThalesGroup/oss-analyzer/.github/workflows/security.yml@<ref>
with:
oss-analyzer-repository: ThalesGroup/oss-analyzer
oss-analyzer-ref: <ref> # the same ref as in `uses:`
Entradas, permisos y secretos: consulte GitHub Actions.
Analice un archivo de proyecto recibido (.zip, .tar.gz) o una carpeta sin
configurar CI:
security/scripts/analyze-archive.sh my-project.zip
El informe y un panel HTML se generan en
security-reports/<project-name>/ — consulta
Usage.
La documentación completa es security/README.md: configuración, cada entrada y ajuste, los informes, problemas conocidos. CHANGELOG.md enumera las versiones, empezando por los cambios disruptivos.
Existen buenos escáneres de código abierto para cada aspecto: Semgrep, Gitleaks, Syft, Grype, OSV-Scanner, Trivy, cdxgen, REUSE. Lo que le falta a un equipo rara vez es un escáner más. Es la parte entre ellos: una decisión en lugar de un montón de informes, reglas que están escritas en lugar de recordadas, y licencias tratadas con la misma seriedad que los CVE. oss-analyzer es esa parte.
Cada ejecución examina las tres superficies de lo que entregas, en conjunto: