Я написал веб-приложение для работы в Windows (XP, 7,2008 и т.д.), не используя инструменты MS (python / django / nginx, хотя это не имеет значения). Для запуска приложения я создал службу Windows, которая устанавливается и работает нормально.
Однако приложение будет работать в среде, где важна безопасность. По умолчанию служба устанавливается под управлением Local System
учетная запись, которая, насколько я понимаю, имеет полный контроль над компьютером. Не похоже на хорошую идею.
Я также видел Network Service
используется, но в описаниях обычно говорится о доменах и т. д. Это приложение использует сеть и работает в Windows, но почти не говорит «Windows». Он самодостаточен и хранит свои данные в «общей папке данных приложения», также известной как ...\All Users\Application Data
хотя.
Должен ли я использовать Network Service
? Должен ли я создать свою учетную запись? В unix я бы сделал это, но не уверен в «подводных камнях» Windows. Было бы проще использовать существующую учетную запись.
Поскольку вы работаете в среде Unix, вам следует привыкнуть к работе в непривилегированном контексте. Многие разработчики Windows не имеют такого опыта, и, как следствие, у нас есть множество услуг в экосистеме Windows, требующих чрезмерных привилегий. Я действительно рад слышать, что вы задаетесь вопросом о необходимости работать как "LocalSystem".
Как системный администратор Windows, заботящийся о безопасности, я бы предпочел, чтобы все мои службы работали под непривилегированными учетными записями пользователей, либо локально по отношению к серверному компьютеру, на котором запущена служба, либо, если службе абсолютно необходим доступ к ресурсам на других машинах через сеть Microsoft, учетная запись домена.
Мне лично не нравится ни один из «Местная служба», «Сетевая служба»и т. д., потому что это не учетные записи пользователей, параметры которых я могу специально контролировать. Это является Стоит отметить, что «Локальная служба» всегда обращается к удаленным машинам с нулевыми сеансами (анонимные учетные данные) и это поведение не может быть воспроизведено с помощью обычной учетной записи пользователя. Тем не менее, я предпочитаю явно указанного непривилегированного пользователя «Локальной службе», но «Локальная служба» также является вполне разумным выбором. Если вы пишете свой код для работы как «Локальная служба», он также должен нормально работать как непривилегированный пользователь, если только вы не укажете явные зависимости от «Локальной службы».