Permisos para conectarse a una base de datos de Access remota desde ASP.NET

En este artículo se presentan los permisos para conectarse a una base de datos de Access remota.

              Versión original del producto: ASP.NET
Número de KB original: 307901

Resumen

En este artículo se enumeran las configuraciones de seguridad mínimas necesarias para conectarse a una base de datos remota de Microsoft Access desde ASP.NET, entre las que se incluyen:

  • Configuración del sistema de archivos de Windows NT (NTFS)
  • configuración de Microsoft Internet Information Services (IIS)
  • Configuración de directiva de seguridad local
  • configuración del archivo de configuración de ASP.NET (Web.config)

En este artículo no se incluye cómo configurar conexione de base de datos.

Más información

Cuando los usuarios van a un sitio web de ASP.NET, solicitan que se ejecute código en el servidor. Todos los procesos se ejecutan dentro del contexto de seguridad de una cuenta específica. De forma predeterminada, IIS usa la cuenta del sistema. La cuenta del sistema tiene acceso total al equipo servidor IIS, pero no tiene permiso para acceder a carpetas compartidas en otros equipos (que a veces se denominan recursos NTFS). Por lo tanto, debe configurar el equipo IIS para que use una cuenta distinta de la cuenta del sistema. En la sección Configurar el servidor IIS se describen varias maneras de seleccionar una cuenta alternativa.

Una vez que IIS esté establecido para ejecutarse en otra cuenta, debe conceder permiso a todos los archivos y carpetas necesarios para usar la base de datos de Access remota, incluidos:

  • Carpeta temporal en el servidor IIS.
  • Compartir en el equipo remoto.
  • Permisos del sistema de archivos NTFS para el archivo de base de datos y su carpeta.
  • Acceso al equipo remoto desde la red.
  • Permiso para iniciar sesión en el equipo remoto.

En la sección Configurar el servidor de acceso se describe cómo establecer estos permisos en la cuenta.

Configuración del servidor IIS

En esta sección se describe cómo configurar el servidor IIS.

Uso del archivo Web.config para habilitar la suplantación

Para conectarse a una base de datos de Access remota, ASP.NET debe pasar un token de seguridad para el usuario que suplanta al servidor remoto. Si no habilita la suplantación en el archivo Web.config , ASP.NET usa la cuenta del sistema de forma predeterminada. Sin embargo, la cuenta del sistema no se puede autenticar en toda la red. Para usar una cuenta diferente, agregue una <identity impersonate="true" /> etiqueta en el archivo Web.config para una aplicación ASP.NET determinada. Por ejemplo:

<configuration>
  <system.web>
     ...
     <identity impersonate="true" />
     ...
  </system.web>
</configuration>

En esta configuración, ASP.NET suplanta al usuario autenticado de IIS.

Uso de un método de autenticación para seleccionar una identidad

Use uno de los métodos de autenticación siguientes para seleccionar una identidad:

  • Autenticación anónima
    Puede configurar qué cuenta usar en Internet Services Manager. De forma predeterminada, se establece en la cuenta de invitado de Internet o IUSR_ComputerName. Cualquiera que sea la cuenta que use, si usa una cuenta local (en lugar de una cuenta de dominio), debe seguir los pasos de la sección Replicar las cuentas de usuario local del equipo IIS .

  • Autenticación básica
    Este método de autenticación requiere que el usuario final escriba un nombre de usuario y una contraseña definidos en el equipo IIS o en un dominio en el que confía el equipo IIS. Dado que esto permite varios identificadores de usuario, debe agregar todos esos identificadores a un grupo. Siempre que este artículo indique que debe conceder permisos al usuario suplantado, conceda esos permisos a este grupo en su lugar.

Si cualquiera de estas cuentas es una cuenta local en el equipo IIS, debe replicar cada cuenta local en el equipo de Acceso remoto. Para ello, siga los pasos de la sección Replicar las cuentas de usuario local del equipo IIS .

  • Autenticación de Windows integrada
    Este método de autenticación solo funciona si la red está configurada para usar Kerberos la autenticación y si los equipos y las cuentas están configurados como de confianza para la delegación. De lo contrario, no puede usar la autenticación de Windows integrada para acceder a los datos de un recurso NTFS remoto. Esto se debe a que la autenticación de Windows integrada solo permite acceder al servidor IIS y no a recursos NTFS adicionales a los que el servidor IIS accede de forma remota.

  • configuración deWeb.config
    Use el archivo Web.config para configurar ASP.NET para suplantar una cuenta de dominio específica que tenga los permisos de acceso necesarios en el equipo remoto. De forma predeterminada, IIS se establece para evitar que otros usuarios que ven el sitio web vean el contenido del archivo Web.config . Sin embargo, este método requiere que almacene el nombre de usuario y la contraseña en texto no cifrado en el servidor.

<configuration>
  <system.web>
     ...
     <identity impersonate="true" userName="<supplied username>" password="<supplied password>" />
     ...
  </system.web>
