Разница между учетной записью «Local System» и учетной записью «Network Service»? - PullRequest
364 голосов
/ 04 февраля 2009

Я написал службу Windows, которая порождает отдельный процесс. Этот процесс создает COM-объект. Если служба работает под учетной записью «Локальная система», все работает нормально, но если служба работает под учетной записью «Сетевая служба», запускается внешний процесс, но ему не удается создать объект COM. Ошибка, возвращаемая при создании COM-объекта, не является стандартной ошибкой COM (я думаю, что она специфична для создаваемого COM-объекта).

Итак, как мне определить, как различаются две учетные записи, «Локальная система» и «Сетевая служба»? Эти встроенные учетные записи кажутся очень загадочными, и никто, кажется, не знает о них много.

1 Ответ

659 голосов
/ 04 февраля 2009

Так как функциональные возможности стандартных учетных записей очень запутаны, я постараюсь быстро их отключить.

Сначала фактические счета:

  • LocalService учетная запись (предпочтительно)

    Ограниченная учетная запись службы, которая очень похожа на сетевую службу и предназначена для запуска стандартных служб с минимальными привилегиями. Однако, в отличие от сетевой службы, он обращается к сети как анонимный пользователь.

    • Имя: NT AUTHORITY\LocalService
    • учетная запись не имеет пароля (любая предоставленная вами информация о пароле игнорируется)
    • HKCU представляет LocalService учетную запись пользователя
    • имеет минимальные привилегии на локальном компьютере
    • подарки анонимные учетные данные в сети
    • SID : S-1-5-19
    • имеет собственный профиль в разделе реестра HKEY_USERS (HKEY_USERS\S-1-5-19)

  • NetworkService учетная запись

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

    • NT AUTHORITY\NetworkService
    • учетная запись не имеет пароля (любая предоставленная вами информация о пароле игнорируется)
    • HKCU представляет NetworkService учетную запись пользователя
    • имеет минимальные привилегии на локальном компьютере
    • представляет учетные данные компьютера (например, MANGO$) для удаленных серверов
    • SID : S-1-5-20
    • имеет собственный профиль в разделе реестра HKEY_USERS (HKEY_USERS\S-1-5-20)
    • Если вы пытаетесь запланировать задачу, используя ее, введите NETWORK SERVICE в диалоговом окне Выбор пользователя или группы

  • LocalSystem учетная запись (опасно, не используйте!)

    Полностью доверенная учетная запись, в большей степени, чем учетная запись администратора. В одном окне нет ничего, что эта учетная запись не может сделать, и она имеет право доступа к сети как машина (для этого требуется Active Directory и предоставление разрешений учетной записи машины для чего-либо)

    • Имя: .\LocalSystem (также можно использовать LocalSystem или ComputerName\LocalSystem)
    • учетная запись не имеет пароля (любая предоставленная вами информация о пароле игнорируется)
    • SID : S-1-5-18
    • не имеет собственного профиля (HKCU представляет пользователя по умолчанию )
    • имеет расширенные привилегии на локальном компьютере
    • представляет учетные данные компьютера (например, MANGO$) для удаленных серверов

Выше, когда речь идет о доступе к сети, это относится исключительно к SPNEGO (переговоры), NTLM и Kerberos, а не к какому-либо другому механизму аутентификации. Например, обработка, выполняемая как LocalService, все еще может получить доступ к Интернету.

Общая проблема с запуском стандартной стандартной учетной записи состоит в том, что если вы изменяете какое-либо из разрешений по умолчанию, вы расширяете набор функций, которые может выполнять эта учетная запись. Поэтому, если вы предоставляете DBO базе данных, ваша служба, работающая как локальная служба или сетевая служба, может получить доступ не только к этой базе данных, но и ко всем остальным, работающим как эти учетные записи. Если каждый разработчик сделает это, у компьютера будет служебная учетная запись, у которой есть разрешения на выполнение практически чего угодно (точнее, расширенного набора всех дополнительных привилегий, предоставляемых этой учетной записи).

Всегда предпочтительно с точки зрения безопасности работать как ваша собственная учетная запись службы, у которой есть именно те разрешения, которые вам необходимы, чтобы делать то, что делает ваша служба, и ничего более. Однако стоимость такого подхода заключается в настройке учетной записи службы и управлении паролем. Это балансирование, которым должно управлять каждое приложение.

В вашем конкретном случае проблема, которую вы, вероятно, видите, заключается в том, что активация DCOM или COM + ограничена данным набором учетных записей. В Windows XP SP2, Windows Server 2003 и более поздних версиях разрешение на активацию было значительно ограничено. Вам следует использовать оснастку MMC «Службы компонентов», чтобы проверить ваш конкретный COM-объект и увидеть разрешения на активацию. Если у вас нет доступа к сети в качестве учетной записи компьютера, вам следует серьезно подумать об использовании Local Service (не Local System, которая в основном является операционной системой).


В Windows Server 2003 вы не можете запустить запланированное задание как

  • NT_AUTHORITY\LocalService (он же локальная учетная запись) или
  • NT AUTHORITY\NetworkService (он же учетная запись сетевой службы).

Эта возможность была добавлена ​​только с Задачей Планировщик 2.0 , которая существует только в Windows Vista / Windows Server 2008 и более поздних версиях.

Служба, работающая как NetworkService, представляет учетные данные компьютера в сети. Это означает, что если бы ваш компьютер назывался mango, , он представлялся бы как учетная запись компьютера MANGO$:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...