在 Ubuntu Web 服务器上存储安全密钥

在 Ubuntu Web 服务器上存储安全密钥

我正在运行带有 DUNG(Django、Unix、Nginx 和 Gunicorn)环境的 Ubuntu 12.04 Precise,并且我的应用程序(以及各种配置文件)存储在里面的 python 虚拟环境中/srvwww-data用户可以访问该环境。

nginx 和 gunicorn 进程都以 的形式运行www-data

我的 Web 应用需要安全凭证,我将其存储在一个文件中。此文件包含各种导出,并在 gunicorn 进程执行之前environment.sh运行。source

我担心的是文件的位置及其权限。将此文件存储在有权访问的文件夹environment.sh中可以吗?还是应该将其存储在其他地方并由 root 拥有,例如?/srvwww-data/var/myapp/environment.sh

另外,对于www-data用户来说,如果我的任何 Web 进程(以 运行www-data)受到威胁,并且有人获得访问权限,这是否意味着用户即使无法写入,也有可能读取系统上的任何文件?包括我的安全密钥?

答案1

您可以在 gunicorn 配置中设置工作进程将使用的用户和组 ID。在 root 拥有且没有读取权限 (rw-------) 的文件中设置环境变量。这将防止受感染的 www-data 进程直接从配置文件中读取数据,但受损的 www-data 进程仍然可以直接从内存读取变量。

附言:+1 代表 DUNG :)

相关内容