Que conta de usuário devo usar para um serviço de aplicativo da web de intranet?

1

Eu escrevi uma aplicação web para rodar no Windows (XP, 7,2008, etc), não usando ferramentas do MS (python / django / nginx, embora isso não tenha importância). Para executar o aplicativo, criei um serviço do Windows que é instalado e executado corretamente.

No entanto, o aplicativo será executado em um ambiente em que a segurança é importante. Por padrão, o serviço se instala em execução na conta Local System , que eu entendo que tem controle total do computador. Não parece uma boa ideia.

Eu também vi Network Service usado, mas as descrições tendem a falar sobre domínios e tal. Este aplicativo usa a rede e está sendo executado no Windows, mas não fala muito "Windows" se em tudo. É auto-contido e mantém seus dados na "pasta comum de dados do aplicativo", também conhecida como ...\All Users\Application Data .

Devo usar Network Service ? Devo criar minha própria conta? No unix eu faria, mas não tenho certeza das "pegadinhas" no Windows. Seria mais fácil usar uma conta existente.

    
por Gringo Suave 10.11.2012 / 20:21

1 resposta

2

Como você está vindo de um background Unix, você deve estar acostumado a rodar em um contexto não privilegiado. Muitos desenvolvedores do Windows não têm esse tipo de experiência e, como resultado, temos muitos serviços no ecossistema do Windows que exigem privilégios excessivos. Estou muito feliz em ouvir você questionando a necessidade de executar como "LocalSystem".

Como um administrador de sistema do Windows com segurança, prefiro que todos os meus serviços sejam executados em contas de usuário não privilegiadas, sejam locais no servidor em que o serviço está sendo executado ou, se o serviço precisar acessar recursos em outras máquinas via Microsoft rede, uma conta de domínio.

Pessoalmente, não gosto de nenhum dos "Serviço local" , "Serviço de rede" , etc, contextos, porque eles não são contas de usuário que eu possa controlar especificamente os parâmetros de. É que "Serviço Local" sempre acessa máquinas remotas com sessões nulas (credenciais anônimas) e que o comportamento não pode ser duplicado com uma conta de usuário normal. Ainda assim, eu prefiro um usuário não privilegiado explicitamente especificado para "Serviço Local", mas "Serviço Local" também é uma opção perfeitamente razoável. Se você escrever seu código para funcionar como "Serviço Local", ele deve funcionar bem como um usuário não privilegiado, a menos que você escreva em algumas dependências explícitas em "Serviço Local".

    
por 10.11.2012 / 20:46