我正在运行带有 DUNG(Django、Unix、Nginx 和 Gunicorn)环境的 Ubuntu 12.04 Precise,并且我的应用程序(以及各种配置文件)存储在里面的 python 虚拟环境中/srv
,www-data
用户可以访问该环境。
nginx 和 gunicorn 进程都以 的形式运行www-data
。
我的 Web 应用需要安全凭证,我将其存储在一个文件中。此文件包含各种导出,并在 gunicorn 进程执行之前environment.sh
运行。source
我担心的是文件的位置及其权限。将此文件存储在有权访问的文件夹environment.sh
中可以吗?还是应该将其存储在其他地方并由 root 拥有,例如?/srv
www-data
/var/myapp/environment.sh
另外,对于www-data
用户来说,如果我的任何 Web 进程(以 运行www-data
)受到威胁,并且有人获得访问权限,这是否意味着用户即使无法写入,也有可能读取系统上的任何文件?包括我的安全密钥?
答案1
您可以在 gunicorn 配置中设置工作进程将使用的用户和组 ID。在 root 拥有且没有读取权限 (rw-------) 的文件中设置环境变量。这将防止受感染的 www-data 进程直接从配置文件中读取数据,但受损的 www-data 进程仍然可以直接从内存读取变量。
附言:+1 代表 DUNG :)