Descripción general de permisos IIS7 - ApplicationPoolIdentity

356

Recientemente nos hemos actualizado a IIS7 como un servidor web central y necesito una visión general en términos de permisos. Anteriormente, cuando necesitaba escribir en el sistema de archivos, le habría dado al usuario de AppPool (Servicio de red) acceso al directorio o archivo.

En IIS7 veo, por defecto, el usuario de AppPool está configurado en ApplicationPoolIdentity. Entonces, cuando reviso el administrador de tareas, veo que una cuenta de usuario llamada 'WebSite.com' está ejecutando el proceso IIS ('Website.com' es el nombre del sitio web en IIS)

Sin embargo, esta cuenta de usuario no existe si trato de usarla para otorgar permisos. Entonces, ¿cómo determino a qué usuario otorgar los permisos también?

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

Vea a continuación el problema en la captura de pantalla. Nuestro sitio web (www.silverchip.co.uk) funciona con el nombre de usuario SilverChip.co.uk. Sin embargo, cuando agrego permisos, ¡este usuario no existe!

ingrese la descripción de la imagen aquí

================================= Ver imagen de AppPool

ingrese la descripción de la imagen aquí

LiamB
fuente
2
En realidad, la información de Microsoft sobre este asunto es muy buena Identidades del grupo de aplicaciones
DanielV

Respuestas:

680

ApplicationPoolIdentity es en realidad la mejor práctica para usar en IIS7 +. Es una cuenta sin privilegios creada dinámicamente. Para agregar seguridad del sistema de archivos para un grupo de aplicaciones en particular, consulte "Identidades del grupo de aplicaciones" de IIS.net . La versión rápida:

Si el grupo de aplicaciones se llama "DefaultAppPool" (solo reemplace este texto a continuación si se llama de manera diferente)

  1. Abra el Explorador de Windows
  2. Seleccione un archivo o directorio.
  3. Haga clic derecho en el archivo y seleccione "Propiedades"
  4. Seleccione la pestaña "Seguridad"
  5. Haga clic en el botón "Editar" y luego en "Agregar"
  6. Haga clic en el botón "Ubicaciones" y asegúrese de seleccionar la máquina local . ( No es el dominio de Windows si el servidor pertenece a uno).
  7. Ingrese " IIS AppPool \ DefaultAppPool " en el cuadro de texto "Ingrese los nombres de objeto para seleccionar:". (No olvide cambiar "DefaultAppPool" aquí a lo que haya denominado su grupo de aplicaciones).
  8. Haga clic en el botón "Comprobar nombres" y haga clic en "Aceptar".
Jon Adams
fuente
11
@Pino: No, no es el nombre del sitio web. Use el nombre del grupo de aplicaciones . Cada sitio web está asignado a un grupo de aplicaciones. Puede saber cuál en el cuadro de diálogo Configuración básica de las propiedades del sitio web (en IIS7).
Jon Adams
2
@Pino: en ese caso, el rol de seguridad que debe usar es IIS AppPool\silverchip.co.uk. Sin embargo, no he probado puntos en los nombres de seguridad; es posible que desee cambiarlo a algo sin puntuación.
Jon Adams
77
Te he seguido las instrucciones como has dicho. Pero hay un truco. Usted tiene que establecer la propiedad enable load user profileque trueen la configuración del grupo de aplicaciones. Y solo después de esta configuración pude ejecutar la aplicación. Por lo tanto, actualice sus instrucciones y agregue el noveno punto.
Johnny_D
19
Recuerde comprobar que la configuración del servidor para la autenticación anónima también utiliza la identidad del grupo de aplicaciones. Esta solución funcionó para mí tan pronto como cambié de IUSR.
bblue
11
¡Presta atención aquí! No puede buscar el usuario utilizando la interfaz de usuario, pero debe escribirlo. Comprobar el nombre es lo único que puede hacer.
Remco
88

Recuerde usar el nombre local del servidor, no el nombre de dominio, al resolver el nombre

