Zum Hauptinhalt springen

Schnellstart

Diese lokale Evaluation speichert in PostgreSQL, erzeugt eindeutige Zugangsdaten und lauscht nur auf Ihrem Rechner. Lesen Sie vor gemeinsamem oder entferntem Zugriff den Produktivbetrieb.

Sie brauchen Docker mit Compose v2 und Netzwerkzugriff von diesem Rechner auf Ihre Jira-Data-Center-Instanz.

1. Compose-Datei speichern​

Speichern Sie dies als docker-compose.yml in einem leeren Verzeichnis.

services:
postgres:
image: postgres:17-alpine
environment:
- POSTGRES_DB=riskscanner
- POSTGRES_USER=riskscanner
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?Create the one-time .env file first}
volumes:
- scanner-postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U riskscanner -d riskscanner"]
interval: 5s
timeout: 3s
retries: 20
networks:
- scanner-network

scanner:
image: arcsoftklg/sensitive-data-scanner:latest
depends_on:
postgres:
condition: service_healthy
ports:
# 8080 ist der Scanner. 8082 ist Keycloak, hier veröffentlicht, weil
# Keycloak den Netzwerk-Namespace dieses Containers teilt - siehe unten.
- "127.0.0.1:8080:8080"
- "127.0.0.1:8082:8082"
environment:
- SPRING_PROFILES_ACTIVE=prod
- SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/riskscanner
- SPRING_DATASOURCE_USERNAME=riskscanner
- SPRING_DATASOURCE_PASSWORD=${POSTGRES_PASSWORD:?Create the one-time .env file first}
- OIDC_ISSUER_URI=http://localhost:8082/realms/sensitive-data-scanner
- APP_BASE_URL=http://localhost:8080
- JIRA_CREDENTIAL_ENCRYPTION_KEY=${JIRA_CREDENTIAL_ENCRYPTION_KEY:?Create the one-time .env file first}
- FINDING_FINGERPRINT_HMAC_SECRET=${FINDING_FINGERPRINT_HMAC_SECRET:?Create the one-time .env file first}
restart: unless-stopped
networks:
- scanner-network

keycloak:
image: quay.io/keycloak/keycloak:26.1
# Keycloak läuft bewusst im Netzwerk-Namespace des Scanners, damit
# http://localhost:8082 für Ihren Browser und für den Scanner dasselbe
# bedeutet. Dieser Service deklariert deshalb keine eigenen Ports oder
# Netzwerke.
network_mode: "service:scanner"
depends_on:
- scanner
command: start-dev --import-realm --http-port=8082
environment:
- KC_BOOTSTRAP_ADMIN_USERNAME=keycloak
- KC_BOOTSTRAP_ADMIN_PASSWORD=${KEYCLOAK_BOOTSTRAP_ADMIN_PASSWORD:?Create the one-time .env file first}
- KC_HOSTNAME=http://localhost:8082
- KC_HOSTNAME_STRICT=false
- KC_HEALTH_ENABLED=true
configs:
- source: scanner-realm
target: /opt/keycloak/data/import/sensitive-data-scanner-realm.json
restart: unless-stopped

configs:
scanner-realm:
content: |
{
"realm": "sensitive-data-scanner",
"enabled": true,
"roles": {
"realm": [
{ "name": "ADMIN", "description": "Application administrator" },
{ "name": "USER", "description": "Authenticated application user" }
]
},
"clients": [
{
"clientId": "sensitive-data-scanner-frontend",
"name": "Sensitive Data Scanner Frontend",
"enabled": true,
"publicClient": true,
"protocol": "openid-connect",
"standardFlowEnabled": true,
"directAccessGrantsEnabled": true,
"redirectUris": ["http://localhost:8080/*"],
"webOrigins": ["http://localhost:8080"]
}
],
"users": [
{
"username": "admin",
"enabled": true,
"email": "admin@example.test",
"firstName": "Admin",
"lastName": "User",
"credentials": [{ "type": "password", "value": "${EVALUATION_ADMIN_PASSWORD:?Create the one-time .env file first}", "temporary": false }],
"realmRoles": ["ADMIN", "USER"]
},
{
"username": "user",
"enabled": true,
"email": "user@example.test",
"firstName": "Regular",
"lastName": "User",
"credentials": [{ "type": "password", "value": "${EVALUATION_USER_PASSWORD:?Create the one-time .env file first}", "temporary": false }],
"realmRoles": ["USER"]
}
]
}

