Daten-Verschlüsselung im ioBroker
Suchergebnisse
Normalerweise werden alle Einstellungen in Adaptern unverschlüsselt abgelegt. Das heißt, dass zum Beispiel die Instanz-Konfiguration einfach mit in die Objects-Datenbank geschrieben wird. Im Klartext.
Gerade sensible Informationen sollten daher verschlüsselt abgelegt werden.
Seit js-controller Version 3.0.0 gehört eine Verschlüsselung zum Standard und kann sehr einfach verwendet werden.
Zugriff verbieten
Eine kleine Hürde bietet die Funktion, dass der Zugriff auf sensible Konfigurations-Attribute von anderen Adaptern aus verboten wird. Das heißt, dass diese Info einfach nicht ausgeliefert wird. Der Admin-Adapter ist dabei die Ausnahme (immerhin müssen die Daten noch konfigurierbar bleiben).
Dazu kann in der io-package.json mit einem neuen Attribute festgelegt werden, dass diese Information gefiltert wird, wenn ein anderer Adapter das Objekt liest.
"protectedNative": [
"user",
"password"
]
In diesem Beispiel sind also die beiden Attribute user und password nicht mehr von anderen Adaptern einfach so lesbar.
Daten verschlüsseln
Wie Du schon weißt, werden Objekte als JSON in der Datei /opt/iobroker/iobroker-data/objects.json abgelegt. Jede Eigenschaft wird dabei einfach im Klartext dort gespeichert. Hat nun jemand Zugriff auf diese Datei, können die Daten einfach gelesen werden. Passwörter, API-Token, Benutzernamen usw. liegen also im Klartext in dieser Datei.
Um die Daten nicht mehr im Klartext zu speichern, kann man einzelne Attribute verschlüsseln lassen. Dies geschieht ebenfalls über ein Attribut in der io-package.json des einzelnen Adapters.
"encryptedNative": [
"password"
]In diesem Beispiel wird also das Passwort verschlüsselt in der Objekt-Datenbank abgelegt und ist nicht mehr im Klartext lesbar.
Generell ist es sinnvoll, beide Attribute zu kombinieren (wie hier gezeigt). Also auch verschlüsselte Informationen nicht einfach auslesen zu lassen.
Die Verschlüsselung und Entschlüsselung passiert komplett automatisch. Die Informationen müssen also nicht manuell im Code entschlüssel werden.