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_WPG
grupo 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_IUSRS
e IUSR
consulte:
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\DefaultAppPool
criada 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 DefaultAppPool
acima.
NETWORK SERVICE:
-
A NETWORK SERVICE
conta é 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.config
arquivo localmente (se essa configuração estiver bloqueada, ela deverá ser feita por um administrador no machine.config
arquivo).
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 IUSR
ou como uma conta anônima personalizada específica.
LOCAL SERVICE:
A LOCAL SERVICE
conta é 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
:
No site, você deve configurar o recurso de autenticação:
Clique com o botão direito e edite a entrada Autenticação Anônima:
Verifique se "Identidade do pool de aplicativos" está selecionada:
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.0
permissões do pool, poderá fazer isso através do Explorer:
Clique no botão "Verificar nomes":
Ou você pode fazer isso usando o ICACLS.EXE
utilitá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, BobsCatPicBlog
entã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'?