Назад | Перейти на главную страницу

Настройка разрешений для nodejs

У меня на сервере работает несколько приложений; они встроены в meteor.js, поэтому являются процессом nodejs, и я запускаю их, используя модуль forever npm;

В настоящее время я запускаю навсегда для всех из них, используя одного и того же пользователя, чья группа владеет всеми каталогами веб-сайтов; теперь, когда это собирается стать производственным сервером, я хотел бы лучше понять проблемы безопасности, которые это может вызвать; Есть ли общие правила безопасности, которым нужно следовать для запуска процесса nodejs? Возможно ли, что мой нынешний подход опасен?

Предполагая, что вашему приложению не нужен доступ на запись к данным приложения (чего на самом деле не должно), мы делаем следующее:

Мы разбиваем пользователей на два класса - node-<app>-runtime и node-<app>-data. <app> имя приложения. Они оба являются частью группы node-<app>. Это не настоящие имена, которые мы используем для любопытных.

Мы делаем следующее:

1) Для создания приложения мы всегда строим на отдельной машине, а затем получаем npm dist скрипт, который размещает только файлы необходимо запустить приложение в /dist каталог и отправляет заархивированную копию этого каталога на наш сервер развертывания. У этого есть двоякое преимущество: мы точно знаем, что будет происходить при развертывании, и можем быть уверены, что любые dev-deps в node_modules, .git каталоги и другие данные не добавляются на производственные машины. Это также означает, что когда GitHub / Npm / etc. отключается, это не нарушает автомасштабирование и т. д. - наш сервер развертывания просто доставляет предварительно созданный архив.

2) Мы используем нашу систему управления конфигурацией для создания каталога журналов в стандартизированном месте, в который можно записать node-<app>-runtime с разрешениями 640. Путь к приложению предоставляется стандартной переменной среды. Наш демон обработки журналов автоматически принимает их и отправляет на удаленный сервер.

3) Наша система развертывания помещает файлы приложения в определенное место и устанавливает, что они принадлежат node-<app>-data с разрешениями 640. Путь к приложению предоставляется стандартной переменной среды.

Еще один совет, который у меня есть, - всегда проверять, настраиваете ли вы NODE_ENV=production. Многие модули узлов используют это соглашение, чтобы отключить символы отладки или повысить производительность (express приходит в голову).