Permisos de acceso de escritura del sistema de archivos y AppPoolIdentity de IIS


Aquí hay un problema con IIS 7.5 y ASP.NET que he estado investigando y no he llegado a ninguna parte con. Cualquier ayuda sería muy apreciada.

Mi pregunta es: usando ASP.NET en IIS 7.5, ¿cómo permite IIS y/o el sistema operativo que la aplicación web escriba en una carpeta como C:\dump cuando se ejecuta bajo total confianza? ¿Cómo es que no tengo que agregar explícitamente acceso de escritura para el usuario del grupo de aplicaciones (en este caso ApplicationPoolIdentity)?

Esto es lo que sé:{[12]]}

  • En IIS 7.5, la identidad predeterminada para un grupo de aplicaciones es ApplicationPoolIdentity.
  • ApplicationPoolIdentity representa una cuenta de usuario de Windows llamada "IIS APPPOOL\AppPoolName", que se crea cuando se crea el Grupo de aplicaciones, donde AppPoolName es el nombre del Grupo de aplicaciones.
  • El usuario "IIS APPPOOL\AppPoolName" es por defecto un miembro del grupo IIS_IUSRS.
  • Si se está ejecutando bajo Total Confianza, su aplicación web puede escribir en muchas áreas del sistema de archivos (excluyendo carpetas como C:\Users, C:\Windows, sucesivamente). Por ejemplo, su aplicación tendrá acceso para escribir en algunas carpetas, como, C:\dump.
  • De forma predeterminada, el grupo IIS_IUSRS no tiene acceso de lectura o escritura a C:\dump (al menos no el acceso que es visible a través de la pestaña "Seguridad" en el Explorador de Windows).
  • Si niega el acceso de escritura a IIS_IUSRS, obtendrá una SecurityException al intentar escribir en la carpeta (como se esperaba).

Así que, teniendo todo eso en cuenta, ¿cómo se concede el acceso de escritura al " IIS APPPOOL \ AppPoolName " usuario? El w3wp.el proceso exe se ejecuta como este usuario, así que ¿qué permite a este usuario escribir en una carpeta a la que no parece tener acceso explícito?

Tenga en cuenta que entiendo que esto se hizo probablemente por conveniencia, ya que sería un dolor para conceder a un usuario el acceso a cada carpeta que necesita para escribir en si se está ejecutando bajo plena Confianza. Si desea limitar este acceso, siempre puede ejecutar la aplicación bajo Medium Trust. Estoy interesado en encontrar sobre la forma en que el sistema operativo y / o IIS permite que estas escrituras se lleven a cabo, a pesar de que no parece haber un acceso explícito al sistema de archivos concedido.

Author: rsbarro, 2011-03-25

3 answers

Al ApplicationPoolIdentity se le asigna la pertenencia al grupo Users así como al grupo IIS_IUSRS. A primera vista, esto puede parecer algo preocupante, sin embargo, el grupo Users tiene derechos NTFS algo limitados.

Por ejemplo, si intenta crear una carpeta en la carpeta C:\Windows, encontrará que no puede. ApplicationPoolIdentity todavía necesita poder leer archivos de las carpetas del sistema de Windows (de lo contrario, de qué otra manera el proceso de trabajo podría cargar dinámicamente DLL esenciales).

Con tenga en cuenta sus observaciones sobre ser capaz de escribir en su carpeta c:\dump. Si echas un vistazo a los permisos en la Configuración de Seguridad Avanzada, verás lo siguiente:

introduzca la descripción de la imagen aquí

Vea que el permiso especial es heredado de c:\:

introduzca la descripción de la imagen aquí

Esa es la razón por la que el ApplicationPoolIdentity de tu sitio puede leer y escribir en esa carpeta. Ese derecho se hereda de la unidad c:\.

En un entorno compartido donde posiblemente tenga varios cientos de sitios, cada uno con su propio grupo de aplicaciones e Identidad de grupo de aplicaciones, almacenaría las carpetas del sitio en una carpeta o volumen al que se haya eliminado el grupo Users y los permisos establecidos de manera que solo los administradores y la cuenta del SISTEMA tengan acceso (con herencia).

Luego asignaría individualmente los permisos necesarios que cada IIS AppPool\[name] requiere en su carpeta raíz del sitio.

También debe asegurarse de que cualquier carpeta que cree donde almacene los archivos o datos potencialmente sensibles han eliminado el grupo Users. También debe asegurarse de que las aplicaciones que instale no almacenen datos confidenciales en sus carpetas c:\program files\[app name] y que utilicen las carpetas de perfil de usuario en su lugar.

Así que sí, a primera vista parece que el ApplicationPoolIdentity tiene más derechos de los que debería, pero en realidad no tiene más derechos de los que dicta su pertenencia al grupo.

La pertenencia a un grupo ApplicationPoolIdentity se puede examinar utilizando el Proceso SysInternals Herramienta Explorador . Encuentre el proceso de trabajo que se está ejecutando con la Identidad del Grupo de aplicaciones que le interesa (tendrá que agregar la columna User Name a la lista de columnas a mostrar:

introduzca la descripción de la imagen aquí

Por ejemplo, tengo un pool aquí llamado 900300 que tiene una Identidad de Application Pool de IIS APPPOOL\900300. Haciendo clic derecho en propiedades para el proceso y seleccionando la pestaña de seguridad vemos:

introduzca la descripción de la imagen aquí

Como podemos ver IIS APPPOOL\900300 es un miembro del grupo Users.

 382
Author: Kev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-26 01:40:26
  1. Haga clic derecho en la carpeta.

  2. Haga clic en Propiedades

  3. Haga clic en la pestaña Seguridad. Verás algo como esto:

introduzca la descripción de la imagen aquí

  1. Haga clic en "Editar"..."botón en la pantalla superior. Verás algo como esto:

introduzca la descripción de la imagen aquí

  1. Haga clic en " Agregar..."botón en la pantalla superior. Verás algo como esto:

introduzca la descripción de la imagen aquí

  1. Haga clic en "Ubicaciones..."botón en por encima de la pantalla. Verás algo como esto. Ahora, vaya a la parte superior de esta estructura de árbol y seleccione el nombre de su computadora, luego haga clic en Aceptar.

introduzca la descripción de la imagen aquí

  1. Ahora escriba "iis apppool\your_apppool_name" y haga clic en el botón "Verificar nombres". Si el apppool existe, verá su nombre de apppool en el cuadro de texto con subrayado en él. Hacer clic OK botón.

introduzca la descripción de la imagen aquí

  1. Marque / desmarque cualquier acceso que necesite conceder a la cuenta

  2. Haga clic en Aplicar botón y luego OK.

 16
Author: Krishna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-02 17:05:25

Cada grupo de aplicaciones en IIs crea su propia carpeta de usuario segura con permiso de lectura/escritura COMPLETO de forma predeterminada en c:\users. Abra la carpeta Usuarios y vea qué carpetas del grupo de aplicaciones hay allí, haga clic con el botón secundario y compruebe sus derechos para la cuenta virtual del grupo de aplicaciones asignada. Debería ver su cuenta de grupo de aplicaciones agregada ya con acceso de lectura/escritura asignado a su raíz y subcarpetas.

Por lo que el tipo de acceso al almacenamiento de archivos se realiza automáticamente y debe ser capaz de escribir lo que quieras en las carpetas de cuentas de usuario de los grupos de aplicaciones sin cambiar nada. Es por eso que se crearon cuentas de usuario virtuales para cada grupo de aplicaciones.

 0
Author: Stokely,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-13 16:03:01