Password Safe
Artur Fischer
1. Warum benötigt man dieses Modul in IP-Symcon?
Standardmäßig speichert IP-Symcon Variableninhalte und Instanz-Konfigurationen in der Datei settings.json (und damit auch in Backups). Daraus ergeben sich typische Risiken:
- Klartext-Speicherung: Passwörter/Token können im Klartext in Konfigurationen oder Variablen auftauchen.
- Unsichere Backups: Backups enthalten Konfigurationen – wer Zugriff hat, kann ggf. Secrets auslesen.
- Sichtbarkeit: Admins/Benutzer mit Konsolen-Zugriff können Inhalte sehen.
- Verteilte Systeme: Mehrere Symcon-Instanzen erfordern sonst manuelle Pflege.
2. Wie werden diese Probleme beseitigt?
SymconSecrets folgt einem „Zero-Knowledge“-Prinzip:
- Verschlüsselung (AES-128-GCM): Secrets liegen in IP-Symcon nur als verschlüsselter Blob vor (Vault).
- Schlüssel-Isolation: Der Entschlüsselungs-Key liegt nicht in Symcon, sondern als Datei
master.keyim OS-Dateisystem (z.B. geschützter Ordner). - Stateless Editor: Der Editor arbeitet ohne Property-Zwischenspeicherung. Inhalte werden nur im RAM angezeigt/bearbeitet und nur nach „Encrypt & Save“ dauerhaft (verschlüsselt) gespeichert.
- Zusätzliche System-Secrets ausgelagert: Secrets, die früher typischerweise in Properties lagen (z.B. Sync-Token, WebHook-Passwort, Slave-Basic-Auth-Passwörter), werden verschlüsselt in einer separaten Datei
system.vaultgespeichert (ebenfalls AES-GCM).
Ergebnis: keine Passwörter/Token in der
settings.json, sofern du die vorgesehenen “Save … (encrypted)” Buttons nutzt.
Beinhaltete Module
- CredentialStore, PasswordSafe
Versionsverlauf
-
Stateless/Zero-Cleartext konsequent umgesetzt: Keine Secrets mehr als Properties (damit nichts im Klartext in
settings.json/Backups landet). Eingaben werden nur im UI/RAM verarbeitet und erst beim Speichern verschlüsselt abgelegt. -
Neue verschlüsselte System-Ablage (
system.vault):
Sync-Token, WebHook-Passwort (Slave) und per-Slave Basic-Auth-Passwörter (Master) werden verschlüsselt insystem.vaultgespeichert (zusätzlich zum eigentlichenVault). -
Master/Slave-UI bereinigt:
Token generieren/anzeigen nur am Master (Slave nur „Token eingeben + encrypted speichern“). Sichtbarkeiten inGetConfigurationForm()entsprechend angepasst. -
Per-Slave Security Settings erweitert:
In der Slave-Liste pro Slave: Server-Label, TLS-Modus (http/strict/pinned), Key-Provisioning (manual/sync) und optional Pinned-Fingerprint. -
Per-Slave Basic-Auth-Passwort Editor am Master:
Extra Panel, Auswahl “Server — URL”, Passwort wird verschlüsselt gespeichert; die URL-Auswahlliste wird dynamisch ausSlaveURLsgebaut. -
Key-Transport als Option + Sicherheitsregeln:
Key kann optional im Sync-Payload gesendet werden (wenn so konfiguriert), aber nur unter sicheren Bedingungen (z.B. nicht über reines HTTP). -
Rotate-Key vorbereitet:
Button/Workflow für Key Rotation (Master/Standalone sichtbar) in die UI integriert.