如何在 Rails 中保守 Secrets.yml 的秘密?

2024-04-17

我对 Rails 还很陌生,但我有一些 PHP 和其他语言编程经验。我真的很喜欢 Rails,并且正在为我的公司开发一个应用程序,但我仍然不完全理解 Secrets.yml 文件如何与 git 和 heroku 配合使用。我知道秘密用于身份验证,但我不明白如何在仍然通过 git 部署到 heroku 的同时保持秘密。

第一个问题是,我真的需要保守我的开发和测试秘密吗? Rails 自动将生产开发秘密设置为环境秘密(我仍然不完全理解),但是如果人们知道我的开发和测试秘密是什么,那又有什么关系呢?

其次,什么是更好地理解将 Secrets.yml 文件与 git 结合使用的好资源? Rails 指南似乎没有很好地记录它的使用情况(只有大约一段专门介绍 Secrets.yml),这似乎是一个非常重要的主题,可能会导致应用程序中出现严重的安全缺陷。

最后,其他人如何保护自己的秘密?查看 github 上的几个示例应用程序,我注意到大多数人似乎没有采取任何步骤将机密文件保存在 .gitignore 中。这仅仅是一个疏忽,还是因为它并不像我想象的那么严重?

我很感激我能得到的任何帮助。我已经研究这个特定问题一段时间了,但还没有真正得到任何全面的解决方案。我想向我的公司展示我的项目,并解释使用 git 等版本控制系统的优势,但我也希望该应用程序足够安全,足以相信它可以保证我公司数据的安全。


这是 HEROKU 的(希望很简单)分步指南,应在将文件 (secrets.yml) 推送到 GitHub 或其他主机之前执行。

*我不是这个主题的专家,但这对我来说效果很好,似乎是一个很好的解决方案。它结合了此问题的答案以及此问题的答案中的信息(部署到 Heroku 时使用 Rails Secrets.yml 且无需将密钥暴露给公共存储库的分步说明 https://stackoverflow.com/questions/25006650/step-by-step-explanation-for-using-rails-secrets-yml-without-exposing-keys-to-pu)提供一个简单的指南:)

1)将secrets.yml复制到另一个名为secrets_backup.yml的文件

您现在应该有两个与 Secrets.yml 内容相同的文件

2) Add secrets_backup.yml到你的 .gitignore

3)更改文本secrets.yml到以下

development:
  secret_key_base: <%= ENV["SECRET_KEY_BASE_DEV"] %>
test:
  secret_key_base: <%= ENV["SECRET_KEY_BASE_TEST"] %>
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

4) cd到命令行上的 Rails 项目文件夹

5) 在终端类型中heroku config:set SECRET_KEY_BASE_TEST=<pasted key>, where <pasted key>应从以下位置复制并粘贴test: secret_key_base:<key>这是在secrets_backup.yml

6) 在终端类型中heroku config:set SECRET_KEY_BASE_DEV=<pasted key>, where <pasted key>应从以下位置复制并粘贴development: secret_key_base:<key>这是在secrets_backup.yml

7) My secrets.yml文件已经有 SECRET_KEY_BASE 而不是实际的密钥,所以我怀疑你的也会有。但如果没有,请像上面设置其他两个一样设置 SECRET_KEY_BASE 变量。

8) 将您的存储库推送到 GitHub 和 Heroku

