Identidades del grupo de aplicaciones

de Thomas Deml

Tanto si ejecuta su sitio en su propio servidor como en la nube, la seguridad debe estar en la parte superior de la lista de prioridades. Si es así, estará encantado de escuchar que IIS tiene una característica de seguridad denominada Identidad del grupo de aplicaciones. Esta característica se introdujo en el Service Pack 2 (SP2) de Windows Server 2008 y Windows Vista. Una identidad del grupo de aplicaciones permite ejecutar un grupo de aplicaciones en una cuenta única sin tener que crear ni administrar dominios o cuentas locales. El nombre de la cuenta del grupo de aplicaciones corresponde al nombre del grupo de aplicaciones. En la imagen siguiente se muestra un proceso de trabajo de IIS (W3wp.exe) que se ejecuta como la identidad DefaultAppPool.

Screenshot of the Task Manager screen with a focus on the W 3 W P dot E X E I I S worker process.

Cuentas de identidad del grupo de aplicaciones

Los procesos de trabajo de IIS 6.0 e IIS 7 se ejecutan como servicio de red de forma predeterminada. El servicio de red es una identidad integrada de Windows. No requiere una contraseña y solo tiene privilegios de usuario; es decir, tiene relativamente pocos privilegios. La ejecución como una cuenta con pocos privilegios es una buena práctica de seguridad porque un usuario malintencionado no puede usar un error de software para controlar todo el sistema.

Sin embargo, con el tiempo surgió un problema, ya que cada vez más servicios del sistema Windows empezaron a ejecutarse como servicio de red. Esto se debe a que los servicios que se ejecutan como servicio de red pueden alterar otros servicios que se ejecutan bajo la misma identidad. Dado que los procesos de trabajo de IIS ejecutan código de terceros de forma predeterminada (ASP clásico, ASP.NET, código PHP), era el momento de aislar dichos procesos de otros servicios del sistema de Windows y ejecutar procesos de trabajo de IIS con identidades únicas. El sistema operativo Windows proporciona una característica denominada "cuentas virtuales" que permite a IIS crear una identidad única para cada uno de sus grupos de aplicaciones. Para obtener más información sobre cuentas virtuales, consulte la Guía paso a paso de las cuentas de servicio.

Configuración de identidades de grupo de aplicaciones de IIS

Si ejecuta IIS 7.5 en Windows Server 2008 R2 o una versión posterior de IIS, no tiene que hacer nada para usar la nueva identidad. Para cada grupo de aplicaciones que cree, la propiedad de identidad del nuevo grupo de aplicaciones se establece en ApplicationPoolIdentity de forma predeterminada. El proceso de administración de IIS (WAS) crea una cuenta virtual con el nombre del nuevo grupo de aplicaciones y ejecuta los procesos de trabajo del grupo de aplicaciones en esta cuenta de forma predeterminada.

Para usar esta cuenta virtual al ejecutar IIS 7.0 en Windows Server 2008, debe cambiar la propiedad de identidad de un grupo de aplicaciones que cree en ApplicationPoolIdentity. Este es el procedimiento:

  1. Abra la Consola de administración de IIS (INETMGR.MSC).

  2. Abra el nodo Grupos de aplicaciones debajo del nodo de la máquina. Seleccione el grupo de aplicaciones que desea cambiar para que se ejecute con una identidad de grupo de aplicaciones generada automáticamente.

  3. Haga clic con el botón derecho en el grupo de aplicaciones y seleccione Configuración avanzada.

    Screenshot of the Advanced Settings dialog with the Identity setting being highlighted.

  4. Seleccione el elemento de lista Identidad y haga clic en los puntos suspensivos (el botón con los tres puntos).

  5. Aparece el cuadro de diálogo siguiente:

    Screenshot of the Application Pool Identity dialog with the Application Pool Identity option being highlighted.

  6. Seleccione el botón Cuenta integrada y, a continuación, seleccione el tipo de identidad ApplicationPoolIdentity en el cuadro combinado.

Para realizar el mismo paso mediante la línea de comandos, puede llamar a la herramienta de línea de comandos appcmd de la siguiente manera:

%windir%\system32\inetsrv\appcmd.exe set AppPool <your AppPool> -processModel.identityType:ApplicationPoolIdentity

Protección de recursos

Cada vez que se crea un nuevo grupo de aplicaciones, el proceso de administración de IIS crea un identificador de seguridad (SID) que representa el nombre del propio grupo de aplicaciones. Por ejemplo, si crea un grupo de aplicaciones con el nombre "MyNewAppPool", se crea un identificador de seguridad con el nombre "MyNewAppPool" en el sistema de seguridad de Windows. A partir de este punto, los recursos se pueden proteger mediante esta identidad. Sin embargo, la identidad no es una cuenta de usuario real; no se mostrará como usuario en la Consola de administración de usuarios de Windows.

