Aid*_*tis 25 website configuration web-server environment-variables
https://12factor.net/config 上的 devops 指南建议将网站机密(数据库密码、api 密钥等)放入环境变量中。与使用从版本控制中忽略的文本文件(JSON、XML、YAML、INI 或类似文件)相比,它有什么优势?
我发现复制带有机密的配置文件比处理 .bash_profile 和网络服务器配置中的环境变量要容易得多。我错过了什么吗?
Aus*_*arn 21
作者列出了他们的推理,尽管它有点脱节。他们的主要论点是很容易意外签入配置文件,并且配置文件具有不同的格式,并且可能分散在系统中(对于安全相关的配置(如身份验证令牌和凭据),所有这三个参数充其量只是平庸的参数)。
根据我自己的经验,您基本上有以下三个选项,以及相关的优点和缺点:
在采用这种方法时,理想情况下,您应该将它们与存储库本身隔离,并确保它们位于应用程序存储其内容的区域之外。
通常这是通过从启动脚本中获取环境变量和值的列表来完成的,但在某些情况下,它可能只是在程序名称之前在命令行上声明它们。
hidepid
挂载选项/proc
),但默认情况下它们并未启用,并且无法防止来自拥有该进程的用户的攻击。说真的,不惜一切代价避免这种情况,它不安全,而且维护起来很麻烦。