2013-06-17 11 views
8

ご存知のように、config/database.ymlファイルにデータベースの正しいデータベース名、ユーザ名、パスワードを指定する必要があります。そうしないと、Railsアプリケーションは動作しません。Railsアプリケーションにデータベースパスワードを安全に提供

デフォルトの設定では、パスワードはconfig/database.ymlファイルのプレーンテキストです。アプリが無料のGitHubリポジトリにある場合、パスワードは公開情報です。これは重大なアプリにとって実行可能な選択肢ではありません。 (このパスワードを他のものに使用しない限り、チュートリアルの練習には問題ありません。)

これまでのところ私にとってうまくいった解決策がありますが、何か良いものがあるかどうかは疑問です。展開した例はhttps://github.com/jhsu802701/bsfです。

私が行うことは、開発環境のユーザー名とパスワードをプログラマチックに提供するためにconfig/database.ymlファイルを設定することです。開発環境では、config/database.ymlスクリプトにコマンドを追加して開発環境のユーザ名(私が使用するDebian Linuxの設定のための私の正規のユーザ名)と空のパスワードを取得します。プロダクション環境では、私のアカウントのどこかのファイルからユーザ名とパスワードを取得し、この情報をconfig/database.ymlファイルに書き込むコマンドをデプロイメントスクリプトに追加します。

もっと良い解決策はありますか?

これをカバーするRubyの宝石はありますか?そうでない場合、私は1つを作成することを考えています。

答えて

16

Herokuのは、それをしない方法、および他のレール店の大半はENV変数である

エクスポートお使いの環境には、2つの変数、

export POSTGRES_USERNAME='username' 
export POSTGRES_PASSWORD='password' 

、その後のことができますあなたのdatabase.ymlのファイルにこれは私がそれを動作させる方法です

username: <%= ENV['POSTGRES_USERNAME'] %> 
password: <%= ENV['POSTGRES_PASSWORD'] %> 
4

実行します。端末上

/cmd:

heroku config:set YOUR_DATABASE_PASSWORD=passywordy 

次に/config/database.ymlファイルにあります。

production: 
<<: *default 
password: <%= ENV['YOUR_DATABASE_PASSWORD'] %> 

export KEY=value 次にあなたにbashで入力して、あなたのシステム環境(Linuxの)に変数をエクスポートHerokuの以外に

1

(私はレール新しいMY_APP -dのPostgreSQLを使用する場合、このパスワードエリアが自動的に生成されます) Railsで呼び出すことができます。ENV['KEY']

bashで
:secrets.ymlで
export CMS_DATABASE_PASSWORD=MySecurePassword

password: <%= ENV['CMS_DATABASE_PASSWORD'] %>
0

上記既存のポストに記載されるように環境変数の設定、唯一現在のシェル・セッションの継続時間の環境変数を持続します。

環境変数を永続的に設定するには、export命令をシェル設定ファイルに追加する必要があります。

TL(その後、あなたの現在のセッションに変更を適用するためにsource ~/.bashrcを実行する); DR:あなたがBASHを使用している場合は、上記で十分べきであるが~/.bashrc.

export命令(複数可)を追加します(場合ほとんどの一般的なLinuxディストリビューションではBASHを使用しています)、あなたのシェル用に更新する設定ファイルを確実に識別することは非常に難しい場合があります。以下の記事は、その理由を説明し、どのconfigファイルを編集するのかを説明しています。

https://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables

関連する問題