Cómo crear un login, usuario y otorgar permisos en SQL Server (GRANT)
En SQL Server el acceso tiene dos niveles: el login vive en el servidor y el usuario vive en la base de datos. Aqui los creas y otorgas permisos minimos.
- 1
Crea el login a nivel servidor
Puede ser autenticacion SQL (con contrasena) o de Windows/Azure AD. Prefiere autenticacion integrada cuando se pueda.
-- Autenticacion SQL CREATE LOGIN [app_user] WITH PASSWORD = N'UnaClaveFuerte#2026', CHECK_POLICY = ON; -- Autenticacion de Windows -- CREATE LOGIN [DOMINIO\usuario] FROM WINDOWS; - 2
Crea el usuario dentro de la base
El usuario mapea al login dentro de una base especifica. Sin este paso, el login no puede tocar la base.
USE [MiBase]; GO CREATE USER [app_user] FOR LOGIN [app_user]; - 3
Otorga permisos minimos (principio de menor privilegio)
Da solo lo necesario. Evita agregar a db_owner por comodidad. GRANT sobre objetos o esquemas es mas seguro que roles amplios.
-- Permisos de lectura/escritura por rol ALTER ROLE db_datareader ADD MEMBER [app_user]; ALTER ROLE db_datawriter ADD MEMBER [app_user]; -- O permisos granulares GRANT SELECT, INSERT, UPDATE ON SCHEMA::dbo TO [app_user]; GRANT EXECUTE ON OBJECT::dbo.usp_MiProc TO [app_user]; - 4
Verifica los permisos otorgados
Consulta los permisos efectivos del usuario para confirmar que quedo como esperabas.
SELECT dp.name AS principal, p.permission_name, p.state_desc FROM sys.database_permissions p JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id WHERE dp.name = 'app_user';
// el error común
Un usuario sin login mapeado queda 'huerfano' tras restaurar en otro servidor. Se arregla con ALTER USER [app_user] WITH LOGIN = [app_user]. Nunca uses la cuenta sa para aplicaciones ni des db_owner por default: es la causa numero uno de escalada de privilegios.
// cuándo conviene un experto
Si manejas muchos accesos, auditorias o cumplimiento (PCI, ISO), definir un modelo de permisos limpio es delicado. En dba.mx diseñamos esquemas de seguridad con menor privilegio y auditoria, con techo cerrado.
Agenda un Escaneo — desde USD $550Esta guía es orientativa y usa comandos de referencia. En producción, adapta a tu versión y prueba en un ambiente seguro primero.