2015-12-21 7 views
5

Eine Möglichkeit zum Ausführen von Jobs ist das Speichern von Kontextparametern in Eigenschaftendateien. wie diese:Verschlüsselung/Verschlüsseln und Entschlüsseln von Passwörtern in .properties-Dateien mit Talend Data Integration

# 
#Wed Dec 16 18:23:03 CET 2015 
MySQL_AdditionalParams=noDatetimeStringSync\=true 
MySQL_Port=3306 
MySQL_Login=root 
MySQL_Password=secret_password_to_cipher 
MySQL_Database=talend MySQL_Server=localhost 

Das ist wirklich einfach und nützlich, aber das Problem dabei ist, dass Passwörter im Klar gespeichert werden.

Also ich bin auf der Suche nach Möglichkeiten, um leicht zu verschlüsseln. Hier gibt es 2 sehr insteresting Fragen bereits in Stack-Überlauf über Chiffrierung Passwort Technik diskutiert:

Aber sie sind Java nativer und ich bin für eine bessere Talend Integration suchen. Ich habe schon verschiedene Möglichkeiten in meinem Talend Job versucht:

Alle diese Techniken sind d escribed in einem Tutorial (in französisch, sorry) erklärt, wie man crypt passwords in Talend

Aber ein anderes Problem aufgetreten ist: Tasten/uncipher chiffrieren sind immer in klaren, wenn Sie also gute Möglichkeiten kennen diesen Punkt anzusprechen, ich werde sei froh, es zu experimentieren.

Antwort

2

Grundsätzlich kann alles, was eine Anwendung erreichen kann, erreicht werden, indem jemand in das System einbricht/die Kontrolle über die Anwendung übernimmt. Auch wenn Sie Verschleierung verwenden (z. B. base64 oder höher) oder echte Verschlüsselung, bei der die Schlüssel verfügbar sind (auch wenn sie möglicherweise verschleiert sind).

Also im Wesentlichen gibt es nicht gut genug, um zu tun, was Sie tun wollen und schlimmer: es kann einfach nicht existieren.

Was machen Sie stattdessen?

1. Begrenzen die Rechte

MySQL_Login=root ist ein großes Problem ... ein Kompromiss der Anwendung wird zu einem sofortigen Kompromiss der Datenbank (und dessen Daten) führen.

Beschränken Sie also die Rechte auf das, was für die Anwendung unbedingt benötigt wird.

Dies sollte wirklich getan werden und ist ziemlich einfach zu erreichen.

2.Separater Benutzer- und Admin-Level-Zugriff

Wenn bestimmte Dinge nur nach Benutzerinteraktion benötigt werden, können Sie vom Benutzer bereitgestellte Secrets verwenden (z. B. kann ein Passwort des Benutzers einen Hash geben und mit xor-ed versehen und abgerufen werden) Sie einen Schlüssel, der nicht immer in der Anwendung noch Konfigurationsdateien vorhanden ist).

Sie können diese z. um Berechtigungen in zwei Ebenen zu trennen: die normale Benutzerebene, die nur die minimalen Rechte hat, um die Anwendung für den durchschnittlichen Benutzer funktionsfähig zu machen (aber z. B. nicht die Anwendungsverwaltungsrechte, die die Verwaltung der Anwendung selbst erlauben) und die aufbewahrten Geheimnisse durch den Benutzer, um den Schlüssel außerhalb der Anwendung zu behalten, während kein Administrator im administrativen Teil der Anwendung angemeldet ist.

Dies wird selten getan, um ehrlich zu sein, noch nicht so einfach.

Aber auch mit allem, was Sie im Wesentlichen haben, um den Zugriff auf z. die Datenbank wird kompromittiert, wenn die Anwendung kompromittiert ist.

Aus diesem Grund sollten Daten wie das Benutzerpasswort der Anwendung nicht ohne entsprechende Vorsichtsmaßnahmen in der Datenbank gespeichert werden (dürfen).

+0

Danke für die Antwort. In der Tat, login = root wurde für meinen Test verlassen, ich benutze es nie in der Produktion. Aber es war ein guter Punkt zu unterstreichen. Ich werde den xor-ed Fall versuchen. Ich habe Ihnen die "akzeptierte" Antwort gegeben, so dass Sie das Kopfgeld erhalten, bevor es abläuft, aber ich hätte einen echten Anwendungsfall erwartet, den Sie experimentiert hatten. Danke trotzdem. – MordicusEtCubitus

+0

Um zu den 2 Ebenen des Zugriffs zu gelangen: – swa66

+0

Benutzer und Admin als ein Beispiel, aber Sie können mehr hinzufügen, obwohl es schnell komplex wird Holen Sie sich 1 Passwort speichern Sie einfach in Ihre Datenbank mit den minimalen Rechten unter anderem erlauben Lesezugriff auf die Benutzer Erstellen Sie einen zweiten Benutzer/Passwort für den Administratorzugriff. Fügen Sie nun für jeden Benutzer mit diesem Recht eine Spalte in der Benutzertabelle mit dem xor-ed admin passwd zur Datenbank und ihrem eigenen Passwort-Hash hinzu. Wenn Sie also das Passwort im Klartext sehen, generiert es das Admin-Passwort und speichert es es in der Sitzung mit der Datenbank mit Admin-Rechten für die Sitzung – swa66

Verwandte Themen