【问题标题】:Are Heroku's environmental variables a secure way to store sensitive data?Heroku 环境变量是存储敏感数据的安全方式吗?
【发布时间】:2014-08-26 21:30:57
【问题描述】:

我使用 Heroku 部署 Rails 应用程序。我将 API 密钥和密码等敏感数据存储在 Heroku 的环境变量中,然后在利用各种 API 的 rake 任务中使用这些数据。

我只是想知道 Heroku 的环境变量有多安全?有没有办法对这些变量进行哈希处理,同时保留在后台以某种方式使用它们的能力?

我在这里遇到了以前的帖子:Is it secure to store passwords as environment variables (rather than as plain text) in config files?

但它并没有完全涵盖当我仍然需要未散列的密码来执行重要的后台任务的情况。

【问题讨论】:

    标签: ruby-on-rails ruby heroku


    【解决方案1】:

    几件事(主要是我的看法):

    --

    1. API 密钥 != 密码

    当您谈论API Keys 时,您指的是通常已经非常安全的公共令牌。现在 API 的本质是它们需要某种事先的身份验证(在应用程序或用户级别)以创建更强大的安全级别。

    我会首先确定您在ENV 变量中存储的数据类型。如果是纯密码(用于电子邮件等),也许考虑将您的设置迁移到云提供商之一(SendGrid / Mandrill 等),允许您仅使用 API 密钥

    API 密钥的美妙之处在于它们可以在不影响基本帐户的情况下进行更改,并将交互性限制为 API 的约束。密码会影响基本帐户

    --

    2。 ENV Vars 是操作系统级别的

    它们是进程运行的操作环境的一部分。 例如,一个正在运行的进程可以查询 TEMP 的值 环境变量以发现合适的存储位置 临时文件,或 HOME 或 USERPROFILE 变量来查找 运行进程的用户拥有的目录结构。

    您必须记住环境变量基本上意味着您将数据存储在您正在操作的environment 中。通常表示“操作系统”,但如果需要,也可以是操作系统的虚拟实例。

    底线是您的 ENV 变量存在于服务器的核心中。与文本文件位于硬盘驱动器目录中的方式相同 - 环境变量驻留在操作系统的核心中

    除非您收到对服务器本身的黑客攻击,否则很难以编程方式获取 ENV 变量数据,至少根据我的经验。

    【讨论】:

    • 嗨瑞克,感谢您的回复。我担心的是服务器可能会被黑客入侵,从而暴露 ENV 中的关键数据。到目前为止,我正在存储来自 Mashape 的 API 密钥以及来自 Google API 的私钥和电子邮件地址。我还存储了来自需要用户名和密码的 API 的凭据(我猜这设计得很糟糕)。不过,我不确定将私钥存储在 ENV 中是否是个好主意。
    【解决方案2】:

    你在找什么?针对谁或什么的安全性?

    存储在配置文件或 ENV 中的每条信息对于有权访问服务器的每个人都是可读的。更重要的是,每颗宝石都可以读取信息并将其发送到某个地方。

    您不能加密信息,因为您需要将密钥存储在某处进行解密。同样的问题。

    IMO 环境变量和配置文件都是安全的,只要您可以信任有权访问您的服务器的每个人,并且您仔细查看了与您的应用捆绑在一起的所有库和 gem 的源代码。

    【讨论】:

    • 基本上,我想保护 ENV 免受任何获得服务器访问权限的人的攻击。 afaik,bcrypt 似乎是保护重要信息的最佳方式,但哈希似乎是不可逆的,因此无法在使其易于用于后台任务的同时对其进行哈希处理。
    • 对,每个有权访问服务器的人都可以启动 Rails 控制台,查看数据库或读取每个环境变量。当您认为某些不需要的人访问了您的服务器时,唯一的选择是:设置一个全新的服务器并更改所有 api 密钥、密码和其他凭据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 2020-10-27
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多