networks:
scanner-network:
driver: bridge

volumes:
scanner-postgres-data:

2. Einmalige lokale Secrets erzeugen​

Führen Sie dies einmal im selben Verzeichnis aus. Ein erneuter Aufruf behält die bestehenden Werte, damit gespeicherte Zugangsdaten und Fundidentitäten nach einem Neustart lesbar bleiben.

umask 077
if [ ! -f .env ]; then
cat > .env <<EOF
POSTGRES_PASSWORD=$(openssl rand -hex 24)
JIRA_CREDENTIAL_ENCRYPTION_KEY=$(openssl rand -base64 32 | tr -d '\n')
FINDING_FINGERPRINT_HMAC_SECRET=$(openssl rand -hex 48)
KEYCLOAK_BOOTSTRAP_ADMIN_PASSWORD=$(openssl rand -hex 24)
EVALUATION_ADMIN_PASSWORD=$(openssl rand -hex 16)
EVALUATION_USER_PASSWORD=$(openssl rand -hex 16)
EOF
fi
chmod 600 .env

Bewahren Sie .env zusammen mit dem Datenbank-Backup auf. Geht eines der Scanner-Secrets verloren, werden gespeicherte Jira-Zugangsdaten oder Fundidentitäten unbrauchbar.

3. Starten​

docker compose up

Der erste Start lädt drei Images und führt die Datenbankmigrationen aus, rechnen Sie mit ein paar Minuten. Fertig ist er, sobald http://localhost:8080/actuator/health antwortet.

4. Anmelden​

Öffnen Sie http://localhost:8080/ui/ und melden Sie sich als admin mit dem Passwort aus grep EVALUATION_ADMIN_PASSWORD .env an.

Das mitgelieferte Keycloak hat zusätzlich den Benutzer user ohne Administrationsrechte. Sein Passwort steht in EVALUATION_USER_PASSWORD, falls Sie die rein lesende Sicht der Rolle USER sehen möchten.

Nur für lokale Evaluation

Die Ports sind an Loopback gebunden, das mitgelieferte Keycloak stellt Tokens aber weiterhin über unverschlüsseltes HTTP aus. Nutzen Sie für gemeinsamen oder entfernten Zugriff HTTPS und Ihren echten Identity Provider gemäss Produktivbetrieb.

5. Jira verbinden​

Gehen Sie zu Administration → Jira-Verbindung und tragen Sie die Basis-URL Ihrer Jira-Data-Center-Instanz und ein Servicekonto ein. Das Konto braucht Projekte durchsuchen auf den zu scannenden Projekten und sonst nichts; der Scanner liest ausschliesslich, über die REST-API. Siehe Jira-Verbindung.

6. Scan starten​

Gehen Sie zu Scans und starten Sie einen. Die Evaluation umfasst die ersten 1000 Vorgänge auf einem einzelnen Worker. Siehe Erster Scan.

Was Sie ohne Lizenz bekommen​

Ohne installierte Lizenzdatei läuft der Scanner eine fünftägige Evaluation:

EvaluationLizenziert
Vorgänge pro Scan1000Unbegrenzt
Scan-Worker1Konfigurierbar
AnhangsinhalteWerden nicht gelesenMit Feature SCAN_ATTACHMENTS
Dauer5 Tage ab erster NutzungGemäss Lizenzdatei

Die Lizenzseite zeigt die verbleibenden Tage. Endet die Evaluation, bleibt alles bereits Gescannte lesbar - Funde, Audit-Log, CSV-Export -, aber es startet kein neuer Scan mehr, bis eine Lizenz installiert ist. Die Frist hängt an den ältesten Daten in der Datenbank und nicht an einem Lizenzeintrag; das Löschen der Lizenz setzt sie also nicht zurück.

Siehe Lizenz und Preise.

Nächste Schritte​

  1. Jira verbinden
  2. Ersten Scan durchführen
  3. Richtig deployen