IIS AppPool\DefaultAppPool

(solo un recordatorio porque esto me hizo tropezar un poco):ingrese la descripción de la imagen aquí

James Toomey
fuente
Sí, lo olvido todo el tiempo, ¡gracias por el recordatorio James Toomey!
tjans
30

Dar acceso al usuario de IIS AppPool \ YourAppPoolName puede no ser suficiente con las configuraciones predeterminadas de IIS.

En mi caso, aún tenía el error HTTP Error 401.3 - No autorizado después de agregar el usuario de AppPool y se solucionó solo después de agregar permisos al usuario de IUSR .

Esto es necesario porque, de forma predeterminada, el acceso anónimo se realiza mediante el IUSR . Puede configurar otro usuario específico, el grupo de aplicaciones o continuar usando el IUSR, pero no olvide establecer los permisos adecuados.

pestaña de autenticación

Créditos a esta respuesta: Error HTTP 401.3 - No autorizado

Zanon
fuente
3
¡Esto es crucial! ¡Debe cambiar la "Autenticación anónima" a "Identidad del grupo de aplicaciones" por seguridad! Estoy seguro de que hay una buena razón por la que está configurada para IUSR, pero no puedo pensar en una sola. ¡¡¡Gracias!!!
Dan B
Esto me ha solucionado el problema. Puede ser porque mi versión de IIS es 8 en Windows Server 2012 R2
myroslav
2
Este es un paso importante que debe agregarse a la respuesta aceptada. También la forma más sencilla es cambiar la caja de radio a la identidad del grupo de aplicaciones
Fuente
1
Este fue mi problema! ¡¡Gracias!!
Sloan Reynolds
28

En Windows Server 2008 (r2) no puede asignar una identidad de grupo de aplicaciones a una carpeta a través de Propiedades-> Seguridad. Sin embargo, puede hacerlo a través de un símbolo del sistema de administrador usando lo siguiente:

icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)
Chris
fuente
1
¿Puedes explicar esto un poco? ¿Qué significa (R)? ¿Realmente ingresas corchetes angulares en este comando?
Kate Gregory
3
Hola Kate, estaba usando <> para denotar "el nombre de tu grupo de aplicaciones aquí", pero lo dejé en un nombre legítimo de grupo de aplicaciones. En el Administrador IIS -> Grupos de aplicaciones, deberá coincidir con el nombre, espacios incluidos. El último que hice fue "IIS AppPool \ ClientName_CompanyName - Intranet". : (R) en este caso está otorgando acceso de lectura. También puede usar F (completo), M (modificar), RX (leer + ejecutar) y W (solo escribir).
Chris
99
En realidad, puede asignar a través de la pestaña Valores en Propiedades en Windows Server 2008 R2, por lo que no debería necesitar esta solución. Asegúrese de haber seleccionado los principios de seguridad integrados en los tipos de objetos y la ubicación.
rism
Esta respuesta funciona para mí. La respuesta seleccionada no funciona para mí.
Tuyen Nguyen
3
vea también la respuesta original de la respuesta de selección de [link] serverfault.com/questions/81165/… Para Windows Server 2008 (o edición Datacenter) simplemente tiene que usar la línea de comando para obtener la cuenta del grupo de aplicaciones en la seguridad diálogo. Una vez que esté allí, puede administrarlo, cambiar los niveles de permisos, para subdirectorios, etc. También considere: "icacls" c: \ yourdirectory "/ t / grant" IIS AppPool \ DefaultAppPool ":( OI) (CI) (R)" OI de herencia de objetos, herencia de contenedor de CI.
secretwep
7

Parte A: Configuración de su grupo de aplicaciones

Supongamos que el grupo de aplicaciones se llama 'MyPool' Vaya a 'Configuración avanzada' del grupo de aplicaciones desde el Administrador de IIS

  1. Desplácese hacia abajo hasta 'Identidad'. Al intentar editar el valor, aparecerá un cuadro de diálogo. Seleccione 'Cuenta integrada' y debajo de ella, seleccione 'ApplicationPoolIdentity'.

  2. Algunas líneas debajo de 'Identidad', debería encontrar 'Cargar perfil de usuario'. Este valor debe establecerse en 'Verdadero'.

