Gate di sicurezza e conformità open source per GitLab CI e GitHub Actions: SBOM, vulnerabilità delle dipendenze, SAST, segreti, IaC e licenze, sotto un'unica policy versionata e un unico verdetto. Nessun SaaS, nessun codice inviato a terze parti.
Suite di analisi del codice 100% Open Source (sicurezza e conformità) per GitLab CI e GitHub Actions — SCA, SAST, segreti e licenze, guidata da un'unica policy versionata. Repository poliglotti (Go, Rust, Java/JVM, Python, JS/TS, C/C++). Nessun SaaS, nessun codice inviato a terze parti.
oss-analyzer verifica un repository in base alla sua sicurezza e conformità in CI: esegue gli scanner, applica un'unica policy versionata e fornisce un unico verdetto, con una dashboard HTML e report per le 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
I file policy-* sono le tue impostazioni, nella tua cartella security/: ciascuno
di essi è opzionale e completa i valori predefiniti di oss-analyzer (vedi
Personalizzare oss-analyzer).
Ogni risultato confluisce in un'unica dashboard, qui su un progetto demo volutamente vulnerabile (590 risultati, 333 dei quali bloccanti):

Tre modi per eseguirlo, con la stessa policy e lo stesso report:
include:
- component: gitlab.com/thalesgroup/oss-analyzer/[email protected]
Questo è tutto, su gitlab.com: il componente è pubblicato nel suo CI/CD
Catalog da gitlab.com/thalesgroup/oss-analyzer,
una copia di sola lettura di questo repository. Su un'istanza self-managed, che
può includere solo i propri progetti, esegui il mirror di quel progetto lì e includilo
tramite il suo percorso sulla tua istanza; la sua immagine rimane su
registry.gitlab.com/thalesgroup/oss-analyzer (OSA_IMAGE_REPOSITORY),
taggata con lo SHA del commit del componente. L'analisi viene eseguita nello stage test sulle merge request, sul
branch predefinito, sulle pianificazioni e sui tag; osa_report_aggregate è l'unico job
che può bloccare. La dashboard è collegata come OSS security dashboard nel
widget della pipeline della MR, e la scheda Reports della MR mostra i risultati
(Security scan, Code Quality).
OSA_<TOOL>_IMAGE — vedi
Container images.security/policy-global.yml,
policy-licenses.yml, policy-semgrep.yml, policy-gitleaks.toml,
contenente solo le tue differenze — vedi
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
Ogni input è documentato nella pagina del CI/CD Catalog del componente e in
templates/analyze.yml.OSA_MODE: audit segnala tutto e
non blocca nulla. OSA_GATE_SCOPE: new continua a bloccare ciò che è nuovo: su una
merge request, blocca solo ciò che non è già presente nell'ultimo
report riuscito del branch di destinazione; altrove, i risultati vengono segnalati senza
blocco (quindi richiede le merge request pipeline). Vedi
Solo nuove segnalazioni.OSA_ENABLE_MR_COMMENT: true pubblica il verdetto,
le segnalazioni bloccanti e il link alla dashboard come un unico commento, aggiornato da
ogni pipeline. Richiede un project access token (scope api, ruolo
Reporter) in una variabile CI/CD mascherata OSA_GITLAB_TOKEN.OSA_MAVEN_MIRROR_URL (ad es. un
remote Maven Central del tuo repository di artefatti), con una variabile mascherata OSA_MAVEN_MIRROR_AUTH
se richiede credenziali, risolve tramite un mirror —
vedi Insidie note.@0.4 segue le sue patch). L'interfaccia
0.x potrebbe ancora cambiare fino alla 1.0.0: una modifica incompatibile incrementa la
versione minor, vedi 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:`
Input, permessi e segreti: vedi GitHub Actions.
Analizza un archivio di progetto ricevuto (.zip, .tar.gz) o una cartella senza
configurare la CI:
security/scripts/analyze-archive.sh my-project.zip
Il report e una dashboard HTML finiscono sotto
security-reports/<project-name>/ — vedi
Usage.
La documentazione completa è security/README.md: configurazione, ogni input e impostazione, i report, le insidie note. CHANGELOG.md elenca le versioni, prima le modifiche che rompono la compatibilità.
Esistono buoni scanner Open Source per ogni esigenza: Semgrep, Gitleaks, Syft, Grype, OSV-Scanner, Trivy, cdxgen, REUSE. Ciò che manca a un team è raramente un altro scanner. È la parte tra di essi: una sola decisione invece di un mucchio di report, regole scritte invece che ricordate, e licenze trattate con la stessa serietà delle CVE. oss-analyzer è quella parte.
Ogni esecuzione esamina le tre superfici di ciò che distribuisci, insieme: