fb
info@yenlo.com
WSO2 6 min

Verwendung eines verschlüsselten Passworts in einem Datendienst

Rob Blaauboer
Rob Blaauboer
Integration Consultant & WSO2 Trainer
Verwendung eines verschluesselten Passworts in einem Datendienst

Es ist eine gute Idee, Passwörter, Client-IDs, Geheimnisse und andere Informationen, die Sie geheim halten möchten, zu verschlüsseln.

WSO2-Produkte verfügen über ein integriertes Tool namens Secure Vault, mit dem Sie Werte verschlüsseln können. Während die Implementierung „Secure Vault“, also sicherer Tresor, genannt wird, wird das zugrunde liegende Tool selbst als „Cipher Tool“, also als Verschlüsselungstool, bezeichnet. In diesem Blogbeitrag werde ich Ihnen zeigen, wie Sie das Cipher Tool aktivieren und wie Sie danach ein Passwort verschlüsseln können, das Sie in einer Datenquellenkonfiguration als Teil eines Datendienstes verwenden werden.

Ciphertool

Ich werde das Cipher Tool in einer sofort einsatzbereiten Kopie des Enterprise Integrator 6.6.0 verwenden. Sofort einsatzbereit bedeutet in diesem Fall keine Änderungen, keine Modifikationen – entpacken Sie die ZIP-Datei auf dem Desktop und folgen Sie dann den Anweisungen auf Ihrem eigenen PC oder Server. Das alles geht ganz einfach. Ich arbeite mit dem Betriebssystem CentOS 7 und verwende daher die für Linux typischen Shell-Skripte. Für Windows verwenden Sie natürlich die BAT-Dateien im selben Verzeichnis (bin-Verzeichnis).

Wie funktioniert das Cipher Tool? Wenn Sie das Cipher Tool zum ersten Mal starten, verwendet es zwei Dateien, um zu bestimmen, was verschlüsselt werden muss, und um die verschlüsselten Werte zu speichern. Diese Dateien sind „cipher-text.properties“ und „cipher-tool.properties“. Diese befinden sich im Unterverzeichnis [EI-HOME]/conf/security.

Die Datei cipher-tool.properties enthält den Speicherort der Konfigurationsdateien, in denen die Passwörter verschlüsselt werden müssen. Das Format ist recht einfach und besteht aus drei Teilen:

  1. Pfad/Name der Konfigurationsdatei, z. B. conf/carbon.xml
  2. Die xpath-Referenz des Konfigurationseintrags, z. B. //Server/Security/KeyStore/Password
  3. Ein Flag, das entweder wahr oder falsch ist, das also angibt, ob der Wert, auf den der xpath verweist, verschlüsselt werden muss.

In der Dokumentation von WSO2 ist zu lesen, dass Sie einen Wert manuell verschlüsseln und in die Verschlüsselungstextdatei einfügen müssen. Das ist natürlich möglich, aber es gibt eine andere Lösung, die ich Ihnen später in diesem Blogbeitrag zeigen werde. Machen wir es zuerst so, wie es WSO2 vorgesehen hat.

Um die Verschlüsselung zu ermöglichen, müssen wir in das bin-Verzeichnis wechseln, in dem sich das Cipher Tool-Skript befindet.

Beim ersten Start muss ein zusätzlicher Parameter angegeben werden: -Dconfigure. Dadurch werden die in den beiden Dateien angegebenen Standardeinstellungen verwendet und verschlüsselt.

Sehen wir uns diese Dateien im Detail an und anschließend das Ergebnis der Ausführung der Verschlüsselungsaufgabe.

Zuerst die Datei cipher-text. Hier finden Sie die geheimen Aliasnamen und die entsprechenden Klartext-Passwörter, die verschlüsselt werden müssen. Der Wert steht in den eckigen Klammern.

cipher text properties

In der cipher-tool-Datei findet man den Speicherort der Datei, in der der verschlüsselte Wert gespeichert werden muss.

cipher tool properties required parameters

Lassen Sie uns das Cipher Tool zunächst mit dem erforderlichen Parameter starten.

ciphertool carbon security

Wenn wir uns die carbon.xml-Datei ansehen, sehen wir, dass der ursprüngliche Klartextwert tatsächlich ersetzt wurde. Wir sehen jetzt Folgendes:

carbon.xml file

<Password svns:secretAlias=“Carbon.Security.KeyStore.Password“>password</Password>

Starten wir nun den Enterprise Integrator. Da wir auch das Keystore-Passwort verschlüsselt haben, müssen wir es beim Start eingeben, da wir zum Entschlüsseln der Passwörter das verschlüsselte Passwort benötigen.

carbon security enterprise integrator

Wenn Sie das Passwort nicht eingeben möchten, gibt es eine (nicht unbedingt ideale) Lösung, und zwar den Einsatz einer Klartext-Datei, die beim Start gelesen wird. Der Name sollte wie folgt lauten: Passwort -tmp. Die Datei sollte im Verzeichnis [EI-HOME] gespeichert sein. Wenn Sie möchten, dass die Datei an diesem Speicherort verbleibt, müssen Sie sie Passwort-persist nennenBeachten Sie, dass solche Dateien für Windows das Suffix .txt haben müssen.

Jetzt startet der Enterprise Integrator und wir können einen Wert manuell verschlüsseln. Lassen Sie uns das Passwort einer Datenquellenkonfiguration für MySQL verschlüsseln. Ich nenne den verschlüsselten Wert: Mysql.DB.Password. Aber zuerst starten wir das Cipher Tool erneut, diesmal ohne den oben erwähnten zusätzlichen Parameter. Beachten Sie, dass das Keystore-Passwort (standardmäßig wso2carbon) zweimal eingeben werden muss. In meinem Setup ist das Passwort für die Datenbankverbindung „root“ (ich weiß, dass ein solches Passwort nicht sicher ist, aber das ist natürlich eine Beispiel-Einstellung).

Nachdem der Wert zum zweiten Mal eingegeben wurde, wird der verschlüsselte Wert im Terminal angezeigt. Kopieren Sie diesen Wert.

encrypted value

Öffnen Sie die Datei cipher-text und fügen Sie das Passwort zur Datei hinzu.

cipher text properties password

Jetzt können Sie diesen Wert in einer Datenquellenkonfiguration verwenden.

Einrichtung

Natürlich sind für die Einrichtung einige Schritte erforderlich, bevor wir uns mit dieser Konfiguration genauer befassen. Ich werde eine Datenbank in der Tabelle erstellen, um dies in meinem lokalen Maria DB-Setup auszuprobieren. Die SQL-Befehle sind in diesem Blogbeitrag angeführt, für den Fall, dass Sie sie ausprobieren möchten. Es handelt sich dabei um eines der Beispiele, die wir zu Schulungszwecken verwenden.

create database trainingdb;

use trainingdb;

CREATE TABLE books (number INT, title VARCHAR(50), writer VARCHAR(40), onloan CHAR(1));

INSERT INTO books (number, title, writer, onloan) VALUES(1,"A brief history of time", "S. Hawking", "N");

INSERT INTO books (number, title, writer, onloan) VALUES(2,"The Hitchhikers Guide to the Galaxy", "D. Adams", "N");

INSERT INTO books (number, title, writer, onloan) VALUES(3,"The Picture of Dorian Gray", "O. Wilde", "N");

select * from  books;

create training cipher tool properties

Wir haben jetzt eine Datenbank und eine Tabelle mit drei Datensätzen. Diesen Teil streifen wir daher nur kurz. Als Nächstes müssen wir die Datenquellenverbindung zur Tabelle herstellen. Dafür müssen wir zum Enterprise Integrator einen JDBC-Connector hinzufügen. Dieser wird im lib-Verzeichnis gespeichert und kann direkt im Home-Verzeichnis des Enterprise Integrators ([EI-HOME]) gefunden werden. Sie können einen JDBC-Connector von mehreren Seiten herunterladen, beispielsweise von dieser URL . Bitte beachten Sie, dass ich den MySQL-Connector und nicht den MariaDB-Connector verwende. Das mache ich, weil dies früher bei MariaDB aufgrund eines Fehlers im JDBC-Connector erforderlich war. Kopieren Sie die JAR-Datei (diese befindet sich in der ZIP-Datei) in das lib-Verzeichnis und starten Sie den Server (neu). Dass ist deshalb nötig, weil das lib-Verzeichnis nur beim Start gelesen wird.

enterprise integrator home directory

Lassen Sie den Enterprise Integrator starten und auf die URL der Benutzeroberfläche zur Verwaltung zugreifen.

enterprise integrator management ui

Melden Sie sich mit Admin / den Admin-Anmeldeinformationen an und wählen Sie auf der Registerkarte „Configure“ (Konfigurieren) „Datasource“ (Datenquelle) aus.

Enterprise Integrator data sources

Klicken Sie auf „Add Datasource“ (Datenquelle hinzufügen). Füllen Sie das Formular aus. Wie Sie sehen können, haben wir keine Möglichkeit, einen geheimen Alias zu verwenden, da die Datenquellendefinition den Wert speichert, der bei der Registrierung verschlüsselt wurde. Ein Administrator kann also eine Datenquelle erstellen und Entwickler können diese Datenquelle bei der GENERIERUNG von Datendiensten verwenden, da dafür eine vordefinierte Datenquelle erforderlich ist.

add datasource

Das Herunterladen des Wertes zeigt die Konfiguration. Ich habe alles ein wenig bereinigt, um das XML-Markup anzuzeigen.

xml markup datasource
new datasource

Aber wenn Sie einen Datendienst erstellen, ist das etwas anderes. Dort müssen Sie ein Passwort eingeben. Wenn Sie also möchten, dass Ihre Entwickler „Create Service“ (Dienst erstellen) verwenden und sie das Passwort nicht offenlegen sollen, können Sie den zuvor beschriebenen Prozess mit dem Wert Mysql.DB.Password verwenden.

create Mysql DB Password value

 Ich habe die Auswahlabfrage zum Datendienst hinzugefügt und wie Sie sehen können, erhalte ich eine Antwort.

training data services

Alternative Lösung

Gibt es auch eine andere Lösung? Da der Wert zur cipher-text-Datei hinzugefügt werden muss, könnten Sie unter „conf“ auch eine Dummy-XML-Datei erstellen und die Startkonfiguration verwenden.

Heißt das, dass man die Startkonfiguration mit Feldern verwendet, die man selbst in cipher-text und cipher-tool definiert, um den verschlüsselten Wert zu generieren?

Ich werde einen neuen EI einrichten und das ausprobieren. Ich habe im conf-Verzeichnis password.xml erstellt.

password xml

Ich habe die Datei cipher-text so geändert, dass sie das Mysql.DB.Password enthält.

change cypher text file to include password

Und cipher-tool zum Speichern des verschlüsselten Werts.

cipher tool to store encrypted value

Lassen Sie uns das Skript ausführen. Wir bekommen diese Meldung:

Das geschützte Token [Mysql.DB.Password] wurde in /conf/password.xml erfolgreich aktualisiert. Das sehen wir, wenn wir uns diesen Eintrag in der Datei password.xml ansehen.

protect token password xml.file

In cipher-text wird nun der verschlüsselte Wert angezeigt.

encrypted value ciper text

Ein Schnelltest mit „Create Data Service“ (Datendienst erstellen) bestätigt, dass es funktioniert.

Create data service test
deu
Schließen
Wir schätzen es
Pflege zu teilen

Bitte wählen Sie eine der folgenden Social Media-Plattformen aus, um den Inhalt dieser Seite mit der Welt zu teilen