A diferença entre a conta ‘Sistema local’ e a conta ‘Serviço de rede’?

Eu escrevi um serviço do Windows que gera um processo separado. Este processo cria um object COM. Se o serviço for executado na conta ‘Sistema Local’, tudo funcionará bem, mas se o serviço for executado na conta ‘Serviço de Rede’, o processo externo será iniciado, mas não criará o object COM. O erro retornado da criação do object COM não é um erro COM padrão (acho que é específico para o object COM que está sendo criado).

Então, como eu determino como as duas contas, ‘Sistema Local’ e ‘Serviço de Rede’ diferem? Essas contas internas parecem muito misteriosas e ninguém parece saber muito sobre elas.

   

Como há muita confusão sobre a funcionalidade das contas de serviço padrão, tentarei dar uma rápida descida.

Primeiro as contas reais:

  • Conta LocalService (preferida)

    Uma conta de serviço limitada muito semelhante ao Serviço de Rede e destinada a executar serviços padrão com privilégios mínimos. No entanto, ao contrário do serviço de rede, ele não tem capacidade de acessar a rede, pois a máquina acessa a rede como um usuário anônimo .

    • Nome: NT AUTHORITY\LocalService
    • a conta não tem senha (qualquer informação de senha que você fornecer será ignorada)
    • HKCU representa a conta de usuário LocalService
    • tem privilégios mínimos no computador local
    • apresenta credenciais anônimas na rede
    • SID : S-1-5-19
    • tem seu próprio perfil sob a chave de registro HKEY_USERS\S-1-5-19 ( HKEY_USERS\S-1-5-19 )
  • Conta NetworkService

    Conta de serviço limitada que serve para executar serviços privilegiados padrão. Esta conta é muito mais limitada do que o Sistema Local (ou mesmo Administrador), mas ainda tem o direito de acessar a rede como a máquina (veja a advertência acima).

    • NT AUTHORITY\NetworkService
    • a conta não tem senha (qualquer informação de senha que você fornecer será ignorada)
    • HKCU representa a conta de usuário do NetworkService
    • tem privilégios mínimos no computador local
    • apresenta as credenciais do computador (por exemplo, MANGO$ ) para servidores remotos
    • SID : S-1-5-20
    • tem seu próprio perfil sob a chave de registro HKEY_USERS\S-1-5-20 ( HKEY_USERS\S-1-5-20 )
    • Se estiver tentando agendar uma tarefa usando-a, insira NETWORK SERVICE na checkbox de diálogo Selecionar Usuário ou Grupo.
  • Conta LocalSystem (perigosa, não use!)

    Conta completamente confiável, mais do que a conta de administrador. Não há nada em uma única checkbox que esta conta não pode fazer, e tem o direito de acessar a rede como a máquina (isso requer o Active Directory e conceder as permissions da conta da máquina para algo)

    • Nome:. .\LocalSystem (também pode usar LocalSystem ou ComputerName\LocalSystem )
    • a conta não tem senha (qualquer informação de senha que você fornecer será ignorada)
    • SID : S-1-5-18
    • não tem nenhum perfil próprio ( HKCU representa o usuário padrão )
    • tem amplos privilégios no computador local
    • apresenta as credenciais do computador (por exemplo, MANGO$ ) para servidores remotos

Acima, quando se fala em acessar a rede, isso se refere unicamente ao SPNEGO (Negotiate), NTLM e Kerberos e não a qualquer outro mecanismo de autenticação. Por exemplo, o processamento em execução como LocalService ainda pode acessar a Internet.

O problema geral com a execução de uma conta padrão é que, se você modificar qualquer uma das permissions padrão, estará expandindo o conjunto de coisas que tudo o que essa conta pode executar. Portanto, se você conceder DBO a um database, seu serviço não só poderá ser executado como Serviço Local ou Serviço de Rede, mas também todo o restante que estiver sendo executado como essas contas. Se cada desenvolvedor fizer isso, o computador terá uma conta de serviço que tenha permissions para fazer praticamente qualquer coisa (mais especificamente, o superconjunto de todos os diferentes privilégios adicionais concedidos a essa conta).

É sempre preferível, do ponto de vista de segurança, executar como sua própria conta de serviço que tenha exatamente as permissions necessárias para fazer o que seu serviço faz e nada mais. No entanto, o custo dessa abordagem é configurar sua conta de serviço e gerenciar a senha. É um ato de equilíbrio que cada aplicativo precisa gerenciar.

No seu caso específico, o problema que você provavelmente está vendo é que a ativação DCOM ou COM + está limitada a um determinado conjunto de contas. No Windows XP SP2, o Windows Server 2003 e acima da permissão de Ativação foi restringido de forma significativa. Você deve usar o snap-in MMC dos Serviços de Componentes para examinar seu object COM específico e ver as permissions de ativação. Se você não estiver acessando nada na rede como a conta da máquina, considere seriamente usar o Serviço Local (não o Sistema Local, que é basicamente o sistema operacional).


No Windows Server 2003, não é possível executar uma tarefa agendada

  • NT_AUTHORITY\LocalService (também conhecido como a conta Serviço local) ou
  • NT AUTHORITY\NetworkService (também conhecido como a conta do Serviço de Rede).

Esse recurso foi adicionado apenas com o Agendador de Tarefas 2.0 , que existe apenas no Windows Vista / Windows Server 2008 e mais recente.

Um serviço em execução como NetworkService apresenta as credenciais da máquina na rede. Isso significa que se o seu computador fosse chamado mango , ele seria apresentado como a conta de máquina MANGO$ :

insira a descrição da imagem aqui