haskell – 在Yesod和Keter传递应用程序的秘密

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

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

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

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

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

至少有以下三个原因,我想避免将这个值烘焙到我的keter-config.yaml中:

>它比环境变量方法更不安全。
>直接嵌入到Keter本身的配置文件中,与应用程序的配置相反,秘密不能在不停止和重新启动整个Keter进程的情况下进行更改。
>环境变量被传递到由Keter管理的每个应用程序。

我希望在这种情况下有一些“最佳做法”。

解决方法

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

相关文章

操作步骤 1、进入elasticsearch的plugin,进入ik。进入config。 2、在config下面建立以.dic为后缀的字典...
lengend data数据中若存在'',则表示换行,用''切割。
代码实现 option = { backgroundColor: '#080b30', tooltip: { trigger: &...
问题原因 原因在于直接在js中取的变量并复制给var变量。 于是就变成这样。 解决办法 var data = &#...
前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选...
对于很多人来说,用字符编码都是熟能生巧,而不清楚为什么是那样的字符编码,所以我在这列了一个表,翻...