Die Kopie beim Syslog-Server ist der vom sshkv-Host unabhaengige Beleg: wer die Datenbank uebernimmt, kann die Hash-Kette neu rechnen, aber nicht zurueckholen, was schon beim Syslog liegt. Eigene kleine Implementierung mit node:dgram/node:net statt einer Bibliothek, weil das Format ueberschaubar ist und jede Abhaengigkeit im Sicherheitskern zaehlt. Strukturierte Daten werden nach RFC 5424 escaped und begrenzt (2048 Byte), Severity folgt dem Ergebnis, Facility standardmaessig authpriv. Der Sender wirft nie und meldet Fehler hoechstens einmal je Minute, damit ein ausgefallener Syslog-Server weder Aktionen verhindert noch das Log flutet. Web und Worker bekommen die Variablen, weil beide protokollieren. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
88 lines
4.2 KiB
Bash
88 lines
4.2 KiB
Bash
# SSHKeyVault – Konfiguration. Kopieren nach .env und Werte eintragen.
|
||
# Alle eigenen Variablen tragen das Praefix SSHKV_ (Ausnahme: DATABASE_URL fuer Prisma).
|
||
|
||
# --- Datenbank -----------------------------------------------------------------
|
||
# Betrieb (docker-compose.yml): Passwort der Datenbank; DATABASE_URL setzt Compose selbst.
|
||
POSTGRES_PASSWORD=
|
||
# Entwicklung:
|
||
DATABASE_URL=postgresql://sshkv:sshkv@localhost:5436/sshkv?schema=public
|
||
# Nur fuer Tests (wird von Vitest geleert!)
|
||
TEST_DATABASE_URL=postgresql://sshkv:sshkv@localhost:5436/sshkv_test?schema=public
|
||
|
||
# --- Web -----------------------------------------------------------------------
|
||
# Oeffentliche Adresse (hinter dem Reverse Proxy). Bestimmt Secure-Cookie und OIDC-Rueckruf.
|
||
SSHKV_APP_URL=http://localhost:3400
|
||
# Signiert Sitzungen. Erzeugen mit: openssl rand -base64 48
|
||
SSHKV_APP_SECRET=
|
||
|
||
# --- Betrieb -------------------------------------------------------------------
|
||
# Adresse/Port, an die die Weboberflaeche gebunden wird (Reverse Proxy davor).
|
||
SSHKV_BIND=127.0.0.1
|
||
SSHKV_PORT=3400
|
||
|
||
# --- Master-Key (nur Worker!) --------------------------------------------------
|
||
# Datei mit 32 zufaelligen Bytes. Erzeugen mit: head -c 32 /dev/urandom > master.key
|
||
# Ohne diese Datei ist jedes Datenbank-Backup wertlos – getrennt sichern!
|
||
SSHKV_MASTER_KEY_FILE=./geheim/master.key
|
||
# Betrieb: Datei auf dem Docker-Host, die als Secret nur in den Worker kommt.
|
||
# Rechte: chown 1001:1001, chmod 400 (der Worker verweigert lesbare Schluessel).
|
||
SSHKV_MASTER_KEY_HOST_FILE=./geheim/master.key
|
||
# Benutzer, unter dem der Worker laeuft (muss die Datei lesen duerfen). Standard 1001:1001.
|
||
# SSHKV_WORKER_USER=1001:1001
|
||
|
||
# --- OIDC (authentik) ----------------------------------------------------------
|
||
SSHKV_OIDC_ISSUER=
|
||
SSHKV_OIDC_CLIENT_ID=
|
||
SSHKV_OIDC_CLIENT_SECRET=
|
||
SSHKV_OIDC_NAME=authentik
|
||
# Gruppen im Anbieter, die auf Rollen abgebildet werden
|
||
SSHKV_OIDC_GROUP_ADMIN=sshkv-admins
|
||
SSHKV_OIDC_GROUP_OPERATOR=sshkv-operators
|
||
SSHKV_OIDC_GROUP_READER=sshkv-readers
|
||
|
||
# Entwicklung ohne authentik: Mock-OIDC aus docker-compose.test.yml (pnpm test:ziele:up).
|
||
# Der Issuer haengt am Host-Header – genau 127.0.0.1 verwenden, nicht localhost.
|
||
# Client-ID und -Secret prueft der Mock nicht; beliebige Werte funktionieren.
|
||
# Im Login-Formular sind Claims (email, name, groups …) vorbelegt und frei aenderbar.
|
||
# SSHKV_OIDC_ISSUER=http://127.0.0.1:8090/sshkv
|
||
# SSHKV_OIDC_CLIENT_ID=sshkv-dev
|
||
# SSHKV_OIDC_CLIENT_SECRET=sshkv-dev-geheim
|
||
# SSHKV_OIDC_NAME=Mock-OIDC
|
||
# Nur Entwicklung: OIDC ueber http erlauben (Mock-Anbieter). Im Betrieb nie setzen.
|
||
# SSHKV_OIDC_HTTP_ERLAUBT=1
|
||
|
||
# --- Notfall-Admin -------------------------------------------------------------
|
||
# Wird beim ersten Seed angelegt. TOTP wird bei der ersten Anmeldung eingerichtet.
|
||
SSHKV_BREAKGLASS_USER=notfall
|
||
SSHKV_BREAKGLASS_PASSWORD=
|
||
|
||
# --- Worker --------------------------------------------------------------------
|
||
# Zeitplan fuer den Abgleich aller Hosts (cron)
|
||
SSHKV_SYNC_CRON=30 2 * * *
|
||
|
||
# --- Syslog (optional, #027) ---------------------------------------------------
|
||
# Jeder Protokolleintrag geht zusaetzlich als RFC-5424-Zeile an einen Syslog-Server – die
|
||
# Kopie ausserhalb von sshkv. Ohne SSHKV_SYSLOG_HOST ist die Weiterleitung aus. Es gehen nur
|
||
# Akteur, Aktion, Ergebnis, Host, Zielbenutzer, Fingerprint und Hash hinaus, nie Details/Diff.
|
||
# Web und Worker protokollieren beide; beide brauchen die Variablen.
|
||
# SSHKV_SYSLOG_HOST=syslog.intern
|
||
# Standard 514
|
||
# SSHKV_SYSLOG_PORT=514
|
||
# udp (Standard) oder tcp (Oktettzaehlung nach RFC 6587)
|
||
# SSHKV_SYSLOG_PROTOKOLL=udp
|
||
# APP-NAME im Syslog-Kopf (Standard sshkv)
|
||
# SSHKV_SYSLOG_APPNAME=sshkv
|
||
# Facility (Standard authpriv; auch auth, daemon, user, local0 … local7)
|
||
# SSHKV_SYSLOG_FACILITY=authpriv
|
||
|
||
# --- Integrationstests (#011) ---------------------------------------------------
|
||
# SSH-Testziele aus docker-compose.test.yml. Die Compose-Datei liest dieselben Variablen
|
||
# fuer die Port-Bindung (host:port, nur 127.0.0.1).
|
||
SSHKV_TEST_ZIEL_A=127.0.0.1:2221
|
||
SSHKV_TEST_ZIEL_B=127.0.0.1:2222
|
||
# Passwoerter der Testziele fuer root und den Benutzer "test"
|
||
SSHKV_TEST_ROOT_PASSWORT=sshkv-test
|
||
SSHKV_TEST_TEST_PASSWORT=sshkv-test
|
||
# Mock-OIDC (Port-Bindung)
|
||
SSHKV_TEST_OIDC=127.0.0.1:8090
|