管理存储在github上的开源rails 3应用程序的安全性

orj*_*jan 7 open-source capistrano ruby-on-rails github

作为rails,开源的新手,很快就可以部署到生产环境,我有一些安全考虑因素.

如何处理database.yml非常好,如何管理rails-database-yml

但是从我的角度来看,普通的rails应用程序中有更多的配置设置,不应该托管在公共github存储库中并部署到生产中,例如

  • devise.rb - > config.pepper
  • secret_token.rb - > Application.config.secret_token
  • capistrano - > deploy.rb
  • ...

将config/****/*添加到.gitignore不仅会阻止新开发人员进行捆绑安装,db:create,db:migrate,rails服务器,而且如果带有初始化程序的新gem,则还可以使生产配置保持最新状态安装.

另一种可能性是添加一个带有敏感配置的environment.yml,比如database.yml,初始值设定项中的敏感配置会被覆盖吗?

这样可以在清理结账后轻松启动和运行,并且生产环境易于维护.

任何想法如何解决我上面的问题?

iai*_*ain 5

我通常在这些文件中放入"安全"数据,这通常用于开发目的.但是在制作中我使用capistrano将文件符号链接到另一个位置,如下所示:

invoke_command "ln -sf #{shared_path}/database.yml #{release_path}/config/database.yml"
Run Code Online (Sandbox Code Playgroud)

所以在生产服务器中我有一堆文件覆盖源代码管理中的文件.我甚至没有使用开发人员同意在开发和测试中使用的database.yml.example一些合理的默认值database.yml.

对于个人设置,例如API密钥,我通常创建一个config/settings.yml并从初始化程序内部读取它们:

SETTINGS = YAML.load(IO.read(Rails.root.join("config", "settings.yml")))
YourApp::Application.config.secret_token = SETTINGS["secret_token"]
Run Code Online (Sandbox Code Playgroud)