Parte B: Configurando su sitio web

  1. Nombre del sitio web: Nombre del sitio (solo un ejemplo)
  2. Ruta física: C: \ Lo que sea (solo un ejemplo)
  3. Conectar como ...: usuario de la aplicación (autenticación de paso) (la configuración anterior se puede encontrar en 'Configuración básica' del sitio en el Administrador de IIS)
  4. Después de configurar los ajustes básicos, busque la configuración 'Autenticación' en 'IIS' en la consola principal del sitio. Abrelo. Debería ver una opción para 'Autenticación anónima'. Asegúrate de que esté habilitado. Luego haga clic derecho y 'Editar ...'. Seleccione 'Identidad del grupo de aplicaciones'.

Parte C: Configurando tu carpeta

La carpeta en cuestión es C: \ Lo que sea

  1. Vaya a Propiedades - Compartir - Uso compartido avanzado - Permisos, y marque 'Compartir esta carpeta'
  2. En el mismo cuadro de diálogo, encontrará un botón 'Permisos'. Pinchalo.
  3. Se abrirá un nuevo cuadro de diálogo. Haga clic en 'Agregar'.
  4. Se abrirá un nuevo cuadro de diálogo 'Seleccionar usuarios o grupos'. En "Desde esta ubicación", asegúrese de que el nombre sea el mismo que el de su computadora host local. Luego, en 'Ingrese los nombres de los objetos', escriba 'IIS AppPool \ MyPool' y haga clic en 'Verificar nombres' y luego en 'Aceptar'
  5. Otorgue permisos completos para compartir para el usuario 'MyPool'. Aplicarlo y cerrar las propiedades de la carpeta
  6. Abrir las propiedades de la carpeta nuevamente. Esta vez, vaya a Seguridad - Avanzado - Permiso, y haga clic en Agregar. Habrá una opción 'Seleccionar un director' en la parte superior, o alguna otra opción para elegir un usuario. Pinchalo.
  7. El cuadro de diálogo 'Seleccionar usuarios o grupos' se abrirá nuevamente. Repita el paso 4.
  8. Otorgue todos los permisos que necesite al usuario 'MyPool'.
  9. Marque 'Reemplazar todos los permisos de objetos secundarios ... "y Aplicar y cerrar.

Ahora debería poder usar el navegador del sitio web

Dibyodyuti Mondal
fuente
Eres el rey de la jungla! Gracias
tno2007
5

Respuesta principal de Jon Adams

Aquí se explica cómo implementar esto para la gente de 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
fuente
1

Solo para agregar a la confusión, el cuadro de diálogo Permisos efectivos (Windows Explorer) no funciona para estos inicios de sesión. Tengo un sitio "Umbo4" que usa autenticación de paso y miré los Permisos efectivos del usuario en la carpeta raíz del sitio. La prueba Comprobar nombres resolvió el nombre "IIS AppPool \ Umbo4", pero los Permisos efectivos muestran que el usuario no tenía ningún permiso en la carpeta (todas las casillas de verificación no están marcadas).

Luego excluí a este usuario de la carpeta explícitamente, usando la pestaña Seguridad de Explorer. Esto dio como resultado que el sitio fallara con un error HTTP 500.19, como se esperaba. Sin embargo, los permisos efectivos se veían exactamente como antes.

StuartN
fuente
1

Solucioné todos mis problemas de asp.net simplemente creando un nuevo usuario llamado IUSER con una contraseña y lo agregué al Servicio de red y Grupos de usuarios. A continuación, cree todos sus sitios y aplicaciones virtuales, configure la autenticación en IUSER con su contraseña ... configure el acceso a archivos de alto nivel para incluir IUSER y BAM, solucionó al menos 3-4 problemas, incluido este.

Dave

David Granic
fuente