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 aC:\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.
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:
Vea que el permiso especial es heredado de c:\
:
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:
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:
Como podemos ver IIS APPPOOL\900300
es un miembro del grupo Users
.
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
Haga clic derecho en la carpeta.
-
Haga clic en Propiedades
-
Haga clic en la pestaña Seguridad. Verás algo como esto:
- Haga clic en "Editar"..."botón en la pantalla superior. Verás algo como esto:
- Haga clic en " Agregar..."botón en la pantalla superior. Verás algo como esto:
- 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.
- 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.
Marque / desmarque cualquier acceso que necesite conceder a la cuenta
Haga clic en Aplicar botón y luego OK.
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.
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