La différence entre le compte "système Local" et le compte "SERVICE réseau"?

j'ai écrit un service Windows qui produit un processus séparé. Ce processus crée un objet COM. Si le service fonctionne sous le compte "système Local", tout fonctionne bien, mais si le service fonctionne sous le compte "SERVICE réseau", le processus externe démarre mais il ne crée pas l'objet COM. L'erreur renvoyée depuis la création de L'objet COM n'est pas une erreur standard de COM (je pense que c'est spécifique à L'objet COM en cours de création).

alors, comment puis-je déterminer en quoi les deux comptes, "système Local" et "Service réseau" diffèrent? Ces comptes intégrés semblent très mystérieux et personne ne semble savoir beaucoup sur eux.

347
demandé sur Ray Vega 2009-02-04 08:30:33

1 réponses

comme il y a tellement de confusion au sujet de la fonctionnalité des comptes de service standard, je vais essayer de donner un coup de main rapide.

d'Abord les comptes réels:

  • LocalService compte (de préférence)

    compte de service limité qui est très similaire au service réseau et destiné à exécuter les services standard les moins privilégiés. Cependant, contrairement au service réseau it n'a pas la capacité d'accéder au réseau que la machine accède au réseau comme un anonyme utilisateur.

    • nom: NT AUTHORITY\LocalService
    • le compte n'a pas de mot de passe (les informations de mot de passe que vous fournissez sont ignorées)
    • HKCU représente le service Local compte d'utilisateur
    • a minimum privilèges sur l'ordinateur local
    • présente anonyme informations d'identification sur le réseau
    • SID : S-1-5-19
    • a son propre profil sous le HKEY_USERS clé de registre ( HKEY_USERS\S-1-5-19 )

  • service de réseau compte

    compte de service limité qui est destiné à exécuter des services privilégiés standard. Ce compte est beaucoup plus limité que le système Local (ou même L'administrateur) mais a toujours le droit d'accéder au réseau comme la machine (Voir mise en garde ci-dessus).

    • NT AUTHORITY\NetworkService
    • le compte n'a pas de mot de passe (les informations de mot de passe que vous fournissez sont ignorées)
    • HKCU représente le service réseau compte d'utilisateur
    • a minimal privilèges sur l'ordinateur local
    • présente les justificatifs d'identité de l'ordinateur (par exemple MANGO$ ) aux serveurs distants
    • SID : S-1-5-20
    • a son propre profil sous le HKEY_USERS clé de registre ( HKEY_USERS\S-1-5-20 )
    • Si vous essayez de programmer une tâche en l'utilisant, entrez NETWORK SERVICE dans le sélectionnez utilisateur ou groupe dialogue

  • système local compte 1519320920 "(dangereux, ne pas utiliser!)

    Compte totalement fiable, plus que le compte administrateur. Il n'y a rien sur une seule boîte que cette compte ne peut pas le faire, et il a le droit d'accès au réseau que la machine (cela nécessite d'Active Directory et de l'octroi de la machine autorisations de compte de quelque chose)

    • nom: .\LocalSystem (peut également utiliser LocalSystem ou ComputerName\LocalSystem )
    • le compte n'a pas de mot de passe (les informations de mot de passe que vous fournissez sont ignorées)
    • SID : S-1-5-18
    • n'a pas de profil de son propre ( HKCU représente par défaut de l'utilisateur)
    • a vaste privilèges sur l'ordinateur local
    • présente les justificatifs d'identité de l'ordinateur (par exemple MANGO$ ) aux serveurs distants

ci-dessus lorsqu'il est question d'accéder au réseau, il s'agit uniquement de SPNEGO (Negotiate), NTLM et Kerberos et non à tout autre mécanisme d'authentification. Par exemple, le traitement de LocalService peut toujours accéder à internet.

le problème général avec l'exécution comme une norme hors de la boîte compte est que si vous modifiez l'une des permissions par défaut vous étendez l'ensemble des choses tout ce qui fonctionne comme ce compte peut le faire. Ainsi, si vous accordez DBO à une base de données, non seulement votre service peut fonctionner en tant que Service Local ou réseau Le Service accède à cette base de données mais tout le reste fonctionne comme ces comptes peuvent aussi. Si chaque développeur fait cela, l'ordinateur disposera d'un compte de service qui aura les permissions de faire pratiquement n'importe quoi (plus précisément le super-ensemble de tous les différents Privilèges supplémentaires accordés à ce compte).

du point de vue de la sécurité, il est toujours préférable d'utiliser votre propre compte de service qui a précisément les permissions dont vous avez besoin pour faire ce que votre service fait et rien d'autre. Toutefois, le coût de cette approche est de configurer votre compte de service et de gérer le mot de passe. C'est une question d'équilibre que chaque application doit gérer.

dans votre cas particulier, le problème que vous voyez probablement est que L'activation DCOM ou COM+ est limitée à un ensemble donné de comptes. Dans Windows XP SP2, Windows Server 2003, et au-dessus de la permission D'Activation a été limité de manière significative. Vous devez utiliser les services Composant MMC snapin pour examiner votre objet COM spécifique et voir les permissions d'activation. Si vous n'accédez à rien sur le réseau en tant que compte machine, vous devriez sérieusement envisager d'utiliser service Local (pas de système Local qui est essentiellement le système d'exploitation).


Dans Windows Server 2003 vous ne peut pas exécuter une tâche planifiée comme

  • NT_AUTHORITY\LocalService (alias le compte de service Local), ou
  • NT AUTHORITY\NetworkService (alias The Network Service account).

cette capacité n'a été ajoutée qu'avec la tâche Scheduler 2.0 , qui n'existe que sous Windows Vista/Windows Server 2008 et versions plus récentes.

un service tournant sous le nom de NetworkService présente les références de la machine sur le réseau. Cela signifie que si votre ordinateur a été appelé mango , il présenterait comme le compte de machine MANGO$ :

enter image description here

635
répondu Peter Oehlert 2017-04-13 12:13:44