Om Argus
Argus er et CLI-verktøy som reviderer Bitbucket Server/Data Center-repositories mot beste praksis innen sikkerhet, governance og DevOps-modenhet. Verktøyet kobler til Bitbucket via REST API, kjører et sett med automatiserte sjekker på alle repos i valgte prosjekter, og genererer en detaljert rapport.
Prosjektet bestĂĄr av to deler:
- bitbucket-audit/ — CLI-verktøyet (Node.js) som utfører skanning og produserer rapporter
- frontend/ — Nettleser-dashboard for visuell utforskning av resultater
Dashboardet kjører 100 % i nettleseren — ingen data lastes opp til noen server. Alt forblir lokalt.
Hurtigstart
Krav: Node.js 18 eller nyere.
cd bitbucket-audit
npm install
# Kopier eksempelfilen og fyll inn din Bitbucket-URL:
cp .env.example .env
# Kjør — du blir spurt om token første gang:
node index.js
Rapporten skrives til reports/audit-<tidsstempel>.json og reports/audit-<tidsstempel>.md. Ă…pne JSON-filen i dashboardet for visuell analyse.
Konfigurasjon
Argus konfigureres via miljøvariabler i .env-filen:
| Variabel | Beskrivelse | Standard |
|---|---|---|
BITBUCKET_URL | URL til Bitbucket-instansen (må starte med https://) | — |
BITBUCKET_PROJECTS | Kommaseparert liste over prosjektnøkler å skanne | Alle |
CONCURRENCY | Antall samtidige repos som sjekkes | 5 |
STALE_MONTHS | Antall måneder uten commits før repo anses som inaktivt | 12 |
PR_MONTHS | Antall mĂĄneder ĂĄ se tilbake for PR-aktivitet | 6 |
OSV_SEVERITY_THRESHOLD | Minimums alvorlighetsgrad for OSV-funn (LOW, MEDIUM, HIGH, CRITICAL) | HIGH |
Sjekker
Argus kjører 13 automatiserte sjekker gruppert i fire kategorier. Hver sjekk returnerer bestått, avvik (med anbefaling), eller ikke aktuelt.
Sikkerhet og avhengigheter
dep-vulns Kjente sĂĄrbarheter (OSV)
Skanner avhengighetsfiler (package-lock.json, pom.xml, requirements.txt, go.mod) mot OSV.dev API for kjente sårbarheter med alvorlighetsgrad ≥ konfigurert terskel.
Støtter npm, Maven, PyPI og Go. Bruker cache for å unngå dupliserte API-kall. Samler inn CVE-IDer, CVSS-score, berørte pakker og tilgjengelige fikser.
secrets Hemmeligheter i kode
Sjekker om repoet inneholder filer som typisk inneholder hemmeligheter: .env, id_rsa, *.pem, *.key, credentials.json, .npmrc, .aws/credentials, SSH-nøkler med mer.
Returnerer bestĂĄtt dersom ingen mistenkelige filer finnes.
owasp-dep-check OWASP Dependency-Check
Sjekker om OWASP Dependency-Check er integrert i Jenkinsfile eller byggfiler (build.gradle, pom.xml). Vurderer ogsĂĄ om npm audit eller annen SCA dekker behovet.
npm-audit npm Audit
Sjekker om npm audit eller audit-ci kjøres i CI/CD-pipeline eller som script i package.json.
renovate Renovate Bot
Sjekker om Renovate er konfigurert (renovate.json, .renovaterc, etc.). Vurderer ogsĂĄ om Dependabot er konfigurert som alternativ.
Governance og prosess
codeowners CODEOWNERS
Sjekker om repoet har en CODEOWNERS-fil i en av fire aksepterte plasseringer: rot, .github/, .bitbucket/, docs/.
branch-protection Branch-beskyttelse
Sjekker om default branch har no-rewrites-restriksjon i Bitbucket, som hindrer force push og historikk-omskriving.
pr-activity PR-praksis
Sjekker om repoet har nylig mergede pull requests med minst én reviewer innenfor de siste PR_MONTHS månedene.
DevOps-modenhet
pipeline CI/CD-pipeline
Sjekker om repoet har en CI/CD-pipeline konfigurert: Jenkinsfile, .gitlab-ci.yml, bitbucket-pipelines.yml, .circleci/config.yml, GitHub Actions, med mer.
stale Aktivt repo
Sjekker om repoet har commit-aktivitet innenfor de siste STALE_MONTHS mĂĄnedene. Inaktive repos kan ha uoppdagede sĂĄrbarheter.
Kodekvalitet
readme README
Sjekker om repoet har en README-fil i roten (README.md, README, README.txt).
tests Tester
Sjekker om repoet har testmapper (test/, tests/, __tests__/, spec/) eller testfiler med kjente navnemønstre (.test.js, .spec.ts, _test.go, Test.java).
linting Linting/formatering
Sjekker om repoet har konfigurert lintere eller formateringsverktøy: ESLint, Prettier, Biome, Flake8, Pylint, Checkstyle, EditorConfig, med flere (13+ verktøy støttet). Rapporterer hvilke verktøy som ble funnet.
Dashboard
Dashboardet er en statisk nettside som leser Argus-rapporter (JSON) i nettleseren. Ingen data sendes over nett — alt prosesseres lokalt. Dra og slipp en rapportfil, eller klikk «Last inn rapport».
Oversikt
Hovedvisningen gir et overblikk over hele porteføljen:
- KPI-kort: Totalt antall repos, repos som trenger tiltak, gjennomsnittlig sjekkdekning, antall sjekker med avvik
- Dekninsdiagram: Horisontale søyler per sjekk, sortert etter lavest dekning, fargekodiert (grønn ≥80 %, gul ≥40 %, rød <40 %)
- Prosjektsammenbrudd: Klikkbare kort per Bitbucket-prosjekt — viser antall repos og avvik, fargekodet etter alvorlighetsgrad
- Sjekksammenbrudd: Kort per sjekk med antall avvik og dekning-%, klikkbart for filtrering
- Prioritert tiltaksliste: Tabell over repoene med flest anbefalte tiltak — start her for størst effekt. Viser prioritetsnivå, reponavn, avvikende sjekker som badges, og tiltakstelling
SĂĄrbarheter
CVE-utforsker inspirert av Datadog Code Security:
- Sidepanel med filtre: Filtrer på alvorlighetsgrad (Critical/High/Medium/Low), økosystem (npm/Maven/PyPI/Go), prosjekt og fiks-tilgjengelighet
- Søkefelt: Søk etter CVE-ID, pakkenavn, reponavn eller CVSS-score
- Sårbarhetskort: Viser severity-badge, CVSS-score, sammendrag, berørt pakke med versjon, fiks-status, og lenker til OSV.dev/NVD/GitHub Advisories
- Detaljpanel: Klikk på en sårbarhet for å se fullstendig informasjon — berørte repos, referanselenker, aliaser, og fiks-versjon
- Eksporter issues: Last ned filtrerte issues som JSON i samme struktur som rapportinnlasting bruker
Repositories
Full matrise over alle repos med status-ikoner per sjekk:
- âś“ = bestĂĄtt
- ! = avvik med anbefalt tiltak
- âś• = avvik uten tiltak
- – = ikke aktuelt
Klikk pĂĄ en rad for ĂĄ ĂĄpne repo-detaljpanelet med fullstendig vurdering per sjekk.
Handlingskort (Remediation)
NĂĄr du ĂĄpner detaljpanelet for et repo med avvik, vises handlingskort under hver feilet sjekk. Kortene inneholder:
- Alvorlighetsgrad — Fargekodet badge (critical, high, medium, low)
- Begrunnelse — Hvorfor dette avviket er et sikkerhetsproblem
- Steg-for-steg-oppskrift — Konkrete tiltak med kommandoer for å fikse avviket
- Dokumentasjonslenke — Direkte lenke til relevant ekstern ressurs
Klikk på «Slik fikser du dette» for å ekspandere kortet. Kortene er sammenleggbare slik at panelet ikke oversvømmes med informasjon.
Rapportformat
CLI-verktøyet genererer to filer per kjøring:
- JSON (
audit-<tidsstempel>.json) — Maskinlesbar rapport for dashboardet og videre prosessering - Markdown (
audit-<tidsstempel>.md) — Menneskelesbar rapport egnet for Confluence, e-post, eller Git
JSON-rapporten inneholder:
{
"generatedAt": "2026-04-11T10:30:00.000Z",
"checks": ["renovate", "dep-vulns", ...],
"summary": {
"total": 142,
"byCheck": {
"renovate": {
"passed": 37,
"failed": 105,
"coveragePercent": 26.1
}
}
},
"repos": [
{
"project": "PLATTFORM",
"repo": "atlas-api",
"checks": { "renovate": true, "dep-vulns": false },
"assessments": { "dep-vulns": "Fant 3 HIGH-sĂĄrbarheter..." },
"vulnerabilities": [...]
}
]
}
Sikkerhet og tokens
Argus bruker et Bitbucket Personal Access Token (PAT) for autentisering. Tokenet hĂĄndteres sikkert:
- Windows: Kryptert med DPAPI og lagret i
~/.argus/token.enc - macOS: Lagret i Keychain via
security-kommandoen - Linux: Lagret via freedesktop Secret Service (
secret-tool)
Tokenet sendes kun som Bearer-token i Authorization-headeren — aldri i URL. HTTPS er påkrevd.
Dashboardet laster kun lokale filer — ingen API-kall eller dataoverføring.
Kildekode
Argus er ĂĄpen kildekode under MIT-lisensen.