2011-12-31 23 views
12

すべての新しいPlayアプリは、設定ファイルに新しいアプリケーションシークレットを生成します。アプリの秘密を秘密に保つにはどうすればいいですか?

application.secret=asdfadsfdasf

私はHerokuの上で展開されるオープンソースのアプリを開発しています。アプリの秘密を秘密に保つにはどうすればいいですか(たとえば、ソース管理にコミットしないなど)?

正確には、アプリの秘密は使用されていますか?おそらく、私の限られた目的のために、私はそれを秘密にしておく必要はありませんか?

答えて

24

あなたは環境変数として秘密を外部化することができます。 conf/application.conf

単に

application.secret=${APP_SECRET} 

application.secret=abc123... 

を交換し、その後でHerokuので、この設定VARを設定します。今、あなたはあたりアプリに秘密を管理することができ

$ heroku config:add APP_SECRET=abc123... 

それらをバージョンコントロールにチェックすることは避けてください。

+0

これは右のように聞こえます - ありがとう! – ripper234

+0

とあなたはherokuを展開するために使用しない場合は? jasyptのようなものを使うオプションがありますか? –

0

秘密が重要であるように見えますが、プロダクション対開発のために新しいものを生成することができます。したがって、開発のためにSVNにチェックインして、別のものをプロダクション用に生成することができます。

http://www.playframework.org/documentation/1.0/production

+0

しかし、SVN(well、git)の私のapplication.confは本番環境にデプロイされます。言い換えれば、source.confの下に私のapplication.confを保存したい。私のプロダクションは、Herokuにたいする「git push」にすぎません。だから、私はアプリのキーを変更するために、配備後のスクリプトを実行する必要がありますか?しかし...このスクリプトはソース管理下に保存されていますか? Herokuに展開する際の実際的な解決策は何ですか? – ripper234

+0

私は単純にgit pushを使わないことを主張していたと思いますが、プロダクションに進む前に新しい鍵を生成するスクリプトが必要で、ソース管理にチェックインされません。私が確信していない質問は、あなたが問題を作り出す意志を押したときに毎回そのキーを再生成すればいいのでしょうか?もしそうでなければ、生産に秘密を保管することはそれほど重要ではないかもしれません。 – chubbsondubs

+0

私はアプリのキーを変更すると良い考えではないと思います。何かにサインインした場合(ユーザーパスワードをハッシュするなど)、この正確な署名を繰り返す必要があります。これはアプリの秘密を使用する必要があると思います。 – ripper234

関連する問題