Como, quando adiciono o acesso IIS_IUSRS RW a uma pasta, ele não permite automaticamente o acesso ISUR RW?

11

Estou usando o IIS7 (Windows Server 2008 x64) e tenho uma configuração de site usando autenticação anônima. A identidade do usuário anon é configurada como IUSR. O aplicativo grava arquivos em uma pasta e estou concedendo permissões RW ao grupo IIS_IUSRS para a pasta. Isso não funciona. Devo explicitamente fornecer permissões de IUSR RW para permitir que o aplicativo grave na pasta.

Entendo que a identidade do pool de aplicativos é adicionada automaticamente ao grupo IIS_IUSRS. Supus que o IUSR (ou qualquer identidade de usuário anônima) também fosse um membro implícito do grupo IIS_IUSRS. Parece que não é esse o caso.

Durante a solução de problemas, eu uso o Process Monitor para visualizar o acesso à pasta e determinei que o Serviço de Rede (a identidade do pool de aplicativos) está representando o IUSR (era o que eu esperava), mas fornecer permissões de RW ao grupo IIS_IUSRS não permitiu que o IUSR acesse o arquivo (acesso negado).

Alguém pode explicar se o IUSR é ou não um membro do grupo IIS_IUSRS?

Analisei a seguinte documentação e não encontrei uma resposta sólida:

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

Identidades do pool de aplicativos

Izzy
fonte

Respostas:

14

Isso ocorre porque essas são duas coisas diferentes. IIS_IUSRS é o grupo para contas de processo de trabalho do IIS . Isso significa a identidade na qual o próprio pool de aplicativos é executado. IUSR é a identidade do usuário anônimo. Isso significa a identidade que o IIS acredita ser o usuário que está acessando o site.

Agora, mesmo que você não tenha dito, deixe-me adivinhar - este aplicativo é clássico asp? (Caso contrário, se for .Net, você deverá usar a representação). De qualquer maneira, o que acontece é que os recursos são acessados ​​como a identidade representada, ou seja, o usuário anônimo no seu caso, ou seja, IUSR. É por isso que você precisa conceder os direitos. No .Net, se você desativar a representação, verá que o IIS_IUSRS entrará em ação conforme o esperado. No ASP clássico (e para arquivos estáticos), você não tem escolha, a representação é sempre "ativada"; portanto, é sempre a identidade do usuário usada, não a identidade do pool. Portanto, como IIS_IUSRS é para identidades de pool, ele não está em jogo.


Editar depois que o OP adicionou mais informações:

É fácil confundir IUSR e IIS_IUSRS por causa de seus nomes. A maneira de ver que elas são diferentes é lembrar que o IIS_IUSRS substitui o IIS_WPG no IIS6, que era o Grupo de Processo do Trabalhador. A esses grupos, você adiciona contas nas quais deseja executar seus pools, e não em identidades e privilégios, devem ser mais limitados. por exemplo. às vezes, convém usar uma conta de domínio para executar o pool para delegação do kerberos em outros recursos de rede. Em seguida, você adicionaria essa conta de serviço a esse grupo.

Quando a representação está ativada, o pool / processo finge ser o usuário porque foi solicitado. No caso de anon auth (seu caso), esse usuário é IUSR. No caso de autenticação do Windows, seria a identidade windows \ domain do usuário. É também por isso que você obtém um impacto no desempenho com a representação, porque o processo precisa mudar para uma identidade diferente para o acesso aos recursos.

Se você estiver usando autenticação .NET e anônima, não vejo por que você ativaria a representação. Caso você não esteja usando ou não precise de representação, saiba mais alguns truques no caso do IIS7: você pode fazer com que o seu IUSR desapareça completamente e acabe com toda a confusão. Eu acho que você gostaria disso, e é o meu método preferido também. Tudo o que você precisa fazer é dizer para reutilizar a identidade do pool como identidade anônima .

Então, depois disso, você precisará lidar apenas com o grupo IIS_IUSRS. Mas não se confunda, isso ainda não significa que esses dois sejam iguais! Pode ser possível que a identidade do processo substitua o IUSR, mas não o contrário!

Mais alguns truques do IIS7: se você olhar para IIS_IUSRS, ele pode estar vazio. Isso ocorre porque as identidades de seu pool virtual são automaticamente adicionadas a ele quando o pool é iniciado, para que você não precise se preocupar com essas coisas.

Esta tabela deve ajudar a esclarecer melhor como a identidade de execução do encadeamento é determinada:

Recursos de acesso anônimo de representação acessados ​​como

Habilitado IUSR_computer no IIS5 / 6 ou,
                                       IUSR no IIS7 ou,
                                       Se você alterou a conta de usuário anon 
                                       no IIS, o que você definir lá
Habilitado Desabilitado MYDOM \ MyName
Desabilitado Habilitado NT Authority \ Network Service (identidade do pool)
Desabilitado Desabilitado NT Authority \ Network Service (identidade do pool)

Amit Naidu
fonte
Definitivamente, estamos usando .Net (direcionado para 3,5), mas pode estar usando representação. Vou ter que verificar com meus desenvolvedores para ter certeza. Minha confusão decorre do fato de que eu assumi (parece incorretamente) que a identidade do usuário anônimo era automaticamente um membro do grupo IIS_IUSRS. Como ele não está, deixe-me esclarecer e, por favor, me corrija se estiver cansado.
1) Usando o ASP clássico, as permissões de acesso a arquivos usam a identidade de usuário anônima. No IIS 7 ou posterior, esse usuário não é membro do grupo IIS_IUSRS por padrão. 2) Usando o ASP.Net, as permissões de acesso a arquivos usam a identidade anônima do usuário se a representação estiver ativada. No IIS 7 ou posterior, esse usuário não é membro do grupo IIS_IUSRS por padrão. 3) Usando o ASP.Net, as permissões de acesso a arquivos usam a identidade do processo do operador se a representação estiver desabilitada. No IIS 7 ou posterior, esse usuário sempre é membro do grupo IIS_IUSRS por padrão.
Sim, absolutamente correto em todos os pontos! Para ser perfeitamente claro, nos itens 1 e 2 você deve adicionar "se a autenticação anon do IIS estiver ativada", que eu não precisei incluir anteriormente porque você já disse que está usando o anon. Veja a tabela que adicionei para explicar melhor isso.
Amit Naidu
Muito obrigado por esclarecer isso. Ele concorda com o que encontrei por tentativa e erro, mas não vi isso documentado com muita clareza em nenhum lugar. É fundamental para os administradores que empregam LUA em seus servidores ao configurar aplicativos IIS que precisam de permissão de gravação.