Разница между учетной записью «Local System» и учетной записью «Network Service»?

300

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

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

Теги:
security

1 ответ

560
Лучший ответ

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

Сначала фактические учетные записи:

  • Аккаунт LocalService (желательно)

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

    • Имя: 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 в диалоговом окне "Выбор пользователя или группы"

     

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

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

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

     

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

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

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

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


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

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

Эта возможность была добавлена ​​только с Task Scheduler 2.0, который существует только в Windows Vista/Windows Server 2008 и новее.

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

Изображение 7254

  • 4
    Я думаю, что управляемые учетные записи служб устраняют некоторые трудности при настройке учетной записи и управлении паролем (или, скорее, передают его администратору домена или делегату).
  • 1
    Привет, спасибо за объяснение. У меня есть один вопрос - используя локальную системную / сетевую учетную запись службы, можно ли добавлять / удалять записи в контейнерах в активном каталоге (при условии, что контейнер в активном каталоге предоставил полные разрешения компьютеру, на котором работают эти службы Windows). Обратите внимание, что все работает, когда я запустил службу как один из пользователей домена, но не как локальную систему / сетевой сервис (для подробностей stackoverflow.com/questions/20943436/… ) С уважением
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню