Qual papel a “App Pool Identity” desempenha para um Pool de Aplicativos?

16

Ao falar sobre segurança do IIS 7.5, AFAIK:

Identidade do pool de aplicativos decide quem meu aplicativo da Web é executado como.

Método de autenticação decide a quem os clientes são autenticados como.

Eu tenho uma pasta virtual configurada assim:

  • Eu uso a autenticação anônima com a expectativa de que todos os clientes devam ser autenticados como IUSR .
  • Eu dou IUSR controle total da pasta.
  • Minha identidade do pool de aplicativos é definida como a conta XXX, que não tem permissão para a pasta. (Eu intencionalmente defino isso)

Mas acontece que não consigo navegar pelos arquivos nessa pasta. Depois de conceder permissão à conta do XXX para acessar essa pasta, tudo corre bem.

Então, qual papel a Identidade do Pool de Aplicativos desempenha na autenticação anônima? É totalmente inesperado que eu tenha que conceder permissão à conta do App Pool Identity para acessar a pasta. Eu pensei que a autenticação anônima seria suficiente?

Obrigado.

    
por smwikipedia 15.03.2011 / 10:14

3 respostas

18

Muitos termos sobrecarregados aqui e uma alteração entre o IIS 7 e o 7.5.

Conta do pool de aplicativos versus conta do pool de aplicativos

Vamos começar com a identidade do Pool de aplicativos (I em minúsculas, também conhecida como Conta do pool de aplicativos ):

A maneira como eu digo, a Conta do pool de aplicativos é a conta usada para inicializar um pool de aplicativos e a identidade que o pool de aplicativos pressupõe quando não está representando ninguém mais.

Assim, seja qual for a identidade que você der ao App Pool, precisará ler os arquivos na pasta de conteúdo : particularmente {mas não limitado a} qualquer arquivo web.config (que faz parte da configuração do IIS e controla o que o pool de aplicativos fará).

Se ele não conseguir acessar uma pasta, presumirá que pode haver um arquivo web.config importante (que muda o jogo) e exibirá um erro. Portanto, a conta do App Pool precisa de acesso Read para todas as pastas de conteúdo.

ApplicationPoolIdentity

Por que diferenciar a conta do pool de aplicativos (a identidade do pool de aplicativos) da identidade do pool de aplicativos? Como o ApplicationPoolIdentity usado por capitais especiais é uma nova conta type - uma conta de serviço gerenciado - introduzida e tornada padrão no IIS 7.5 / Windows 2008 R2 e disponível no Windows 2008 SP2 também (mas não o padrão).

Consulte Identidades do Pool de Aplicativos no IIS. Net

Quando você cria um site sob R2 usando a GUI:

  • um pool de aplicativos será criado para hospedar esse website e
  • o tipo de conta será ApplicationPoolIdentity, em vez de Network Service (o padrão de 2008), Local Service ou Local System.

Com o RTM de 2008, a conta padrão do Pool de aplicativos era o Serviço de rede mais uma única identidade / uniquificador do pool de aplicativos; o novo tipo de conta AppPoolIdentity do R2 / SP2 é uma conta Network-Service- como (ou seja, é o computador quando se conecta diretamente), mas impede a representação de outro Pool de Aplicativos dentro a mesma caixa.

Voltar para a pergunta original:

  • Conta do pool de aplicativos define quem seu aplicativo é executado como quando não está representando mais ninguém

  • Método de autenticação descreve como você autentica os clientes (para personificá-los)

  • A conta de usuário anônimo define quem você vai executar como quando se passa por um usuário para uma solicitação que não é autenticada - IUSR é um desses usuários.

Aliás, com o IIS 7.5, você pode definir a conta de usuário anônimo como Identidade do pool de aplicativos (propriedades do método de autenticação Anônima), o que pode facilitar o isolamento e a segurança do conteúdo de um determinado site.

Defina as permissões usando o IIS AppPool \ YourSiteName para o formato de nome. (veja também postar )

    
por 15.03.2011 / 11:28
4

Você está vendo duas coisas, que são comumente confundidas no ASP.NET:

  1. "identidade do usuário" - A autenticação de uma conta de usuário não tem nada a ver com a conta ou identidade que realmente é executada em IIs e ASP.NET. A autenticação anônima permite que qualquer usuário acesse qualquer conteúdo público sem fornecer um desafio de nome de usuário e senha ao navegador do cliente. A conta IUSR anônima que é autenticada por padrão no IIS apenas aplica o acesso ao conteúdo do site público. Não afeta os processos ou recursos usados pelos serviços IIs ou ASP.NET subjacentes.
  2. "identidade do aplicativo" - essa é a conta "WindowsIdentity" real no servidor que realmente é executada por trás do IIS e do ASP.NET, que é a conta do Identity do Pool de Aplicativos atribuída ao pool por IIs e fornecida ao ASP.NET. Seu processo ASP.NET é executado sob essa conta de Identidade do Pool de Aplicativos (chamada de conta virtual no IIs versão 7.5+) por padrão.

