Configurar la identidad de procesos en ASP.NET

Actualización: noviembre 2007

Las páginas de ASP.NET se ejecutan dentro de un proceso o programa de Windows. Todos los programas de Windows se ejecutan con una identidad de seguridad concreta. De manera predeterminada, el proceso de ASP.NET se ejecuta con una identidad de Windows predefinida. De forma alternativa, configurando la aplicación para que utilice la suplantación, puede establecer ASP.NET para que se ejecute con una identidad diferente o con una identidad de Windows del usuario que realiza la solicitud.

Para mejorar la seguridad de las aplicaciones de ASP.NET, debe asegurarse de que el proceso de ASP.NET se ejecuta con una identidad que sólo tiene los permisos mínimos requeridos para ejecutar las aplicaciones. Esto reduce la vulnerabilidad de los recursos expuestos por ASP.NET, si surgiera un riesgo para la seguridad.

En un servidor Web de Windows 2003 (IIS 6.0), el proceso de ASP.NET se ejecuta en el grupo de aplicaciones para la aplicación Web. El grupo de aplicaciones define la identidad con la que se ejecuta ASP.NET (de manera predeterminada, la cuenta NETWORK SERVICES). En versiones anteriores de IIS, (en Windows 2000 y Windows XP Professional) ASP.NET se ejecuta en el proceso de trabajo de ASP.NET (aspnet_wp.exe). La identidad con la que se ejecuta ASP.NET está definida por la identidad del proceso de aspnet_wp.exe (de manera predeterminada, la cuenta ASPNET).

Para especificar la identidad para la aplicación de ASP.NET en un servidor Windows 2003, utilice el Administrador de Servicios de Internet Information Services (IIS) para configurar la identidad del grupo de aplicaciones para la aplicación de ASP.NET. La identidad del grupo de aplicaciones también debe agregarse al grupo IIS_WPG en un equipo en el que se ejecute Windows Server 2003.

Para ejecutar el proceso de trabajo de ASP.NET con su propia cuenta en Windows 2000 o Windows XP Professional, puede aplicar los siguientes dos atributos al elemento de configuración <processModel> del archivo Machine.config del equipo del servidor Web:

  • userName

    Nombre de la cuenta de Windows en la que se ejecutará el proceso.

  • password

    Contraseña de texto no codificado de la cuenta. Hay algunos riesgos de seguridad asociados al almacenamiento de contraseñas de texto no codificado en un archivo de configuración. Si conserva las credenciales en el archivo de configuración, debería cifrar el contenido del elemento de configuración <processModel> mediante una configuración protegida. Para obtener más información, vea Cifrar información de configuración mediante una configuración protegida. Para aplicaciones publicadas en Internet, debe utilizar medios alternativos de ejecutar la aplicación con una identidad específica, como la suplantación de la identidad anónima proporcionada por IIS. Para obtener más información, vea Utilizar la autenticación de IIS con la suplantación de ASP.NET.

En el siguiente ejemplo, se muestra cómo establecer estos atributos en el elemento <processModel> de un archivo de configuración para ejecutar el proceso de trabajo en una cuenta de usuario local.

<system.web>
  <processModel enable="true"
    userName="LOCALMACHINE\IUSR_ProcessUser"
    password="%Hco94*#QW12"/>
</system.web>

Además de establecer el atributo userName en el nombre de una identidad de Windows existente, puede establecerlo en los nombres predefinidos System o Machine. La cuenta System ejecuta el proceso de trabajo con la misma identidad que Servicios de Microsoft Internet Information Server (IIS) (normalmente SYSTEM).

Nota de seguridad:

No se recomienda ejecutar las aplicaciones en la cuenta System porque esta cuenta tiene privilegios elevados y puede representar un riesgo para la seguridad si se compromete el proceso de ASP.NET.

La cuenta Machine ejecuta el proceso de trabajo con una cuenta especial denominada ASPNET que tiene permisos limitados. Con cualquier identidad, el proceso no tiene que proporcionar credenciales al sistema operativo.

Nota:

Para que las aplicaciones ASP.NET funcionen correctamente, es preciso asegurar que la identidad de proceso tenga acceso a las listas de control de acceso (ACL) que figuran en Listas de control de acceso (ACL) necesarias para ASP.NET. Además, en los servidores de IIS 5.0, a la identidad de proceso se le debe conceder acceso de lectura a la metabase de IIS, lo cual se puede hacer mediante la herramienta Aspnet_regiis.exe y especificando la opción.

Vea también

Otros recursos

Seguridad de aplicaciones Web ASP.NET