【问题标题】:Passing app secrets in Yesod and Keter在 Yesod 和 Keter 中传递应用程序机密
【发布时间】:2016-01-12 18:20:03
【问题描述】:

我正在使用 Yesod 构建一个 Web 应用程序,并且目前正在通过环境变量(根据 The Twelve-Factor App)传递 API 密钥等秘密,以避免将这些值存储在版本控制的配置文件中。例如,我在开发模式下运行我的应用程序如下:

SOME_API_KEY=value yesod devel

我的config/settings.yml 文件中有一个值,该值是根据此环境变量定义的,其值为空,如下所示:

meetup-api-key: "_env:SOME_API_KEY:"

为了使用 Keter 进行部署,我正在使用 yesod keter 命令构建 Keter 包,并将生成的文件放入 Keter 的incoming 目录。由于我使用环境变量配置,我的应用程序的 .keter 文件不包含 SOME_API_KEY 值(这是有意的)。

我应该如何将SOME_API_KEY 传递到我在 Keter 中运行的应用实例中?

至少出于以下三个原因,我希望避免将该值放入我的keter-config.yaml

  1. 它不如环境变量方法安全。
  2. 直接嵌入到 Keter 本身的配置文件中,而不是应用程序的配置,如果不停止并重新启动整个 Keter 进程,就无法更改密钥。
  3. 环境变量被传递到由 Keter 管理的每个应用程序中。

我希望有一些针对这种情况的“最佳实践”。

【问题讨论】:

    标签: haskell deployment web-deployment yesod keter


    【解决方案1】:

    将您的秘密设置为服务器上的环境变量,并使用config/keter.yml 中的forward-env 将它们“转发”到您的应用程序,如以下补丁所示:https://github.com/snoyberg/keter/commit/9e9fca314fb78860fb5c9b08cad212d92b0b20d4

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      相关资源
      最近更新 更多