存储在整个应用程序中使用的加密密钥的位置(Ruby On Rails)

时间:2011-03-06 02:37:52

标签: ruby-on-rails

我需要存储一个将通过应用程序全局访问的加密密钥。是否有设置和配置的存储位置?我尝试过搜索,但无法想出任何东西。

2 个答案:

答案 0 :(得分:0)

有几种方法可以做这样的事情。

为您的应用提供全局可用的最简单方法是在config/environment.rb(或config/environments/production.rb内定义一个常量。

但是,对于敏感数据,重要的是它们与主要SCM分离并且仅在生产环境中可用 - 至少在这种情况下,如果您的代码被泄露,您的加密密钥是安全的。

我知道有几种方法可以做到这一点 - 一种方法是将它们设置为环境变量,然后可以通过ENV['variable_name]在Ruby中访问它。

另一个选择是将它存储在一个从代码存储库中解耦的外部文件中,然后使用初始化程序读入。

无论您采用哪种方式,都可以将此方法与config/environment.rb中的常量声明相结合:

# config/environment.rb
ENCRYPTION_KEY = ENV['encryption_key']

这样,如果您更改密钥的存储位置,则只需更改一行代码。

答案 1 :(得分:0)

您可以在config / initializers / 01_secrets.rb文件中设置所有秘密常量。以下是一些需要考虑的事项:

  • 01前缀是为了确保这一点 秘密常数在其他之前设定 使用这些的初始化程序 常量已加载。

  • 01_secrets.rb文件不应该是 签到您的SCM。

  • 存储此文件的服务器 必须妥善保护和文件 本身应该具有最大的安全性。

E.g。

# config/initilizers/01_secret.rb
ENV['ENCRYPTION_KEY'] = "your_key"