Wir haben eine Anwendung, die eine Datenbank an meinem Arbeitsplatz verwendet. Derzeit wird zur Authentifizierung ein Benutzername-Passwort verwendet (wir könnten jedoch vertrauenswürdige IP-Verbindungen verwenden). Wir möchten kein Vertrauen verwenden, da wir die IPs für bestimmte Maschinen verschieben müssen, auf denen sich die Anwendung und die Datenbank befinden.
Da wir derzeit den Benutzernamen/das Passwort in den Konfigurationsdateien der Anwendung festlegen, kennen die Entwickler zusätzlich zu meinem Chef, der der Systemadministrator ist, und uns sechs Untergebenen das Passwort (ich bin der Chef), da jeder von uns abwechselnd als Administrator die Anwendung wartet und bereitstellt. Daher liegt das Risiko bei uns allen, das Passwort sicher aufzubewahren.
Was habe ich getan Vor Kurzem haben wir damit begonnen, das Passwort häufiger zu ändern, aber jetzt möchte ich, dass nur ich dieses Passwort kenne. Ich bin der Einzige, der auf Anweisung meines Chefs direkt Abfragen an die Datenbank ausführen darf. Nicht einmal mein Chef muss es auswendig wissen (vielleicht in meiner Abwesenheit und aktenkundig). Ich habe mir Folgendes überlegt:
- Erstellen Sie auf dem Server eine Textdatei, die nur für die Anwendung lesbar ist.
- Lassen Sie die Entwickler die Anwendung so codieren, dass für Passwörter im Klartext auf diese Datei verwiesen wird.
- Die Anwendung verwendet dies zur Anmeldung.
Ich denke, dass die Entwickler das Passwort immer noch preisgeben können, wenn sie in der Anwendung Code speichern, der dies für sie erledigt (NICHT, dass sie böse sind, wir versuchen nur, gemeinsam das kollektive Risiko zu minimieren).
Frage Gibt es eine bessere Möglichkeit, diesen Ansatz zu perfektionieren, und gibt es auch eine andere Möglichkeit, die ich außer dieser verwenden könnte?
Plattformen: Linux (Ubuntu Server), PostgreSQL, Java
Antwort1
Die alte Unix/Linux-Methode ist:
vi /etc/my_app.conf
database_ip=192.168.123.123
database_instance=db1
database_user=my_app
database_password=secret_in_plaintext
Dies löst Ihr Problem zwar nicht sofort, aber... In Zukunft können Sie genau die gleichen Anwendungsbinärdateien (war/jar) bereitstellen aufandersAnwendungsserver (Produktion, Vorproduktion, Test, Entwicklung). Diese können alle unterschiedliche Datenbanken haben (Produktion, Vorproduktion, Test, Entwicklung). Auf diese Weise benötigen Entwickler letztendlich überhaupt keinen Zugriff auf die Produktion.