- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我最近的一个项目中,我以.gitignoring
开头,其中包含 secret 和环境变量。因此,除了包含第三方 secret (例如Stripe,Twitter API或Facebook Graph的 secret 或内部api_keys以及./config/initializers/secret_token.rb
文件)的文件以外,整个项目都将提交到存储库。
现在我正要进行项目开发(激动!),我需要使用Capistrano将所有环境变量移植到生产服务器上,即cap production deploy.
[Edit 4:Yr,2018]
对于initializers / secret_token.rb,很明显,Rails 4.1具有一种处理secrets.yml file的新方法,该方法将:secret_key_base值拉入生产服务器。在这里,我建议使用capistrano-secrets-yml gem,它可以直接使用,并且使用起来非常简单。
剩下的是将其他 secret (如API_KEYS,APP_ID等)带到生产服务器的方式,而无需将任何 secret checkin 存储库。如何做到这一点,最推荐/最安全的方法或最佳做法是什么?
注意:随着问题的进展,我将对其进行编辑/我将更加清楚。
编辑1:服务器是DigitalOcean上的Ubuntu / Linux VPS [Denise的答案,如下]。
EDIT2:env_variables / secrets是否可以通过secrets.yml传递到服务器? session 的Secret_token毕竟不是唯一的 secret ! [在Edit3上回答]
EDIT3:是的!可以根据blog通过secrets.yml发送API_keys。将来会分享我的发现。 :-)
最佳答案
第一条规则:请勿将secrets.yml
checkin 存储库。
好的,这是secret.yml
的外观:
development:
secret_key_base: 6a1ada9d8e377c8fad5e530d6e0a1daa3d17e43ee...
# Paste output of $ rake secret here for your dev machine.
test:
secret_key_base: _your_secret_ as above
production:
secret_key_base: <%= secure_token %>
STRIPE_PUBLISHABLE_KEY: 'Put your stripe keys for production'
STRIPE_SECRET_KEY: 'Put actual keys for production here'
FB_APP_SECRET: 'same as above'
FB_CALLBACK_URL: 'FB url here'
FB_CALLBACK_UPDATE_URL: 'FB url here'
GOOGLE_KEY: 'Put your keys for production'
GOOGLE_SECRET: 'same as above'
TWITTER_KEY: 'same as above'
TWITTER_SECRET: 'same as above'
TWITTER_USERNAME: 'same as above'
LINKEDIN_KEY: 'same as above'
LINKEDIN_SECRET: 'same as above'
secure_token
块中的
production:
。在生产服务器上,我正在使用初始化程序即时
dynamically generate secret_tokens。
sidenote: be careful about spaces and tabs inside the .yml file. It must be properly formatted and spaced (such as having a space after the ':' symbol).
This will not work. See an updated method as per @OddityOverseer's answer below.
environments/production.rb
中访问环境变量,请使用:
FB_APP_SECRET = ENV['FB_APP_SECRET']
FB_CALLBACK_URL = ENV['FB_CALLBACK_URL']
FB_CALLBACK_UPDATE_URL = ENV['FB_CALLBACK_UPDATE_URL']
GOOGLE_KEY = ENV['GOOGLE_KEY']
GOOGLE_SECRET = ENV['GOOGLE_SECRET']
TWITTER_KEY = ENV['TWITTER_KEY']
TWITTER_SECRET = ENV['TWITTER_SECRET']
TWITTER_USERNAME = ENV['TWITTER_USERNAME']
LINKEDIN_KEY = ENV['LINKEDIN_KEY']
LINKEDIN_SECRET = ENV['LINKEDIN_SECRET']
UPDATED August-2016:
environments/production.rb
中访问环境变量,请使用:
FB_APP_SECRET = Rails.application.secrets.FB_APP_SECRET
FB_CALLBACK_URL = Rails.application.secrets.FB_CALLBACK_URL
FB_CALLBACK_UPDATE_URL = Rails.application.secrets.FB_CALLBACK_UPDATE_URL
GOOGLE_KEY = Rails.application.secrets.GOOGLE_KEY
GOOGLE_SECRET = Rails.application.secrets.GOOGLE_SECRET
TWITTER_KEY = Rails.application.secrets.TWITTER_KEY
TWITTER_SECRET = Rails.application.secrets.TWITTER_SECRET
TWITTER_USERNAME = Rails.application.secrets.TWITTER_USERNAME
LINKEDIN_KEY = Rails.application.secrets.LINKEDIN_KEY
LINKEDIN_SECRET = Rails.application.secrets.LINKEDIN_SECRET
关于ruby-on-rails - 如何在Rails 4.1中对API_KEYS使用secrets.yml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26498357/
我想知道 com.google.android.geo.API_KEY 和 com.google.android.maps.v2.API_KEY 元标记之间的区别。它们都用于设置 Google Map
我们正在构建一个由 mysql 支持的 Rails 应用程序,它将存储特定于每个登录用户的敏感信息,例如用户名、密码、api_key。 是否有一个 gem 可以保护此类生产数据免遭内部团队成员或外部人
我对 Restful 服务相当陌生,我刚刚实现了测试代码来让 ServiceStack Restful 服务与 Swagger 插件一起工作,这让我想到了我的问题...... 在 swagger-ui
我正在尝试发送传递一些 header 和身份验证信息的 curl 请求。 我想发送的所有信息都已成功发送,但我仍然不知道如何发送应该使用的 api key ,而不是正常的用户名/密码方式。 当我使用在
我正在尝试为我的 rails 应用程序构建一个 api。 当非获取请求中存在有效的 api_key 时,我想在过滤器之前跳过 csrf。 我已经尝试过(一旦我可以让条件过滤器工作,我将验证 api_k
我完成了一个需要我使用 api_key 的 android 项目。 我在 build.gradle 文件中添加了 api key ,如下所示: buildTypes.each {
我在类(class)开始时分配了一些变量,并且收到错误(实例成员 API_KEY 不能在类型“DataType”上使用)和(实例成员 LANG 不能在类型“DataType”上使用)创建 baseUR
我使用 Devise token_authentication 服务和 ActiveResource 客户端。我希望在每个请求中自动设置 :auth_token 参数! 我试过了,但是没用... cl
另请:https://travis-ci.org/Jeff-Tian/tplant/jobs/620447627 我已经配置了api_key与 api_key: $NPM_TOKEN 并且我确定NPM
我正在尝试通过请求获取它:https://www.googleapis.com/youtube/v3/playlistItems?part=contentDetails&playlistId={my_
我使用了一个教程来使用 mailchimp 设置我的应用程序,以便它将新订阅者发送到 mailchimp 列表。如果你顺其自然,一切都会很好。但是当我运行 Rspec 时,我的测试套件的一半是红色的,
我使用了一个教程来使用 mailchimp 设置我的应用程序,以便它将新订阅者发送到 mailchimp 列表。如果你顺其自然,一切都会很好。但是当我运行 Rspec 时,我的测试套件的一半是红色的,
我将我的 api key 推送到 github 并推送了另一个 stash 它的提交。克隆我的存储库的人能否从较早的提交中获取 key ? 最佳答案 GitHub 允许每个人下载整个 git 存储库,
我正在通过 Travis CI 将 Spring 应用程序部署到 Heroku。然而,尽管以不同的方式设置我的 travis 文件,我似乎无法解决以下问题,最主要的问题是缺少 api key 。 下面
我听了很多教程,目前我有: 在 Google Developer Console 上创建了一个新项目 创建了一个新的 api key ,将其限制为 android 应用程序,添加了我的包名称(Andr
我只是使用 OpenAI API 在 Python 中尝试一些简单的函数,但遇到了错误: 我有一个正在使用的有效 API key 。 代码: >>> import os >>> import open
我只是使用 OpenAI API 在 Python 中尝试一些简单的函数,但遇到了错误: 我有一个正在使用的有效 API key 。 代码: >>> import os >>> import open
我正在使用 Swashbuckle (5.3.2),它生成了一个很好的 API 文档。 为了澄清我的问题,我设置了一个没有实际意义的小示例项目。 API 只能与有效的 API key 一起使用。为此,
我浏览了与在 Android 应用程序中使用 Places API 相关的 Android 文档和其他博客。它到处都建议使用 API_KEY 来调用 REST 服务。 API_KEY 在整个项目/应用
当我关注https://codelabs.developers.google.com/codelabs/flutter-firebase/时并且我下载了 google-services.json 尝试
我是一名优秀的程序员,十分优秀!