Quais são todas as contas de usuário do IIS / ASP.NET e como elas diferem?

282

No Windows Server 2008 com o ASP.NET 4.0 instalado, existem várias contas de usuário relacionadas e não consigo entender qual é qual, qual a diferença entre elas e qual REALMENTE é a que meu aplicativo executa. Aqui está uma lista:

  • IIS_IUSRS
  • IUSR
  • DefaultAppPool
  • ASP.NET v4.0
  • SERVIÇO DE REDE
  • SERVIÇO LOCAL.

O que é o que?

Vilx-
fonte
E usando o Windows Server 2012 com ASP.NET 4.0 ou superior?
Kiquenet 03/10/19

Respostas:

432

Essa é uma pergunta muito boa e, infelizmente, muitos desenvolvedores não fazem perguntas suficientes sobre a segurança do IIS / ASP.NET no contexto de ser um desenvolvedor da Web e configurar o IIS. Então aqui vai ....

Para cobrir as identidades listadas:

IIS_IUSRS:

Isso é análogo ao antigo IIS_WPGgrupo IIS6 . É um grupo interno com sua segurança configurada para que qualquer membro desse grupo possa atuar como uma identidade do pool de aplicativos.

IUSR:

Essa conta é análoga à antiga IUSR_<MACHINE_NAME>conta local que era o usuário anônimo padrão dos sites IIS5 e IIS6 (ou seja, aquela configurada na guia Segurança de diretório das propriedades de um site).

Para mais informações sobre IIS_IUSRSe IUSRconsulte:

Noções básicas sobre contas de usuário e grupo internas no IIS 7

DefaultAppPool:

Se um pool de aplicativos estiver configurado para ser executado usando o recurso Identidade do Pool de Aplicativos, uma conta "sintetizada" chamada IIS AppPool\<pool name>será criada rapidamente e usada como identidade do pool. Nesse caso, haverá uma conta sintetizada chamada IIS AppPool\DefaultAppPoolcriada para o tempo de vida do pool. Se você excluir o pool, essa conta não existirá mais. Ao aplicar permissões a arquivos e pastas, elas devem ser adicionadas usando IIS AppPool\<pool name>. Você também não verá essas contas de pool no Gerenciador de usuários dos computadores. Consulte o seguinte para obter mais informações:

Identidades do pool de aplicativos

ASP.NET v4.0: -

Essa será a identidade do pool de aplicativos do pool de aplicativos ASP.NET v4.0. Veja DefaultAppPoolacima.

NETWORK SERVICE: -

A NETWORK SERVICEconta é uma identidade interna introduzida no Windows 2003. NETWORK SERVICEé uma conta de baixo privilégio sob a qual você pode executar seus pools de aplicativos e sites. Um site em execução em um pool do Windows 2003 ainda pode representar a conta anônima do site (IUSR_ ou o que você configurou como identidade anônima).

No ASP.NET anterior ao Windows 2008, o ASP.NET podia executar solicitações na conta Pool de Aplicativos (normalmente NETWORK SERVICE). Como alternativa, você pode configurar o ASP.NET para representar a conta anônima do site por meio da <identity impersonate="true" />configuração no web.configarquivo localmente (se essa configuração estiver bloqueada, ela deverá ser feita por um administrador no machine.configarquivo).

A configuração <identity impersonate="true">é comum em ambientes de hospedagem compartilhada em que conjuntos de aplicativos compartilhados são usados ​​(em conjunto com configurações de confiança parcial para impedir o desenrolamento da conta representada).

No IIS7.x / ASP.NET, o controle de representação agora está configurado pelo recurso de configuração de autenticação de um site. Portanto, você pode configurar para executar como a identidade do pool IUSRou como uma conta anônima personalizada específica.

LOCAL SERVICE:

A LOCAL SERVICEconta é uma conta interna usada pelo gerente de controle de serviço. Possui um conjunto mínimo de privilégios no computador local. Ele tem um escopo de uso bastante limitado:

Conta LocalService

LOCAL SYSTEM:

Você não perguntou sobre isso, mas estou acrescentando a totalidade. Esta é uma conta interna local. Possui privilégios e confiança razoavelmente extensos. Você nunca deve configurar um site ou pool de aplicativos para executar sob essa identidade.

Conta LocalSystem

Na prática:

Na prática, a abordagem preferida para proteger um site (se o site tiver seu próprio pool de aplicativos - que é o padrão para um novo site no MMC do IIS7) é executar sob Application Pool Identity. Isso significa definir a identidade do site nas Configurações avançadas do pool de aplicativos para Application Pool Identity:

insira a descrição da imagem aqui

No site, você deve configurar o recurso de autenticação:

insira a descrição da imagem aqui

Clique com o botão direito e edite a entrada Autenticação Anônima:

insira a descrição da imagem aqui

Verifique se "Identidade do pool de aplicativos" está selecionada:

insira a descrição da imagem aqui

Quando você aplica permissões de arquivo e pasta, concede à identidade do Pool de Aplicativos todos os direitos necessários. Por exemplo, se você estiver concedendo a identidade do pool de aplicativos para as ASP.NET v4.0permissões do pool, poderá fazer isso através do Explorer:

insira a descrição da imagem aqui

Clique no botão "Verificar nomes":

insira a descrição da imagem aqui

Ou você pode fazer isso usando o ICACLS.EXEutilitário:

icacls c: \ wwwroot \ mysite / grant "IIS AppPool \ ASP.NET v4.0" :( CI) (OI) (M)

... ou ... se o pool de aplicativos do seu site for chamado, BobsCatPicBlogentão:

icacls c: \ wwwroot \ mysite / grant "IIS AppPool \ BobsCatPicBlog" :( CI) (OI) (M)

Espero que isso ajude a esclarecer as coisas.

Atualizar:

Acabei de me deparar com esta excelente resposta de 2009, que contém várias informações úteis, que valem a pena ser lidas:

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

Kev
fonte
não concordam em usar mesmo usuário para anonimous identidade autenticação e piscina aplicativo ... se você precisa dar a permissão apppoolidentity gravação para uma pasta ....
giammin
1
@giammin - por que não? A menos que você tenha um caso especial, o uso de identidades de pool de aplicativos é a abordagem mais segura, desde que cada site esteja em seu próprio pool de aplicativos. Odeio fazer o "apelo à autoridade", mas sendo um engenheiro de host da Web compartilhado e um cara de segurança há 15 anos, essa abordagem é um acéfalo no IIS7 +.
Kev
@Kev simplesmente eu não gosto de dar permissão de gravação em um site para o usuário anônimo
giammin
1
Os pools de aplicativos podem ser ainda mais específicos usando o IIS AppPool \ <name_of_apppool>. Em uma observação relacionada, o IIS Express funcionará apenas com o IIS AppPool \ ASP.NET v4.0 porque as contas virtuais do pool de aplicativos não são criadas.
Kevindaub
@ daub815 - O IIS Express funciona de maneira diferente porque foi projetado para ser executado sob o login e inicialização do Windows e desligado conforme necessário durante o desenvolvimento e a depuração. Na realidade, ele realmente não usa ou depende de pools ou infraestrutura de aplicativos do Full Fat IIS. A intenção do IIS Express foi para dar aos desenvolvedores como muito do mesmo comportamento, sabor e configuração como a coisa real, porque servidor brinquedo web do VS foi severamente limitada ...
Kev