Conectar una aplicación de IIS a SQL Server con su identidad

·4 min de lectura·

Una aplicación alojada en IIS puede conectarse a SQL Server mediante autenticación de Windows y la identidad de su grupo de aplicaciones. Así se evita guardar una contraseña SQL en la cadena de conexión y se puede conceder acceso a un proceso concreto [1][2].

Este procedimiento cubre el caso en que IIS y SQL Server pueden validar el mismo principal de Windows. Si la base de datos está en otro servidor, la identidad virtual del grupo de aplicaciones accede a recursos de red como la cuenta de equipo del servidor IIS, por lo que hay que autorizar esa cuenta en SQL Server [1].

1. Comprobar la identidad del grupo de aplicaciones

En IIS, abre Application Pools, selecciona el grupo de la aplicación y revisa Advanced Settings → Identity. En IIS 7.5 y versiones posteriores, ApplicationPoolIdentity es la opción predeterminada habitual; IIS crea una identidad virtual específica para el grupo [1].

Anota el nombre del grupo de aplicaciones. En los ejemplos se usa MiAplicacion; reemplázalo por el nombre real. No concedas permisos a IIS_IUSRS o a Everyone si basta con identificar el grupo concreto.

2. Crear el login de Windows en SQL Server

Conéctate a la instancia de SQL Server con una cuenta administrativa y crea un login para la identidad del grupo de IIS. Para una instancia local, la forma del principal es IIS APPPOOL\<NOMBRE_DEL_GRUPO> [1][3]:

USE [master];
GO

CREATE LOGIN [IIS APPPOOL\MiAplicacion] FROM WINDOWS;
GO

El login autentica la identidad en el motor, pero por sí solo no concede permisos de lectura o escritura sobre una base de datos. SQL Server separa los logins de instancia de los usuarios definidos dentro de cada base [3].

3. Crear el usuario y conceder permisos mínimos

Crea un usuario asociado al login en la base requerida. A continuación, concede permisos solo sobre los objetos que la aplicación necesita [4][5]:

USE [Aplicacion];
GO

CREATE USER [IIS APPPOOL\MiAplicacion]
  FOR LOGIN [IIS APPPOOL\MiAplicacion];
GO

-- Ejemplo: conceder solo lectura y escritura sobre una tabla concreta
GRANT SELECT, INSERT, UPDATE
  ON OBJECT::dbo.Documentos
  TO [IIS APPPOOL\MiAplicacion];
GO

Adapta el GRANT a las operaciones reales de la aplicación. No añadas el usuario a db_owner para resolver un error de permisos: revisa el objeto y permiso concretos que faltan.

4. Si SQL Server está en otro equipo

Cuando el grupo de aplicaciones usa ApplicationPoolIdentity, las conexiones a recursos de red se presentan con la cuenta de equipo de IIS, con formato DOMINIO\SERVIDORWEB$. Crea el login y el usuario para esa cuenta en el servidor de SQL Server, siempre que ambos equipos estén en un dominio con la confianza necesaria [1].

-- Ejecutar en la instancia de SQL Server remota
USE [master];
GO
CREATE LOGIN [DOMINIO\SERVIDORWEB$] FROM WINDOWS;
GO

USE [Aplicacion];
GO
CREATE USER [DOMINIO\SERVIDORWEB$]
  FOR LOGIN [DOMINIO\SERVIDORWEB$];
GO

Después, concede a ese usuario permisos mínimos sobre los objetos requeridos, igual que en el ejemplo anterior. En entornos donde la cuenta de equipo no sea apropiada, utiliza una cuenta de servicio administrada conforme a la política del dominio y documenta su ciclo de vida.

5. Configurar y probar la conexión

La cadena de conexión debe solicitar autenticación integrada de Windows, por ejemplo:

Server=<SERVIDOR_SQL>;Database=Aplicacion;Integrated Security=True;Encrypt=True;TrustServerCertificate=False

Verifica que el nombre del servidor, el certificado TLS y las reglas de red son correctos. Prueba desde la aplicación con la identidad real del grupo, no solo desde SSMS con tu propia cuenta: una conexión correcta en SSMS no demuestra que IIS tenga los mismos permisos.

Si la aplicación sigue recibiendo un error de autorización, confirma la identidad efectiva del proceso, el login de instancia, el usuario de base de datos, el permiso sobre el objeto y si hay suplantación de usuario configurada en la aplicación.

En resumen

  • Identifica el grupo de aplicaciones que ejecuta la aplicación.
  • Usa IIS APPPOOL\<grupo> para SQL Server local; en conexiones de red, verifica la cuenta de equipo que presenta IIS.
  • Crea tanto el login de instancia como el usuario de base de datos.
  • Concede permisos específicos sobre los objetos necesarios y prueba bajo la identidad real de IIS.

📚 Fuentes consultadas

  1. Application Pool Identities — Microsoft Learn
  2. Create a Login — SQL Server — Microsoft Learn
  3. CREATE LOGIN (Transact-SQL) — Microsoft Learn
  4. CREATE USER (Transact-SQL) — Microsoft Learn
  5. GRANT Object Permissions (Transact-SQL) — Microsoft Learn

Imagen

Identidad de grupo de aplicaciones de IIS conectada a SQL Server

¿Te ha resultado útil?

Compártelo con tu red de contactos profesionales.

Comentarios (0)

Sé el primero en comentar.