Para probarlo, seleccione un archivo en el Explorador de Windows y agregue la identidad "DefaultAppPool" a la lista de control de acceso (ACL) del archivo.

  1. Abrir el Explorador de Windows

  2. Seleccione un archivo o directorio.

  3. Haga clic con el botón derecho en el archivo y seleccione Propiedades.

  4. Seleccione la pestaña Seguridad

  5. Haga clic en el botón Editar y, a continuación, en el botón Agregar.

  6. Haga clic en el botón Ubicaciones y asegúrese de seleccionar el equipo.

    Screenshot of the Select Users or Groups dialog.

  7. Escriba IIS AppPool\DefaultAppPool en el cuadro de texto Escribir los nombres de objeto para seleccionar:.

  8. Haga clic en el botón Comprobar nombres y luego en Aceptar.

Al hacerlo, el archivo o directorio seleccionado ahora también permitirá el acceso a la identidad DefaultAppPool.

Puede hacerlo a través de la línea de comandos mediante la herramienta ICACLS. En el ejemplo siguiente se proporciona acceso completo a la identidad DefaultAppPool.

ICACLS test.txt /grant "IIS AppPool\DefaultAppPool:F"

Para más información, vea ICACLS.

En Windows 7 y Windows Server 2008 R2 y versiones posteriores de Windows, el valor predeterminado es ejecutar grupos de aplicaciones como identidad del grupo de aplicaciones. Para que esto suceda, se introdujo un nuevo tipo de identidad con el nombre "AppPoolIdentity". Si se selecciona el tipo de identidad "AppPoolIdentity" (el valor predeterminado en Windows 7 y Windows Server 2008 R2 y versiones posteriores), IIS ejecutará procesos de trabajo como la identidad del grupo de aplicaciones. Con cada otro tipo de identidad, el identificador de seguridad solo se insertará en el token de acceso del proceso. Si se inserta el identificador, el contenido puede incluirse aún en la ACL para ApplicationPoolIdentity, pero es probable que el propietario del token no sea único. Para obtener más información sobre este concepto, consulte la entrada de blog Novedades de IIS 7: aislamiento de los grupos de aplicaciones.

Acceso a la red

El uso de la cuenta de servicio de red en un entorno de dominio tiene una gran ventaja. El proceso de trabajo que se ejecuta como servicio de red accede a la red como la cuenta de la máquina. Las cuentas de equipo se generan cuando una máquina está unida a un dominio. Tienen este aspecto:

<domainname>\<machinename>$,

Por ejemplo:

mydomain\machine1$

Lo bueno de esto es que los recursos de red, como los recursos compartidos de archivos o las bases de datos de SQL Server, pueden incluirse en la ACL para permitir el acceso a esta cuenta de máquina.

¿Qué ocurre con las identidades de los grupos de aplicaciones?

La buena noticia es que las identidades del grupo de aplicaciones también usan la cuenta de máquina para acceder a los recursos de red. No es preciso realizar cambios.

Problemas de compatibilidad con las identidades del grupo de aplicaciones

Documentación de instrucciones

El mayor problema de compatibilidad con las identidades de los grupos de aplicaciones probablemente sean los documentos de orientación anteriores que recomiendan explícitamente que incluya en ACL los recursos para el servicio de red; es decir, la identidad predeterminada de DefaultAppPool en IIS 6.0 e IIS 7.0. Los clientes tendrán que cambiar sus scripts a ACL para "IIS AppPool\DefaultAppPool" (u otro nombre de grupo de aplicaciones) al ejecutarse en IIS 7.5 o posterior (consulte el ejemplo anterior para saber cómo hacerlo).

Perfil de usuario

IIS no carga el perfil de usuario de Windows, pero ciertas aplicaciones pueden aprovecharlo de todos modos para almacenar datos temporales. SQL Express es un ejemplo de una aplicación que lo hace. Sin embargo, se debe crear un perfil de usuario para almacenar datos temporales en el directorio del perfil o en el subárbol del Registro. El sistema creó el perfil de usuario de la cuenta de servicio de red y siempre estaba disponible. Sin embargo, al cambiar a identidades del grupo de aplicaciones únicas, el sistema no crea ningún perfil de usuario. Solo los grupos de aplicaciones estándar (DefaultAppPool y AppPool de .NET clásico) tienen perfiles de usuario en el disco. No se crea ningún perfil de usuario si el administrador crea un nuevo grupo de aplicaciones.

Sin embargo, si lo desea, puede configurar grupos de aplicaciones de IIS para cargar el perfil de usuario estableciendo el atributo LoadUserProfile en "true".

Resumen

Las identidades del grupo de aplicaciones son una nueva y eficaz característica de aislamiento introducida en Windows Server 2008, Windows Vista y versiones posteriores de Windows. Hará que la ejecución de aplicaciones IIS sea aún más segura y confiable.