Я запускаю Ubuntu 12.04 Precise со средой DUNG (Django, Unix, Nginx & Gunicorn), и мое приложение (а также различные файлы конфигурации) хранится в виртуальной среде python внутри /srv
, который www-data
пользователь имеет доступ к.
Все процессы nginx и gunicorn запускаются как www-data
.
Мое веб-приложение требует защищенных учетных данных, которые я храню в environment.sh
файл. Этот файл содержит различные экспорты и запускается с использованием source
до того, как будут выполнены процессы пулеметчика.
Меня беспокоит расположение environment.sh
файл и его разрешения. Можно ли хранить этот файл внутри /srv
папка, в которой www-data
имеет к нему доступ? Или он должен храниться и принадлежать root где-то еще, например /var/myapp/environment.sh
?
Также, что касается www-data
пользователь, если какой-либо из моих веб-процессов (которые запускаются как www-data
) скомпрометированы, и кто-то получает к ним доступ, означает ли это, что пользователь потенциально может прочитать любой файл в системе, даже если он не может писать? Включая мои безопасные ключи?
Вы можете установить идентификаторы пользователей и групп в конфигурации Gunicorn, которые будут использоваться рабочими процессами. Установите переменные среды в файле, принадлежащем пользователю root и без разрешений на чтение (rw -------). Это избавит ваш скомпрометированный процесс www-data от чтения данных непосредственно из файла конфигурации, но скомпрометированный процесс www-data все еще может считывать переменные прямо из памяти.
пс. +1 за НАЗАНИЕ :)