9)微笑,因为你是G.O.A.T,并展示你可爱的网站!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Rails 中保守 Secrets.yml 的秘密? 的相关文章

  • Git 的企业采用率?

    最近一些同事之间进行了一场讨论 在当今的软件行业中 如何存在两个不同的世界 面向自由软件 公司的 Question Git 在企业环境中的使用情况如何 您在企业环境中使用 Git 的体验如何 无论如何 我们在工作场所使用 git 每个人都对
  • Gerrit 和 Active Directory

    我正在尝试设置 Gerrit 以使用我们的公司 Active Directory 进行身份验证 我知道很多人都设法让它发挥作用 但它对我来说不起作用 如果我运行一个ldapsearch命令如下我得到了正确的结果 所以我知道我的搜索字符串是正
  • MSysGit 与 Windows 版 Git

    我无法确定MSysGit 和 Windows 版 Git 之间的区别 http msysgit github com 它们有何不同 为什么我会选择其中之一而不是另一个 它们不是同一个东西吗 On http msysgit github co
  • 删除 Git 存储库,但保留所有文件

    在我使用 Linux 的过程中的某个时刻 我决定将我的主目录中的所有内容都放入源代码管理中是个好主意 我不是在问这是否是一个好主意 我是在问如何撤销它 删除存储库的原因是我最近安装了 Oh My Zsh 而且我非常喜欢它 问题是我的主目录有
  • Heroku 上的 dyno 是否同时重启?

    我在 Heroku 网站上看到 dynos 大约每 24 小时重新启动一次 例如 如果您有两个网络测功机 它们是否有可能同时重新启动 谢谢你的时间 根据赫罗库 骑行每 24 小时进行一次 加上最多 216 个随机 分钟 以防止应用程序的每个
  • Rails 中的 Google freebusy api 调用无法识别参数

    我试图从我的主日历中查找所有空闲 忙碌时间 但我无法让查询识别我的参数 在我的控制器中我有 freetimes client execute api method gt service freebusy query parameters g
  • Rails 中 WHERE 子句中的 ALL 运算符

    关联关系如下图所示 InstructorStudent has many fees Fee belongs to instructor student 我想要获得在所有给定数组中具有每月详细信息的指导学生 如果其中任何一个中不存在每月详细信
  • 如何将属性保存到 has_many :通过连接表,没有现有记录可供构建

    我有一个表单 可以使用以下命令创建新的子记录和新的父记录accepts nested attributes for 孩子和家长都有一个has many through像这样的关联 class Child lt ActiveRecord Ba
  • 处理 Rails 2.1.x 中的 RoutingError 的最佳方法?

    我正在使用Rails 2 1 中的routing rb 代码 并尝试让它达到这样的程度 我可以对找不到合适路径时抛出的RoutingError 异常执行一些有用的操作 这是一个有点棘手的问题 因为有一些 URL 类别纯粹是糟糕的 azenv
  • Rails error_messages 帮助器

    这是一段很常见的代码 First name br error messages是一个辅助方法 但我很难找到它的文档 为什么呢 我在这里找到它们 error messages 具有相同的参数错误消息 http apidock com rail
  • 如何创建名称中带有正斜杠的标签

    当我已经有了类似的标签时 有什么方法可以创建名称中带有正斜杠的 git 标签吗 假设我有 1 16 0 标签 并且我想创建 1 16 0 1 0 0 标签 git tag 1 16 0 1 0 0 error refs tags 1 16
  • 为 RHEL 6 安装/构建 git-svn

    我无权访问 RHEL6 存储库 那么在 RedHat Enterprise Linux 6 上构建和 或安装 git svn 工具的最佳方法是什么 通过卸载现有的 yum擦除git 并从源安装最新的来设法安装git和git svn 1 7
  • 如果你使用belongs_to而没有相应的has_one,会发生什么?

    我有一个核心模型Item 以及一个从自定义源 例如 RSS feed 填充它的脚本 在 feed 中 每个项目都用一个标识guid 在我的系统中 项目只有一个自动生成的id首要的关键 我想要 比方说 ItemFeedInfo那个地图guid
  • 如何让 Twilio 在hangup() 被触发时停止拨号?

    我一直在使用 twilio ruby gem 开发 Twilio 应用程序 但我陷入了一个部分 为呼叫构建 TwiML 响应 我拨打一些号码 以便他们也可以接听呼叫 def handle gather response Twilio Twi
  • 尝试克隆一个 git 存储库,但它卡在克隆到中

    我使用的是 Windows 10版本 10 0 19042 内部版本 19042 GIT Ver 2 32当尝试使用 git bash 执行以下命令时git clone depth 1 b carla https github com Ca
  • 查询,无法选择列数

    Tag joins quote tags group quote tags tag id order count desc select count tags id AS count tags id tags name Build quer
  • Git:如何正确合并两个功能完全不同的分支?

    想象一下这样一种情况 同一个项目有两个分支 第一个分支的一部分对另一个分支进行了大幅重构 但有一段时间 您需要保持两个分支的功能 因此您需要对两个分支进行错误修复和关键功能添加 有时是以不对称的方式 在某些时候 您必须将重构的分支合并到原始
  • STI 在遗传类型之间发生变化。

    在我的模型中 我像这样使用 STI 车辆型号 vehicle rb class Vehicle lt ActiveRecord Base end 车型 car rb class Car lt Vehicle end 总线模型 bus rb
  • 如何验证单选按钮?

    我的 Rails 应用程序中有一个单选按钮 我想编写一个 java 脚本代码 在未选择任何选项时验证这一点 在你的 votes 类中做类似的事情 class Myvotes lt ActiveRecord Base validates vo
  • 为什么“git pull”在我的网络服务器上失败?

    我使用 git 来提取站点代码库的更改 文件内部的更改和文件删除是有效的 但是 当我将新文件或目录 不是空的 添加到存储库时 它不会被本地拉到网络服务器 拉动时不会显示错误消息 但在检查该文件时 它不在那里 在线的 bitbucket re

