【问题标题】:Is it secure way to store private values in .env file?在 .env 文件中存储私有值是否安全?
【发布时间】:2020-06-07 03:52:08
【问题描述】:

我正在尝试使用 express 框架构建 node.js 服务器,并且我想在我的服务器中存储管理 API 的私钥。
我现在使用 .env 文件来存储这些值,并且在我的路线中,通过调用 process.env.ADMIN_KEY 来使用该值。

问题
处理私人数据是否安全?还是有比这更好的方法?

【问题讨论】:

    标签: node.js express security dotenv


    【解决方案1】:

    将您的秘密存储在 .env 文件中比存储在源代码本身中更安全。但你可以做得更好。以下是我见过的机密管理方式,从最不安全到最安全:

    1. 对代码中的秘密进行硬编码。

      • 优点:无。不要这样做。
      • 缺点:您的开发人员会将您的生产机密视为日常工作的一部分。您的秘密将被检查到源代码控制中。两者都是安全风险。此外,您必须修改代码以在不同的环境中使用它,例如开发、测试和生产环境。
    2. 将机密放入从 .env 文件加载的环境变量中。

      • 优点:开发人员不会看到您的生产机密。您可以在开发、测试和生产中使用不同的密钥,而无需修改代码。
      • 缺点:恶意代码可以读取您的秘密。您的应用程序的大部分代码可能是开源库。糟糕的代码可能会在您不知情的情况下潜入。
    3. 将机密放入专门的机密管理器中,例如 Google Cloud 的 Vault by HashiCorpSecret Manager

      • 优点:恶意代码更难读取您的秘密。您可以审核谁何时访问了机密。您可以为更新机密的人员和可以读取机密的人员分配细粒度的角色。您可以更新和版本化您的秘密。
      • 缺点:这是您学习的附加技术。它可能是您需要设置和管理的附加软件,除非它包含在您使用的云平台中。

    所以选择实际上是在上面的第 2 项和第 3 项之间。你选择哪一个取决于你的秘密有多敏感,以及使用专门的秘密管理器需要多少额外的工作。例如,如果您的项目在 Google Cloud Platform 上运行,则 Secret Manager 就是 one API call away。在其他主要的云平台上可能同样容易,但我对它们没有第一手经验。

    【讨论】:

    • 在私有代码库上创建 env 文件有什么用?
    • @JobinS 开发测试目的
    【解决方案2】:

    简单的答案是YES,.env 用于存储密钥和秘密。它不会推送到您的存储库,即 github 或 bitbucket 或您存储代码的任何地方。这样就不会暴露了。

    以下是正确使用的教程链接:

    【讨论】:

    • 如果您使用 EBS,最安全的方法是将所有秘密 env 存储在 EBS 环境变量下。而且我确信其他 nodejs 托管服务具有相同的功能。
    • 如果它没有推送到 github 并且我使用 github 存储库作为在某些云主机上部署的源,我会感到困惑,我部署的项目将如何使用位于 .env 中的那些秘密值?
    • @YvesNg 如果您使用的是物理机或虚拟机,即 EC2 或 Azure VM 等,那么您可以登录到服务器,然后您的代码/存储库所在的位置创建 .env 并复制其内容。如果您使用 PaaS,即 Heroku 或其他东西,那么您可以直接管理 en 变量而不使用 .env 文件,因为它们提供了选项。
    • @ZeeshanHassanMemon 这意味着手动添加一些变量。整洁xD
    • 在私有代码库上创建 env 文件有什么用?
    【解决方案3】:

    是的。可以使用加密值添加额外的安全检查。还要避免在公共仓库中签入您的 .env 文件。

    【讨论】:

      【解决方案4】:

      您可以并且应该将机密、凭据或私人数据安全地存储在 .env 中,这是您项目中的一个安全环境配置部分,对于存储 API 密钥和应用程序凭据很有用。只有受邀的协作者才能看到您的 .env 文件的内容。

      【讨论】:

        猜你喜欢
        • 2022-12-07
        • 2010-12-28
        • 1970-01-01
        • 2015-07-08
        • 1970-01-01
        • 2017-06-03
        • 1970-01-01
        • 2017-12-25
        • 2015-06-22
        相关资源
        最近更新 更多