Frage

In Ruby on Rails-Anwendungen, Datenbank.yml ist eine nur-text-Datei speichert die Datenbank-Anmeldedaten.

Wenn ich die Bereitstellung meiner Rails-Anwendungen habe ich eine nach der Bereitstellung Rückruf in meiner Capistrano Rezept erstellt einen symbolischen link in der Anwendung /config-Verzeichnis der Datenbank.yml-Datei.Die Datei selbst werden in einem separaten Verzeichnis außerhalb des standard-Capistrano /releases directory-Struktur.Ich chmod 400 Datei es ist also nur lesbar für den Benutzer, der es erstellt hat.

  • Ist diese ausreichend, um ihn zu verriegeln nach unten?Wenn nicht, was Sie sonst noch tun?
  • Ist jemand zu verschlüsseln Ihrer Datenbank.yml-Dateien?
War es hilfreich?

Lösung

Sie wollen auch zu machen Sie sicher, dass Sie Ihr Windows-system ist gut gesichert, um zu verhindern, dass Menschen sich anmelden als Ihre Capistrano bot.Ich würde vorschlagen, die Beschränkung des Zugangs zu den Passwort-geschützten Schlüssel-Paare.

Verschlüsseln .yml-Datei auf dem server ist sinnlos, da müssen Sie den bot die Taste, die gespeichert werden würde ...auf dem gleichen server.Verschlüsseln Sie es auf Ihrem Computer ist wahrscheinlich eine gute Idee.Capistrano entschlüsseln können, bevor Sie senden.

Andere Tipps

Die Art, wie ich angepackt haben, dieses ist, um das Datenbank-Kennwort in einer Datei mit lese-Berechtigungen nur für die Benutzer, die ich führe meine Anwendung als.Dann, in der Datenbank.yml ich benutze ERB die Datei zu Lesen:

production:
  adapter: mysql
  database: my_db
  username: db_user
  password: <%= begin IO.read("/home/my_deploy_user/.db") rescue "" end %>

Arbeitet ein Genuss.

Werfen Sie einen Blick auf das github Lösung: https://github.com/NUBIC/bcdatabase.bcdatabase bietet einen verschlüsselten Speicher, in dem die Passwörter können getrennt gehalten werden aus den yaml-Dateien.

bcdatabase

bcdatabase ist eine Bibliothek und utility die Bereitstellung von Datenbank-Konfiguration parameter management for Ruby on Rails Anwendungen.Es bietet eine einfache Mechanismus zum trennen der Datenbank Konfiguration die Attribute von application source code, so dass es gibt keine Versuchung, Sie zu überprüfen Passwörter in die version control system.Und es zentralisiert die Parameter für einen einzelnen server, so dass Sie können ganz einfach geteilt mehrere Anwendungen und leicht aktualisiert von einem einzigen administrator.

Auch wenn Sie sichern Sie die Datenbank.yml-Datei, die Menschen können immer noch schreiben, verwendet die gleichen Anmeldeinformationen, wenn Sie können, ändern Sie den code der Anwendung.

Eine andere Möglichkeit, dies zu betrachten ist:ist der web-Anwendung haben zu viel Zugriff auf die Datenbank.Wenn true niedrigeren Berechtigungen.Geben Sie gerade genug Berechtigungen für die Anwendung.Auf diese Weise kann ein Angreifer nur das tun, was die web-Anwendung in der Lage sein würde zu tun.

Wenn Sie sind sehr besorgt über die Sicherheit der yml-Datei, muss ich Fragen:Es ist gespeichert in Ihre Versionskontrolle?Wenn ja, das ist ein weiterer Punkt, wo ein Angreifer es bekommen können.Wenn Sie checkout/checkin über non-SSL, jemand könnte Sie abfangen.

Auch, mit einige Versionskontrolle (svn, zu erhalten), auch wenn Sie es zu entfernen, es ist immer noch da in der Geschichte.Also, selbst wenn Sie entfernt an einem gewissen Punkt in der Vergangenheit, es ist immer noch eine gute Idee, die Kennwörter ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top