随机推荐

  • Mocha 在所有类中的所有测试运行后运行

    所以我正在使用 mocha 并且我有超过 10 个 JS 类的测试 我构建了一个日志变量 该变量在这 10 个类的整个测试运行过程中都有效 现在我想做的是在最后一次测试运行后 我想将此日志写入文件 所以我做的第一件事就是在每堂课上写这样的东
  • VBA getElementById 不适用于按钮

    我正在尝试访问网站 在文本框中键入一个值 然后单击搜索按钮来搜索我的值 我的问题是 我无法获取按钮元素来触发单击事件 VBA Dim i As Long Dim objElement As Object Dim objCollection
  • 如何符合协议变量的设置和获取?

    我正在研究协议以及如何遵守它们 protocol Human var height Int get set struct Boy Human var height Int return 5 error 我正在尝试学习实现 set 和 get
  • Firebase Storage 共享下载网址存在安全风险吗?

    我的 Firebase 存储中保存了一张图像 我想在我发送的多封电子邮件中显示此图像 到目前为止 我已使用从 Firebase 控制台获取的下载 URL 并且图像成功显示 我的问题是 这是分享图像的正确方式吗 安全吗 如果没有 那么我应该如
  • JsonValueProviderFactory 抛出“请求太大”

    我收到一个异常 即 JSON 请求太大而无法反序列化 它来自 JsonValueProviderFactory MVC 应用程序当前有一个使用 Json Net 的自定义模型绑定器 它在反序列化 json 数据时没有问题 但是我假设默认的
  • 什么是 AsyncManager.OutstandingOperations?

    感谢 MSDN 他们没有对此进行任何解释 http msdn microsoft com en us library system web mvc async asyncmanager outstandingoperations v vs
  • 如何使用 JavaSound (Java, Java Sound) 从 .wave 文件读取信息

    您好 我需要从 wave 文件中读取采样率 信号频率和幅度 我怎样才能使用 JavaSound 做到这一点 您可以通过获取句柄来获取采样率AudioFormat object AudioInputStream audioInputStrea
  • Phonegap + jQuery Mobile + 股票/折线图

    我试图找到一个在phonegap应用程序中绘制折线 股票图表的解决方案 我尝试过很多库 amcharts JS highcharts 但没有一个能工作 有人可以帮我完成这项任务吗 欢迎任何解决方案 平台 Android iOS 我有同样的问
  • 通过电子邮件询问评级

    在我的应用程序中 我们将通过向用户发送电子邮件来获取反馈 因此 如果用户填写字段并提交 那么我会将其存储在我的数据库中 我准备了一封 html 邮件 如下所示 但这里的问题是我无法在邮件中显示评级星星 这需要内联 css 但我无法将该 cs
  • AdMob 横幅不适用于移动数据

    我最近开始开发 Android 应用程序 当尝试在我的应用程序中加载横幅时 我在 logcat 中收到以下错误 03 02 17 30 58 509 I Ads 12181 Use AdRequest Builder addTestDevi
  • 给出源时,Django Rest Framework Serializer charfield 不更新

    我有一个带有选择 charfield 的模型字段 class Vehicle models Model name models CharField max length 100 STATUS CHOICES N New U Used P J
  • 如何在 Visual Studio Code 中更新 C# 版本?

    我已经安装了 C 扩展 我的 NET 框架已更新 但我无法修复它 我已经找到了修复方法 希望这对将来的人有所帮助 找你的 csproj file 将 LangVersion 属性更改为所需版本
  • AMD64 ABI 中的空类会发生什么情况?

    我正在看AMD64 ABI http www cs tufts edu comp 40 readings amd64 abi pdf并且它似乎没有指定如何传递空类类型 对于空类成员函数 似乎this照常传递 但对于空类 Clang 生成的代
  • RcppEigen - 从包中的内联函数到 .cpp 函数和“Map”

    一切似乎都在我的包中工作 但我想检查其步骤是否正确以及使用 Map 的内存使用情况 这是一个简单的示例 位于内联示例和fastLm 例子 这是一个内联函数 它取矩阵每一列的最大值 library Rcpp library inline li
  • 如何将 long (currentTimeInMillis) 转换为 UTC 时间戳?

    我的客户正在向我发送Long这可以被认为是 scala gt System currentTimeMillis res3 Long 1441056836609 scala gt 我如何将其转换为UTC时间戳 在服务器上 我们使用Java 8
  • Threejs + Vanilla JS 和 React-Three-Fiber + Create-React-App 之间的颜色差异

    这已经困扰我一段时间了 为什么 React Three Fiber 中的材质颜色看起来比 Threejs 中暗淡 两种实现中的对象及其属性是相同的 Threejs 版本相同 在新引导中实施 create react app 没有额外的依赖项
  • 在 Eclipse 中编辑代码时如何禁用粗体字体?

    我不希望 Eclipse 以粗体显示任何关键字 我浏览了 首选项 窗口中的很多选项 但找不到执行此操作的方法 是否可以 这取决于您正在编辑的文件类型 例如 在 Java 中 窗口菜单 gt 首选项 gt Jave gt 编辑器 gt 语法着
  • Java反应式框架的比较[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我看到许多框架 库声称它们可以帮助用 Java 构建响应式应用程序 例如 Akka Vert x RxJava Reactor QBit 等 他
  • 如何将 activemq-core.xsd url 与 jar 文件中找到的 activemq.xsd 关联?

    有人知道如何关联activemq core xsd网址与activemq xsd在 jar 文件 activemq core 5 2 0 jar 中找到 我在互联网上找到了一些解决方案 但没有成功 我收到此错误 Caused by org
  • 如何在 Rails 中保守 Secrets.yml 的秘密?

    我对 Rails 还很陌生 但我有一些 PHP 和其他语言编程经验 我真的很喜欢 Rails 并且正在为我的公司开发一个应用程序 但我仍然不完全理解 Secrets yml 文件如何与 git 和 heroku 配合使用 我知道秘密用于身份