ruby-on-rails – 在AWS上使用Capistrano的Rails secrets.yml VS
关于如何在网上和那里管理API令牌有一些问题,但我看到很多人只是重复他们在其他地方阅读的内容,而且他们往往没有多大意义……
我想知道你们是如何处理所有这些API令牌等的. 这是我到目前为止使用3种不同的宝石阅读的内容 secrets.yml 与Rails 4.1一起引入,应该成为存储秘密的惯例 是(显然不是?)意味着被推到存储库.但是,我经常看到使用环境变量进行生产的示例 development: secret_key_base: super_long_secret_key_for_development ... production: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> ... 此时有人问“我们为什么要使用ENV进行生产?”这是一个合法的问题IMO.但后来有人回答“我们不希望生产令牌在应用程序中被硬编码”(也许只是我,但是哼哼SECRETS.yml,这个名字听起来像是你不想提交的文件吗?),以及最后没有人真正回答这个问题 但我仍然设法找到了这个和那个: 优点: > Rails惯例. 缺点: >需要使用Rails.application.secrets.xxx Bkeepers dotenv 只需在启动时由Rails读取的根目录定义.env文件 使用capistrano-env和capistrano 投票站 > ENV符合12个规则 CON外 >无自定义代码,仅限于字符串字符串键/ val 费加罗 某种混合秘密/ ENV.考虑到12factors / Rails / Heroku,但最终似乎并不比其他更好…… 从上面和其他我没有写,看起来secretts.yml将是一个伟大的赢家,如果这些秘密被放入ENV而不是(并且我觉得每次写Rails.Application.secrets都很懒). 所以,假设我启动了一个非常新的Rails应用程序,并且还根据您的经验.你会选哪一个 ? (我的特定堆栈使用AWS Capistrano,没有Heroku) 解决方法
我个人认为“正确”的方法取决于您的环境.
在我的情况下,我有由IT管理的服务器,我无法访问vhost或其他任何东西来轻松设置环境变量.因此,我提交了一个不包含生产节的secrets.yml文件,然后设置Capistrano将此文件添加到shared_files.在每台服务器上,我添加该文件. 如果我可以轻松访问vhost,并且我使用Puppet,Chef,Ansible或类似的方式管理服务器vhost,我会使用环境变量方法,如默认的secrets.yml文件. 您在AWS的案例似乎是后者.最终,任何一种选择都可以.在没有生产节的情况下提交secrets.yml文件几乎没有什么缺点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |