【问题标题】:Keeping passwords out of code but with gunicorn self-restartable?将密码保留在代码之外,但使用 gunicorn 可自重启?
【发布时间】:2017-03-17 21:35:13
【问题描述】:

我目前正在为我的 gunicorn/django 应用程序编写结构部署脚本,该应用程序由 supervisord 管理。当 gunicorn 运行时,我有某些密码需要在应用程序的环境中。

似乎标准的做事方式是将环境变量添加到 /etc/supervisord/app.conf 的 [program:app] 中,但这意味着除非我保留应用程序,否则我将在我的 repo 中有明文密码。在 repo 之外的 conf (看起来不干净)。

我无法对密码进行哈希处理,因为应用程序使用它们来访问第三方服务。此外,即使我将 app.conf 保留在 repo 之外,我仍然在 app.conf 中有明文密码,这似乎并不理想。

有没有办法让 supervisord 做它的事情(自行重启 gunicorn)而不存储明文密码?

编辑:我不可避免地需要密码或supervisord解锁密码的方法,这两者都可以被攻击者使用,所以我想我会使用AWS密钥管理服务之类的东西,所以至少有一个额外的步骤接近他们。

【问题讨论】:

    标签: django security gunicorn fabric supervisord


    【解决方案1】:

    我没有使用 supervisord,但我假设你只是在运行一个 bash 脚本来重启你的服务器。

    在您的项目文件夹中创建一个名为 .env 的文件(名称并不重要,但它是约定俗成的)。确保将此文件添加到您的.gitignore

    在 env 文件中,设置任何配置变量:

    #!/bin/bash
    
    export ENV_VAR="value"
    

    然后要使用 env 文件,请使用 source .env。这会将所有导出的变量应用到您的环境中。

    【讨论】:

      猜你喜欢
      • 2019-04-24
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 2021-02-11
      • 2021-07-25
      相关资源
      最近更新 更多