質問

Ruby on Rails アプリケーション内では、database.yml はデータベース認証情報を保存するプレーン テキスト ファイルです。

Railsアプリケーションをデプロイすると、アプリケーションの /configディレクトリ内にdatabase.ymlファイルにシンボリックリンクを作成するCapistranoレシピに展開後のコールバックがあります。ファイル自体は、標準の Capistrano /releases ディレクトリ構造の外側にある別のディレクトリに保存されます。ファイルを chmod 400 して、ファイルを作成したユーザーのみが読み取れるようにします。

  • これでロックダウンするには十分ですか?そうでない場合は、他に何をしますか?
  • 誰かが自分のdatabase.ymlファイルを暗号化していますか?
役に立ちましたか?

解決

また、ユーザーがログインできないように SSH システムが十分に保護されていることを確認することも必要です。 として Capistrano ボット。パスワードで保護されたキーペアへのアクセスを制限することをお勧めします。

サーバー上の .yml ファイルを暗号化しても、保存されるキーをボットに渡す必要があるため、役に立ちません。。。同じサーバー上にあります。マシン上で暗号化することはおそらく良い考えです。Capistrano は送信前に復号化できます。

他のヒント

私がこれに取り組んだ方法は、アプリケーションを実行するユーザーにのみ読み取り権限を持つファイルにデータベースのパスワードを置くことです。次に、database.yml で ERB を使用してファイルを読み取ります。

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

ご馳走になります。

この github ソリューションを見てください。 https://github.com/NUBIC/bcdatabase. 。bcdatabase は、パスワードを yaml ファイルから分離して保存できる暗号化されたストアを提供します。

データベース

BCDATABASEは、Ruby on Railsアプリケーション用のデータベース構成パラメーター管理を提供するライブラリとユーティリティです。データベース構成属性をアプリケーションソースコードから分離するための簡単なメカニズムを提供して、バージョン制御システムにパスワードをチェックする誘惑がないようにします。また、単一のサーバーのパラメーターを一元化して、複数のアプリケーション間で簡単に共有し、単一の管理者によって簡単に更新できるようにします。

Database.yml ファイルを保護したとしても、アプリケーションのコードを変更できる場合は、同じ資格情報を使用して書き込みを行うことができます。

これを別の方法で見ると次のようになります。Web アプリケーションはデータベースに頻繁にアクセスする必要がありますか。true の場合、権限を下げます。アプリケーションに必要なだけの権限を与えます。この方法では、攻撃者は Web アプリケーションが実行できることのみを実行できます。

yml ファイルのセキュリティについて非常に心配している場合は、次のように尋ねる必要があります。バージョン管理に保存されていますか?もしそうなら、それは攻撃者が攻撃できるもう一つのポイントです。非 SSL 経由でチェックアウト/チェックインを実行している場合、誰かがそれを傍受する可能性があります。

また、一部のバージョン管理 (svn など) では、削除しても履歴に残ります。したがって、過去のある時点で削除したとしても、パスワードを変更することをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top