Feldverschlüsselung¶
Zugangsdaten und andere Geheimnisse liegen in der Datenbank mit AES-256-GCM verschlüsselt. Im Klartext existieren sie nur kurz im Arbeitsspeicher — etwa wenn der Server einem Collector seine Check-Konfiguration ausliefert oder selbst einen Check ausführt.
Was verschlüsselt ist¶
| Bereich | Werte |
|---|---|
| Hosts | SNMP-Community, SNMPv3-Auth- und Priv-Passwort, SSH-Passwort, SSH-Schlüssel, Passwort bzw. Token-Geheimnis des API-Kontos |
| Checks | Passwort-, Schlüssel- und Community-Felder in der Check-Konfiguration, als Passwort deklarierte Script-Werte |
| Zugangsdaten-Sets | alle geheimen Felder (SNMP, SSH) |
| Discovery | SNMP-Communities und SNMPv3-Passwörter der Scans und Collector-Vorgaben, Standard-Community |
| Benachrichtigungskanäle | Tokens, Passwörter und Webhook-Adressen |
| E-Mail-Versand | SMTP-Passwort |
| Anmeldung | TOTP-Geheimnisse, SSO-Client-Secrets, LDAP-Bind-Passwort |
| KI | API-Schlüssel der Cloud-Anbieter |
| Zertifikat | privater Schlüssel, ACME-Kontoschlüssel, DNS-Zugangsdaten, EAB-Schlüssel |
| Push | privater Schlüssel des Push-Schlüsselpaars (VAPID) |
Schlüssel¶
FIELD_ENCRYPTION_KEY ist ein Base64url-kodierter 32-Byte-Schlüssel. Das Setup-Script erzeugt ihn mit:
Wirksam ist ausschließlich die Zeile FIELD_ENCRYPTION_KEY=… in der .env
neben der Compose-Datei (bei Standard-Installation /opt/vesana/.env) — von
dort setzt Docker Compose sie in die Container ein. Das Setup-Script setzt die
.env auf Rechte 600 und das Verzeichnis secrets/ auf 700 (Dateien darin
600); ein erneuter Lauf des Installers repariert zu offene Rechte.
secrets/field_encryption_key ist nur eine Kopie
Das Setup-Script legt den Schlüssel zusätzlich unter
secrets/field_encryption_key ab. Diese Datei wird von nichts gelesen:
keine Compose-Datei bindet sie ein, kein Dienst öffnet sie. Wer beim Umzug
nur sie ändert und die .env vergisst, hat nichts geändert — die Instanz
läuft weiter mit dem alten Schlüssel.
Ablauf¶
sequenceDiagram
participant U as Benutzer
participant API
participant DB
participant C as Collector
U->>API: Host anlegen mit SNMP-Community
API->>API: verschlüsseln mit FIELD_ENCRYPTION_KEY
API->>DB: speichern (Nonce + Chiffretext + Tag)
Note over DB: Klartext nirgends gespeichert
C->>API: Check-Konfiguration abholen (HTTPS, API-Key)
API->>DB: Host lesen
API->>API: entschlüsseln
API->>C: Konfiguration mit Zugangsdaten
Note over C: Klartext nur im Arbeitsspeicher
Maskierung in der API¶
API-Antworten geben verschlüsselte Felder nie im Klartext zurück, sondern als ***. Auch Super-Admins können gespeicherte Zugangsdaten nur setzen, nicht lesen. Wer ein Formular mit *** (oder einem leeren Passwortfeld) speichert, behält den gespeicherten Wert.
Unverschlüsselter Bestand¶
Werte aus sehr alten Installationen können noch unverschlüsselt in der Datenbank stehen. Sie werden weiter gelesen und beim nächsten Speichern verschlüsselt.
Schlüsselverlust¶
Schlüsselverlust = Daten unwiederbringlich
Ohne FIELD_ENCRYPTION_KEY lassen sich verschlüsselte Felder nie wieder lesen. Es gibt keinen Recovery-Mechanismus.
Konsequenz: Das Backup des Schlüssels ist genauso wichtig wie das Datenbank-Backup. Empfehlung in Backup & Restore. Nach einem Restore prüft Vesana, ob sich die verschlüsselten Werte mit dem aktuellen Schlüssel lesen lassen, und warnt, wenn nicht.
Schlüssel wechseln¶
Einen Schlüsselwechsel unterstützt Vesana nicht — weder in der Oberfläche noch per Werkzeug. Ein neuer FIELD_ENCRYPTION_KEY macht alle bisher verschlüsselten Werte unlesbar: Zugangsdaten an Hosts, Checks, Kanälen und Einstellungen müssten danach neu eingegeben werden, 2FA-Authenticator neu eingerichtet werden. Den Schlüssel deshalb nicht ändern, sondern sicher aufbewahren.
Verschlüsselung in Backups¶
Datenbank-Dumps enthalten die verschlüsselten Werte (nicht den Klartext, nicht den Schlüssel). Bei einem Restore in eine Instanz mit anderem FIELD_ENCRYPTION_KEY sind die Werte unlesbar — Restore also immer mit demselben Schlüssel.
Daher: .env-Backup zwingend zusammen mit dem Datenbank-Backup, aber nicht am selben Ort:
- Datenbank-Backup: Volume / Off-Site-Kopie
.env: Passwort-Manager / verschlüsselter separater Speicher
Anschluss¶
- Backup & Restore — wie Schlüssel und Backups zusammen behandelt werden
- Härtungs-Checkliste