在rails应用程序中放置安全密码/密钥的位置?
我有一些Web服务需要传入安全的令牌/密钥/密码。我应该在哪里为rails应用程序定义这些安全值? 我想在版本控制中使用开发键,但不希望生产键在版本控制中。 我该如何设置? 我是铁杆新手。
你正确地看到了问题。
将您的passwords
和keys
放在从版本控制中排除的某个yml文件中。
然后在生产服务器上,每次部署时创建相同的文件并将应用程序符号链接到它。
编辑。
Capistrano几乎可以满足这些需求:
-
将您的
yml
文件放在shared
文件夹中 -
在你的capistrano
deploy.rb
文件中:after 'deploy' do run "ln -s #{shared_path}/database.yml #{release_path}/config/database.yml" end
-
使用yml文件: http ://railscasts.com/episodes/85-yaml-configuration-file
apneadiving是对的,符号化文件是个好主意。 另一种方法是将密钥放在shell变量中,只能由运行应用程序的用户访问。 然后,在您的rails应用程序中,您将拥有
login = ENV['SERVICE_LOGIN'] password = ENV['SERVICE_PASSWORD']
从Rails 4.1.0开始,请查看secrets.yml 。