Sicheres Bereitstellen des Datenbankkennworts in einer Rails App

9

Wie Sie wissen, MÜSSEN Sie den korrekten Datenbanknamen, Benutzernamen und das Kennwort für die Datenbank in der Datei config / database.yml angeben, sonst funktioniert Ihre Rails-App nicht.

In der Standardeinstellung ist Ihr Kennwort in der Datei config / database.yml im Klartext angegeben. Wenn sich Ihre App in einem kostenlosen GitHub-Repository befindet, ist Ihr Kennwort eine öffentliche Information. Dies ist keine praktikable Option für eine seriöse App. (Es ist in Ordnung für eine Übungsaufgabe, vorausgesetzt, dass Sie dieses Passwort für nichts anderes verwenden.)

Ich habe eine Lösung, die für mich bisher funktioniert hat, aber ich frage mich, ob es etwas Besseres gibt. Sie können mein bereitgestelltes Beispiel unter Ссылка sehen.

Was ich mache, ist die Datei config / database.yml, um den Benutzernamen und das Passwort für die Entwicklungsumgebung programmatisch anzugeben. Für die Entwicklungsumgebung füge ich dem Skript config / database.ym Befehle hinzu, um den Benutzernamen der Entwicklungsumgebung zu erhalten (das ist mein normaler Benutzername für das von mir verwendete Debian-Linux-Setup) und ein leeres Passwort. (Ich gebe meinem Benutzernamen Postgres-Superuser-Berechtigungen.) Für die Produktionsumgebung füge ich einen Befehl im Deployment-Skript hinzu, der den Benutzernamen und das Passwort von anderen Dateien in meinem Konto erhält und diese Informationen in die Datei config / database.yml schreibt. p>

Gibt es eine bessere Lösung?

Gibt es einen Rubinstein, der das deckt? Wenn nicht, denke ich daran, einen zu erstellen.

    
jhsu802701 17.06.2013, 15:32
quelle

4 Antworten

16

Die Art und Weise, wie heroku das macht, und die allermeisten anderen Railshops sind mit ENV-Variablen

Exportieren Sie zwei Variablen in Ihre Umgebung,

%Vor%

dann in Ihrer Datenbank.yml-Datei können Sie tun

%Vor%     
Adam Carlile 17.06.2013 16:03
quelle
4

So mache ich es möglich:

An Terminal / cmd:

%Vor%

Dann in der Datei /config/database.yml;

%Vor%

(Dieser Passwortbereich wird automatisch generiert, wenn ich die neue Funktion "rails new my_app -d postgresql" verwendet habe)

    
cibinlik 07.11.2014 08:58
quelle
1

Auf anderen als Heroku exportieren Sie Variablen in die Systemumgebung (Linux) durch Eingabe von bash      %Code% Dann können Sie es in Rails von export KEY=value

aufrufen

z.B.
in bash:
ENV['KEY']
in secrets.yml:
export CMS_DATABASE_PASSWORD=MySecurePassword

    
Raan 11.12.2014 18:49
quelle
0

Wenn Sie die Umgebungsvariablen wie in den obigen Posts beschrieben einstellen, werden die Umgebungsvariablen nur für die Dauer der aktuellen Shell-Sitzung beibehalten.

Um die Umgebungsvariablen dauerhaft festzulegen, sollten die export -Anweisung (en) zu Ihrer Shell-Konfigurationsdatei hinzugefügt werden. (Führen Sie dann source ~/.bashrc aus, um die Änderungen auf Ihre aktuelle Sitzung anzuwenden)

TL; DR: Wenn Sie BASH verwenden, fügen Sie die export Anweisung (en) zu ~/.bashrc.

hinzu

Obwohl das oben Genannte (wenn Sie BASH in den meisten gängigen Linux-Distributionen verwenden) ausreichen sollte, kann es ziemlich schwierig sein, die zu aktualisierende Konfigurationsdatei für Ihre Shell zu identifizieren. Der folgende Post erklärt die Gründe dafür und gibt eine Anleitung, welche Konfigurationsdatei zu bearbeiten ist.

Ссылка

    
Skilly 29.07.2017 07:32
quelle