</configuration>
  • Invalidación de la autenticación En las instrucciones anteriores se usan los <identity impersonate="true" /> métodos de autenticación y etiqueta para que el código ASP se ejecute como una cuenta de usuario en lugar de como la cuenta del sistema. Independientemente de la configuración de suplantación o autenticación, hay otras formas menos comunes de ejecutarse como una cuenta de usuario. En la lista siguiente se describen dos de estos métodos alternativos, aunque los detalles de estos métodos están fuera del ámbito de este artículo.

    • Proceso independiente Puede colocar todas las funciones de acceso a datos en una biblioteca de vínculos dinámicos (DLL) ActiveX y colocar ese archivo DLL en Servicios de componentes. A continuación, debe configurar los valores de Servicios de componentes para ese componente para que se ejecute como su propio proceso (biblioteca de servidores). En la pestaña Identidad de Servicios de componentes, especifique la cuenta de usuario que desea usar.

    • Interfaces de programación de aplicaciones de suplantación Puede crear un archivo DLL activex que use interfaces de programación de aplicaciones (API) para cambiar de la cuenta de usuario que está actualmente en uso a cualquier otra cuenta. A continuación, puede usar la base de datos de Access mientras se ejecuta como este otro usuario.

Configuración del acceso a la carpeta temporal

El motor de base de datos de Microsoft Jet escribe archivos temporales en la carpeta Temp del equipo local (que es el servidor IIS en este caso). Debe establecer los permisos adecuados para esta carpeta Temp.

  • Permisos NTFS Esta configuración requiere que la identidad de usuario (que viene determinada por las instrucciones de suplantación anteriores) tenga permisos de control total NTFS en la carpeta Temp.

  • Variables de entorno TEMP y TMP Es posible que tenga que definir las variables de entorno TEMP y TMP para el sistema. Si las variables TEMP y TMP no están configuradas en el servidor IIS, el motor jet intenta escribir estos archivos en la Windows\System32 carpeta. Dado que esto puede no ser aceptable para la mayoría de los sitios web, es habitual configurar variables TEMP y TMP.

Estas variables a menudo ya están configuradas para usuarios interactivos en el equipo. Sin embargo, dado que los procesos que se inician desde IIS no tienen acceso a estas variables, es posible que tenga que configurar variables TEMP y TMP para el sistema. Para configurar las variables TEMP y TMP para el sistema, siga estos pasos en Microsoft Windows 2000:

  1. En el equipo IIS, haga clic con el botón derecho en Mi equipo y, a continuación, haga clic en Propiedades.

  2. En la pestaña Opciones avanzadas , haga clic en Variables de entorno.

  3. En Variables del sistema, busque la variable TEMP. Si esta variable no existe, siga estos pasos para agregarla:

    1. En el cuadro de diálogo Variables de entorno , haga clic en Nuevo.
    2. En el cuadro de diálogo Nueva variable de sistema , en el cuadro de texto Nombre de variable , escriba TEMP.
    3. En el cuadro de texto Valor variable , escriba la ubicación de la carpeta Temp en el equipo y, a continuación, haga clic en Aceptar.
  4. Repita los pasos del 3a al 3c para la variable TMP.

Configuración del servidor de Access

En esta sección se describe cómo configurar el servidor de Microsoft Access.

Configuración de permisos NTFS

Sin embargo, decide suplantar cuentas dentro de ASP.NET, si el sistema de archivos del equipo remoto es NTFS, debe establecer los permisos en el equipo remoto correctamente. Por ejemplo, debe establecer los permisos siguientes en el archivo de base de datos:

  • Lectura
  • Escritura
  • Ejecutar
  • Cambiar

Además, debe establecer los siguientes permisos en la carpeta en la que reside el archivo:

  • Lectura
  • Escritura
  • Ejecutar
  • Eliminar
  • Cambiar

Si hay varias cuentas de usuario posibles, como en autenticación básica o implícita, cree un grupo, agregue las cuentas de usuario a este grupo y, a continuación, conceda privilegios al grupo.

Configuración de permisos de recurso compartido

Al igual que los permisos del sistema de archivos NTFS, también debe establecer permisos de uso compartido para permitir el acceso para el mismo usuario, usuarios o grupo.

Es posible que tenga la tentación de usar los recursos compartidos administrativos, que Windows crea para cada unidad (por ejemplo, la unidad C). Sin embargo, es mejor crear un nuevo recurso compartido porque los recursos compartidos administrativos requieren que se agreguen todos los usuarios que usan el recurso compartido al grupo Administradores.

Si la base de datos se almacena en una plataforma distinta de una plataforma de Microsoft Windows, debe configurar este recurso compartido adecuadamente para la plataforma de destino.

Replicación de las cuentas de usuario local del equipo IIS

Para conceder permisos de recurso compartido y NTFS al usuario suplantado, el equipo de Access debe reconocer esa cuenta de usuario. Si la cuenta es una cuenta de dominio, puede agregarla a las listas de permisos de ambos equipos. Si una o varias de las cuentas es una cuenta local en el equipo IIS, no se reconocerá en el equipo de Access. Para resolver este problema, use el mismo nombre de usuario y la misma contraseña para crear una cuenta local duplicada en el equipo de Access.

Configuración de permisos de directiva de seguridad local

También debe conceder a la misma cuenta, cuentas o grupo permiso para acceder al equipo en la directiva de seguridad local, a menos que la cuenta o las cuentas ya pertenezcan a un grupo que tenga permiso (por ejemplo, el grupo Todos). Debe conceder los permisos siguientes:

  • Iniciar sesión localmente
  • Acceso a este equipo desde la red

Para acceder al editor de directivas de seguridad local, siga estos pasos:

  1. En Panel de control, haga doble clic en Herramientas administrativas y, a continuación, haga doble clic en Directiva de seguridad local.
  2. Expanda el nodo Configuración de seguridad , el nodo Directivas locales y el nodo Asignación de derechos de usuario para acceder al permiso Iniciar sesión localmente y a Acceder a este equipo desde el permiso de red .