Explicação: Primeiro, "autenticação" no ASP.NET é apenas um evento normalmente configurado no web.config que faz login em uma determinada conta de usuário que é passada como um token de usuário pelo IIs para o ASP.NET como um objeto HttpContext simples ... ou seja, a sessão atual ou o contexto do usuário atual. Ele não altera realmente o WindowsIdentity que está executando o processo do ASP.NET, apenas passa um token de id de usuário para ele. Usando o HttpContext, seu código pode usar esse id ou nome para armazenar direitos de banco de dados em várias seções do seu site. Mas ele não afetará o acesso a arquivos pelo ASP.NET, pois não afeta ou altera a identidade da conta de "processo" real do aplicativo que executa o ASP.NET em IIs.

Isso não acontece até que você faça "Representação", que diz ao ASP.NET para representar qualquer token que seja passado para ele por IIs e, em seguida, executar sob esse id de conta. Você pode definir a representação no seu web.config. Quando você ativa a representação no ASP.NET, a WindowsIdentity é alterada no processo de trabalho para qualquer conta autenticada que é passada para o ASP.NET pelo IIS, e você pode acessar os arquivos com base nos direitos atribuídos a essa conta de usuário. É importante observar quando isso ocorre temporário e o ASP.NET pode reverter para sua identidade de processo padrão que está nas versões atuais do IIs novamente a conta do Identity do Pool de Aplicativos atribuída a um determinado Pool de Aplicativos.

Quando o IIs usa apenas a conta de usuário anônima simples sem autenticação explícita definida no ASP.NET, o IIs inicia por padrão a conta Identidade do Pool de Aplicativos do Pool de Aplicativos atribuída do site e a transmite para o ASP.NET e o processo de trabalho. Essa conta de identidade do pool de aplicativos processa todas as solicitações para o IIS e executa o ASP.NET para esse site.

Quando o IIs inicia nesta configuração e é acessado por um usuário, ele autentica os bastidores, por padrão, a conta IUSR anônima que determina o acesso a páginas da Web e outros recursos básicos. Mas essa conta não é passada para o ASP.NET. E isso não afeta o IIS do Application Pool Identity e o ASP.NET é executado.

Se você definir Impersonate como "true" em say your web.config, E estiver usando a conta IUSR anônima padrão em IIs para acesso público, E definir como true explicitamente a propriedade anonymousAuthentication no web.config (em vez de usando uma conta de login do Windows ou outra), o IIs lançará a Identidade do Conjunto de Aplicativos e os IIs e o ASP.NET agora executarão seus processos de aplicativos como a conta autenticada e representada por IUSR anônima.

Quando você faz isso, o ASP.NET e seus processos agora serão executados na conta IUSR .... ou seja, o processo de aplicativos do ASP.NET executará sua conta WindowsIdentity como a conta IUSR. Agora você pode aplicar acesso de leitura / gravação a essa conta IUSR anônima e às pastas que deseja que essa conta acesse. (Observação: no entanto, certifique-se de adicionar a conta de processo padrão, a conta Pool de aplicativos para o pool, os direitos também para essas pastas. Isso está de acordo com a recomendação da Microsoft)

Boa sorte!

    
por 06.04.2017 / 07:24
2

Existem dois contextos de autenticação em jogo. O processo do servidor da Web (que lida com suas solicitações da Web) é executado como o usuário da Identidade do Pool de Aplicativos. Quando uma solicitação chega ao seu host virtual, o pool de aplicativos representa o usuário listado no site específico "Credenciais de autenticação anônimas" - por padrão, IUSR.

Todos os scripts executados em seu site serão executados como IUSR, mas o registro em log e determinadas outras funções serão executadas como o Usuário do Pool de Aplicativos (por padrão, Serviço de Rede - embora isso tenha sido alterado recentemente para usar um usuário especial do pool de aplicativos virtuais). A App Pool Identity (Serviço de Rede) precisa ser capaz de listar os arquivos em seu diretório conforme certas verificações são feitas na pilha de solicitações antes que o controle seja entregue ao seu script.

É recomendável executar um site por pool e definir a identidade do pool de aplicativos como o mesmo usuário anônimo do site. É possível sair do contexto do Usuário Anônimo (IUSR) e elevar os privilégios para aqueles da própria Identidade do Pool de Aplicativos.

    
por 15.03.2011 / 10:48

Tags