Argus Dokumentasjon

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:

VariabelBeskrivelseStandard
BITBUCKET_URLURL til Bitbucket-instansen (må starte med https://)—
BITBUCKET_PROJECTSKommaseparert liste over prosjektnøkler å skanneAlle
CONCURRENCYAntall samtidige repos som sjekkes5
STALE_MONTHSAntall måneder uten commits før repo anses som inaktivt12
PR_MONTHSAntall mĂĄneder ĂĄ se tilbake for PR-aktivitet6
OSV_SEVERITY_THRESHOLDMinimums 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.

github.com/FrankBurmo/argus