您在Phoenix / Elixir的哪里存储机密,推荐在哪里?

Rod*_*odi 1 elixir phoenix-framework

您是否使用环境变量或prod.secret.exs用于存储密码,API密钥等?经验法则是什么?我觉得它们或多或少都是一样的,因此混淆了使用哪一个。

请注意,我不想通过在代码中合并第三方库来使其复杂化。我最好是开箱即用的解决方案。

Koc*_*ber 6

如此简单快捷-对于小型混合/ Phoenix项目,我一直使用dev/test/prod.secret.exs文件,然后仅使用获取所需的东西Application.get_env(:key, :value),例如-我的{env}.secret.exs文件可能如下所示:

config :my_app, api_key: "1234567890"
Run Code Online (Sandbox Code Playgroud)

然后在代码中的某处:

def do_stuff do
  api_key = Application.get_env(:my_app, :api_key)
end
Run Code Online (Sandbox Code Playgroud)

当然,主配置文件应包含一个导入文件:

import_config "#{Mix.env}.secret.exs"
Run Code Online (Sandbox Code Playgroud)

什么是真正重要的 -不要忘了你的秘密文件添加到.gitignore

对于需要更高安全性的大型项目,我会使用env变量。请检查本指南

  • 隐藏可以在环境之间共享的API密钥?交配可能有多种原因。 (2认同)

das*_*mug 5

环境变量。

是否是Phoenix / Elixir都无关紧要。

根据一组称为“十二要素应用程序”的最佳做法,

十二因子应用程序将配置存储在环境变量中(通常缩写为env vars或env)。Env var易于在部署之间进行更改,而无需更改任何代码。与配置文件不同,它们很少有可能被意外检入代码存储库;与自定义配置文件或其他配置机制(例如Java系统属性)不同,它们是与语言和操作系统无关的标准。

参考:https : //12factor.net/config