Como atribuir permissões à conta ApplicationPoolIdentity

263

No IIS 7 no Windows Server 2008, os pools de aplicativos podem ser executados como a conta "ApplicationPoolIdentity" em vez da conta NetworkService.

Como atribuir permissões a esta conta "ApplicationPoolIdentity". Ele não aparece como um usuário local na máquina. Não aparece como um grupo em nenhum lugar. Nada remotamente parecido com ele aparece em qualquer lugar. Quando procuro usuários locais, grupos e contas internas, ele não aparece na lista, nem algo semelhante aparece na lista. O que está acontecendo?

Não sou o único com esse problema: consulte Problemas com ApplicationPoolIdentity no IIS 7.5 + Windows 7 para obter um exemplo.


"Infelizmente, isso é uma limitação do seletor de objetos no Windows Server 2008 / Windows Vista - como várias pessoas já o descobriram, você ainda pode manipular a ACL para a identidade do pool de aplicativos usando ferramentas de linha de comando como icacls ".

Triynko
fonte

Respostas:

289

Atualização: a pergunta original era para o Windows Server 2008, mas a solução é mais fácil para o Windows Server 2008 R2 e Windows Server 2012 (e Windows 7 e 8). Você pode adicionar o usuário através da interface do usuário NTFS digitando-o diretamente. O nome está no formato do IIS APPPOOL \ {nome do pool de aplicativos}. Por exemplo: IIS APPPOOL \ DefaultAppPool.

IIS APPPOOL\{app pool name}

Nota: pelos comentários abaixo, há duas coisas a serem observadas:

  • Digite a sequência diretamente no "Selecionar usuário ou grupo" e não no campo de pesquisa.
  • Em um ambiente de domínio, você precisa primeiro definir o local para o seu computador local.

Referência ao artigo do Microsoft Docs: Identidades do pool de aplicativos> Protegendo recursos

Resposta original: (para Windows Server 2008) Esse é um ótimo recurso, mas como você mencionou, ele ainda não está totalmente implementado. Você pode adicionar a identidade do pool de aplicativos no prompt de comando com algo como icacls e gerenciar a partir da GUI. Por exemplo, execute algo parecido com isto no prompt de comando:

icacls c:\inetpub\wwwroot /grant "IIS APPPOOL\DefaultAppPool":(OI)(CI)(RX)

Em seguida, no Windows Explorer, vá para a pasta wwwroot e edite as permissões de segurança. Você verá o que parece um grupo (o ícone do grupo) chamado DefaultAppPool. Agora você pode editar as permissões.

No entanto, você não precisa usar isso. É um bônus que você pode usar se quiser. Você pode usar a maneira antiga de criar um usuário personalizado por pool de aplicativos e atribuir o usuário personalizado ao disco. Que possui suporte completo à interface do usuário.

Esse método de injeção de SID é bom porque permite que você use um único usuário, mas isola totalmente cada site um do outro sem precisar criar usuários únicos para cada pool de aplicativos. Bastante impressionante, e será ainda melhor com o suporte à interface do usuário.

Nota: Se você não conseguir encontrar o usuário do pool de aplicativos, verifique se o serviço do Windows chamado Application Host Helper Service está em execução. É o serviço que mapeia usuários do pool de aplicativos para contas do Windows.

Scott Forsyth - MVP
fonte
1
É uma besta estranha, pois não é como um grupo em que o usuário vive em um grupo, e não é como uma conta de computador versus uma conta de usuário que são completamente diferentes uma da outra. A conta do pool de aplicativos 'sobrepõe' o usuário da identidade do pool de aplicativos. Por exemplo, você pode ter 5 pools de aplicativos usando o Serviço de Rede e 5 outros usando contas personalizadas, mas são 10 contas de pool de aplicativos gerenciadas pelo sistema diferentes. As vantagens são notadas na pasta c: \ inetpub \ temp \ appPools, onde é gerenciada automaticamente e bloqueia o sistema de maneira limpa. O IIS aproveita-os bem. Nosso uso em pastas é opcional.
Scott Forsyth - MVP
29
Observe que, se você digitar "IIS APPPOOL \ DefaultAppPool" diretamente em "Selecionar usuário ou grupo" (em vez de procurá-lo) ao editar permissões, ele será reconhecido muito bem (testado em Win7 x64 e Win2k8 R2 x64).
Milan Gardian 07/04
5
Você está correto para o Win7 e o Win2k8 R2. Não foi implementado no Win2k8 RTM, mas está no R2.
Scott Forsyth - MVP
9
Finalmente tenho isso - se você digitar o nome do pool de aplicativo diretamente como @Milan Gardian diz acima e mudar o campo de local para a máquina local, então ele funciona
Ciaran Bruen
4
Muito obrigado pelas "duas coisas que você deve conhecer". Eu estava tropeçando em ambos, e essa era uma explicação clara e simples dos problemas e como conseguir o que eu precisava. É uma pena que nenhuma documentação do MSDN esteja tão clara.
Ian Grainger 14/11
22

Você precisa garantir que o From this locationcampo esteja definido como local machinee não no domínio.

Eu tive o mesmo problema e, depois que mudei, funcionou bem.

Alan
fonte
4

Você realmente deve criar grupos por "função" e atribuir acessos a esse grupo no sistema de arquivos. Em seguida, adicione o pool de aplicativos aos grupos específicos de função, conforme necessário. Dessa forma, mesmo que você remova o pool de aplicativos mais tarde (e o usuário virtual fique louco ), não precisará se preocupar em refazer todas as permissões, basta adicionar o pool de aplicativos substituto ao grupo existente.

Jimbo
fonte
3

Depois de ler a resposta @Scott Forsyth - MVP, tentei reiniciar o Serviço Auxiliar de Aplicativo. Isso resolveu o problema para mim.

Roger
fonte
0

Eu estava executando o WS8 R2 e não pude adicionar IIS APPPOOL\DefaultAppPoolpelo Windows Explorer. A única maneira de funcionar era via linha de comando:

cacls [CAMINHO DO ARQUIVO] / T / E / G "IIS APPPOOL \ DefaultAppPool": C

Denis Tse
fonte
2
Estranhamente, eu tive que fazer o "IIS AppPool \ DefaultAppPool" para ser aceito. Observe o caso misto - todas as letras maiúsculas, como fiz na primeira vez, não foram aceitas na GUI.
Jeff McJunkin
0

Se esta pergunta é sobre como executar o _sp_send_dbmail no banco de dados msdb (usando o procedimento armazenado SQL Mail Database Mail no msdb), aqui estão algumas soluções. Adicione o nome de usuário do aplicativo .net do seu banco de dados (definido em sua cadeia de conexão no aplicativo .net) ao usuário msdb com a associação de função "DatabaseMailUserRole"

Muhamad Faried
fonte