Visão geral das permissões do IIS7 - ApplicationPoolIdentity

356

Recentemente, atualizamos para o IIS7 como um servidor Web principal e preciso de uma visão geral em termos de permissões. Anteriormente, ao precisar gravar no sistema de arquivos, eu daria ao usuário do AppPool (Serviço de Rede) acesso ao diretório ou arquivo.

No IIS7, vejo, como padrão, o usuário do AppPool está definido como ApplicationPoolIdentity. Portanto, quando verifico o gerenciador de tarefas, vejo que uma conta de usuário chamada 'WebSite.com' está executando o processo do IIS ('Website.com' é o nome do site no IIS)

No entanto, essa conta de usuário não existe se eu tentar usá-la para conceder permissões. Então, como determino qual usuário também concederá as permissões?

Editar =================================================== =============================

Veja abaixo o problema na captura de tela. Nosso site (www.silverchip.co.uk) é executado com o nome de usuário SilverChip.co.uk. No entanto, quando adiciono pemissions, esse usuário não existe!

insira a descrição da imagem aqui

================================= Veja a imagem do AppPool

insira a descrição da imagem aqui

LiamB
fonte
2
Na verdade microsoft informações sobre este assunto é muito bom Pool de Aplicativos Identidades
DanielV

Respostas:

680

ApplicationPoolIdentity é realmente a melhor prática a ser usada no IIS7 +. É uma conta criada dinamicamente e sem privilégios. Para adicionar segurança do sistema de arquivos a um pool de aplicativos específico, consulte "Identidades do pool de aplicativos" do IIS.net . A versão rápida:

Se o pool de aplicativos tiver o nome "DefaultAppPool" (substitua este texto abaixo se tiver um nome diferente)

  1. Abra o Windows Explorer
  2. Selecione um arquivo ou diretório.
  3. Clique com o botão direito do mouse no arquivo e selecione "Propriedades"
  4. Selecione a guia "Segurança"
  5. Clique no botão "Editar" e depois no botão "Adicionar"
  6. Clique no botão "Locais" e certifique-se de selecionar a máquina local . ( Não é o domínio do Windows se o servidor pertencer a um.)
  7. Digite " IIS AppPool \ DefaultAppPool " na caixa de texto "Digite os nomes dos objetos a serem selecionados:". (Não esqueça de alterar "DefaultAppPool" aqui para o que você nomeou seu pool de aplicativos.)
  8. Clique no botão "Verificar nomes" e clique em "OK".
Jon Adams
fonte
11
@Pino: Não, não o nome do site. Use o nome do pool de aplicativos . Cada site é atribuído a um pool de aplicativos. Você pode dizer qual deles está na caixa de diálogo Configurações básicas das propriedades do site (no IIS7).
9118 Jon Adams
2
@Pino: Nesse caso, a função de segurança que você deve usar é IIS AppPool\silverchip.co.uk. Porém, ainda não tentei períodos em nomes de segurança - convém alterá-lo para algo sem pontuação.
Jon Adams
7
Eu segui suas instruções como você disse. Mas há um hack. Você tem que definir a propriedade enable load user profilepara truenas definições do pool de aplicativos. E somente após essa configuração eu era capaz de executar o aplicativo. Portanto, atualize suas instruções e adicione o 9º ponto.
31413 Johnny_D
19
Lembre-se de verificar se as configurações do servidor para autenticação anônima também estão usando a identidade do pool de aplicativos. Essa solução funcionou para mim assim que eu voltei do IUSR.
bblue
11
Preste atenção aqui! Você não pode procurar o usuário usando a interface do usuário, mas precisa digitá-lo. Verificar o nome é a única coisa que você pode fazer.
Remco
88

Lembre-se de usar o nome local do servidor, não o nome do domínio, ao resolver o nome

IIS AppPool\DefaultAppPool

(apenas um lembrete, porque isso me deixou um pouco confuso):insira a descrição da imagem aqui

James Toomey
fonte
Sim, eu esqueço isso toda vez, obrigado pelo lembrete James Toomey!
tjans
30

Dar acesso ao usuário IIS AppPool \ YourAppPoolName pode não ser suficiente com as configurações padrão do IIS.

No meu caso, eu ainda tinha o erro Erro HTTP 401.3 - Não autorizado depois de adicionar o usuário do AppPool e foi corrigido apenas após adicionar permissões ao usuário IUSR .

Isso é necessário porque, por padrão, o acesso anônimo é feito usando o IUSR . Você pode definir outro usuário específico, o Pool de aplicativos ou continuar usando o IUSR, mas não se esqueça de definir as permissões apropriadas.

guia autenticação

Créditos a esta resposta: Erro HTTP 401.3 - Não autorizado

Zanon
fonte
3
Isso é crucial !!! É necessário alterar a "Autenticação anônima" para "Identidade do pool de aplicativos" por segurança! Tenho certeza de que há uma boa razão para definir IUSR, mas não consigo pensar em uma única. Obrigado!!!
Dan B
Isso corrigiu o problema para mim. Pode ser porque a minha versão do IIS é 8 no Windows Server 2012 R2
Myroslav
2
Este é um passo importante que deve ser adicionado à resposta aceita. Também a maneira mais simples é mudar a caixa de rádio com a identidade do pool de aplicativos
Sourcery
11
Este foi o meu problema! Obrigado!!
Sloan Reynolds
28

No Windows Server 2008 (r2), você não pode atribuir uma identidade de pool de aplicativos a uma pasta através de Propriedades-> Segurança. Você pode fazer isso através de um prompt de comando do administrador, usando o seguinte:

icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)
Chris
fonte
11
você pode explicar isso um pouco? O que significa (R)? Você realmente insere colchetes angulares neste comando?
23814 Kate Gregory
3
Olá Kate, eu estava usando <> para denotar "o nome do seu apppool aqui", mas deixei um nome legítimo para o apppool. No Gerenciador do IIS -> Pools de aplicativos, você precisará corresponder ao nome, incluindo os espaços. O último que fiz foi "IIS AppPool \ ClientName_CompanyName - Intranet". : (R) neste caso está concedendo acesso de leitura. Você também pode usar F (completo), M (modificar), RX (leitura + execução) e W (somente gravação).
31514 Chris
9
Na verdade, você pode atribuir através da guia Valores mobiliários em Propriedades no Windows Server 2008 R2, para não precisar dessa solução alternativa. Verifique se você possui objetos de segurança internos selecionados nos tipos e locais de objetos.
RISM
Esta resposta funciona para mim. A resposta selecionada não funciona para mim.
Tuyen Nguyen
3
consulte também a resposta original da resposta selecionada de [link] serverfault.com/questions/81165/… Para Windows Server 2008 simples (ou edição do Datacenter), você precisa usar a linha de comando para colocar a conta do pool de aplicativos na segurança diálogo. Uma vez lá, você pode gerenciá-lo, alterar os níveis de permissão, subdiretórios etc. Considere também: "icacls" c: \ yourdirectory "/ t / grant" IIS AppPool \ DefaultAppPool ":( OI) (CI) (R)" OI herança de objeto, herança de contêiner de IC.
secretwep
7

Parte A: Configurando seu pool de aplicativos

Suponha que o pool de aplicativos tenha o nome 'MyPool' Vá para 'Configurações avançadas' do pool de aplicativos no Gerenciador do IIS

  1. Role para baixo até 'Identidade'. Tentar editar o valor exibirá uma caixa de diálogo. Selecione 'Conta interna' e, abaixo dela, selecione 'ApplicationPoolIdentity'.

  2. Algumas linhas abaixo de 'Identidade', você deve encontrar 'Carregar perfil de usuário'. Este valor deve ser definido como 'True'.

Parte B: configurando seu site

  1. Nome do site: SiteName (apenas um exemplo)
  2. Caminho físico: C: \ Whatever (apenas um exemplo)
  3. Conectar como ...: Usuário do aplicativo (autenticação de passagem) (As configurações acima podem ser encontradas em 'Configurações básicas' do site no Gerenciador do IIS)
  4. Depois de definir as configurações básicas, procure a configuração 'Autenticação' em 'IIS' no console principal do site. Abra. Você deverá ver uma opção para 'Autenticação Anônima'. Verifique se está ativado. Em seguida, clique com o botão direito e 'Editar ...'. Selecione 'Identidade do pool de aplicativos'.

Parte C: configurando sua pasta

A pasta em questão é C: \ Whatever

  1. Vá para Propriedades - Compartilhamento - Compartilhamento avançado - Permissões e marque 'Compartilhar esta pasta'
  2. Na mesma caixa de diálogo, você encontrará um botão 'Permissões'. Clique.
  3. Uma nova caixa de diálogo será aberta. Clique em 'Adicionar'.
  4. Uma nova caixa de diálogo 'Selecionar usuários ou grupos' será aberta. Em 'A partir deste local', verifique se o nome é o mesmo do seu computador host local. Em 'Digite os nomes dos objetos', digite 'IIS AppPool \ MyPool' e clique em 'Verificar nomes' e depois em 'OK'
  5. Conceda permissões de compartilhamento completas para o usuário 'MyPool'. Aplique-o e feche as propriedades da pasta
  6. Abra as propriedades da pasta novamente. Desta vez, vá para Segurança - Avançado - Permissão e clique em Adicionar. Haverá uma opção 'Selecionar um principal' na parte superior ou outra opção para escolher um usuário. Clique.
  7. A caixa de diálogo 'Selecionar usuários ou grupos' será aberta novamente. Repita a etapa 4.
  8. Dê todas ou tantas permissões necessárias ao usuário 'MyPool'.
  9. Marque 'Substituir todas as permissões de objeto filho ... "e aplique e feche.

Agora você deve poder navegar no site

Dibyodyuti Mondal
fonte
Você é o rei da selva! Obrigado
tno2007 30/03
5

Top resposta de Jon Adams

Aqui está como implementar isso para o pessoal do PowerShell

$IncommingPath = "F:\WebContent"
$Acl = Get-Acl $IncommingPath
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule("IIS AppPool\DefaultAppPool","FullControl","ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $IncommingPath $Acl
Chris Mills
fonte
1

Apenas para aumentar a confusão, a caixa de diálogo Permissões Efetivas (Windows Explorer) não funciona para esses logons. Eu tenho um site "Umbo4" usando autenticação de passagem e observei as Permissões efetivas do usuário na pasta raiz do site. O teste Verificar nomes resolveu o nome "IIS AppPool \ Umbo4", mas as Permissões efetivas mostram que o usuário não tinha permissões na pasta (todas as caixas de seleção desmarcadas).

Excluí esse usuário da pasta explicitamente, usando a guia Segurança do Explorer. Isso resultou na falha do site com um erro HTTP 500.19, conforme o esperado. As Permissões efetivas, no entanto, pareciam exatamente como antes.

StuartN
fonte
1

Corrigi todos os meus problemas do asp.net simplesmente criando um novo usuário chamado IUSER com uma senha e adicionei o Serviço de Rede e Grupos de Usuários. Em seguida, crie todos os sites e aplicativos virtuais e defina a autenticação como IUSER com sua senha. Defina o acesso de arquivos de alto nível para incluir o IUSER e o BAM. Foi corrigido pelo menos 3-4 problemas, incluindo este.

Dave

David Granic
fonte