Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 将密码保留在代码之外,但使用gunicorn自动重启?_Django_Security_Gunicorn_Fabric_Supervisord - Fatal编程技术网

Django 将密码保留在代码之外,但使用gunicorn自动重启?

Django 将密码保留在代码之外,但使用gunicorn自动重启?,django,security,gunicorn,fabric,supervisord,Django,Security,Gunicorn,Fabric,Supervisord,我目前正在为gunicorn/django应用程序编写结构部署脚本,该应用程序由supervisord管理。当gunicorn运行时,我需要在应用程序的环境中使用某些密码 似乎标准的做法是将环境变量添加到/etc/supervisord/app.conf的[program:app]中,但这意味着我将在repo中使用明文密码,除非我将app.conf保留在repo之外(这看起来不干净) 我无法散列密码,因为应用程序使用这些密码访问第三方服务。此外,即使我将app.conf保留在repo之外,app

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

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

我无法散列密码,因为应用程序使用这些密码访问第三方服务。此外,即使我将app.conf保留在repo之外,app.conf中仍然有明文密码,这似乎并不理想

有没有办法让supervisord在不存储明文密码的情况下完成自己的工作(自行重启gunicorn)


编辑:不可避免地,我需要密码或supervisord解锁密码的方法,攻击者可以使用这两种方法,因此,我想我会使用类似于AWS密钥管理服务的服务,这样至少还有一个额外的步骤可以使用它们。

我没有使用supervisord,但我假设您只是在运行bash脚本来重新启动服务器

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

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

#!/bin/bash

export ENV_VAR="value"
然后要使用env文件,请使用
source.env
。这会将任何导出的变量应用于您的环境