viernes, 9 de octubre de 2020

Diferencia entre Login (Inicio de Sesión) y Usuario en SQL Server

Posted by InfoTacticas Soluciones  |  No comments

Un Inicio de Sesión (Login) representa la conexión a la Instancia de SQL Server. Un login es usado para la autenticación al servidor SQL Server. Dicha conexión debe ser validada por algún tipo de servidor de autenticación, de tal modo, que podemos encontrar Inicios de Sesión de Windows (la validación la realiza el Sistema Operativo, y representa al usuario contextual con el que hemos iniciado sesión en Windows) e Inicios de Sesión de SQL Server (la validación la realiza SQL Server, luego es el motor de base de datos quién debe almacenar la contraseña y quién debe validar al usuario).

En cualquier caso, un Inicio de Sesión definido en una Instancia puede pertenecer a determinadas Funciones de Servidor (Server Roles) de dicha Instancia, y cuya pertenencia suele conceder determinados privilegios en dicha Instancia de SQL Server (ej: pertenecer a BULKADMIN permite poder realizar cargas masivas en cualquier base de datos de la Instancia, siempre que además se tengan permisos sobre la tabla de destino).

Una cuenta de usuario (Usuarios de base de datos) es usada para la validación y permisos de acceso a los objetos de una base de datos (procedimientos almacenados, tablas, etc.). Un usuario se define a nivel de Base de Datos y se le asigna al inicio de sesión o login.

un Inicio de Sesión se almacena en la base de datos master (a nivel de la Instancia) y queda definido por su SID, mientras que los Usuarios se almacenan en cada Base de Datos particular y quedan definidos por su UID aunque tienen asignado el SID que les corresponda según el Inicio de Sesión al que pertenecen.

Creación de Login
CREATE LOGIN [LoginFinanciera] WITH PASSWORD = N'Protect2020'
GO

CREATE LOGIN [LoginFinanciera] WITH PASSWORD = N'Protect2020', DEFAULT_DATABASE=[FinancieraDemoBD]

-- creación de login desde Windows
CREATE LOGIN [LoginFinanciera] FROM WINDOWS WITH DEFAULT_DATABASE=[FinancieraDemoBD]

Asignación de Roles a Login
-- Agregar rol dbcreator al login
EXEC sp_addsrvrolemember 'LoginFinanciera', 'dbcreator'

Creación de Usuario de Base de Datos
USE FinancieraDemoBD
GO
 
CREATE USER [UsuarioBDFinanciera] FOR LOGIN [LoginFinanciera]
GO

-- conceder permisos al usuario para que realice Select sobre una tabla de la BD.
GRANT SELECT ON dbo.CLIENTE TO UsuarioBDFinanciera
GO

Eliminar Login y Usuario de Base de Datos
-- Eliminar Login y Usuario
drop login LoginFinanciera

drop user UsuarioBDFinanciera


Creación de Login y Usuario de Base de Datos, previa verificación de existencia

-- CREACION DE LOGIN
USE [master]
GO
IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = N'LoginFinanciera')
	CREATE LOGIN [LoginFinanciera] WITH PASSWORD = N'Protect2020', DEFAULT_DATABASE=[FinancieraDemoBD]

-- CREACION DE USUARIO DE BASE DE DATOS
USE [FinancieraDemoBD]
GO
IF NOT EXISTS(SELECT name FROM sys.sysusers WHERE name = 'UsuarioBDFinanciera')
	CREATE USER [UsuarioBDFinanciera] FOR LOGIN [LoginFinanciera]
GO


Asignación de Roles a Usuario de Base de Datos y otorgar permisos a objetos: procedimientos almacenados, tablas
-- ASIGNACION DE PERMISOS
EXEC sp_addrolemember N'db_datareader', N'UsuarioBDFinanciera'
GO
EXEC sp_addrolemember N'db_datawriter', N'UsuarioBDFinanciera'
GO	
GRANT EXECUTE TO [UsuarioBDFinanciera]

-- DAR PERMISOS AL USUARIO DE BASE DE DATOS SOBRE PROCEDIMIENTOS ALMACENADOS Y TABLAS
USE [FinancieraDemoBD]
GO
GRANT EXECUTE ON [spListar_Clientes] TO [UsuarioBDFinanciera];
GRANT EXECUTE ON [spInsertar_Cliente] TO [UsuarioBDFinanciera];
GRANT EXECUTE ON [spListar_Proveedor] TO [UsuarioBDFinanciera];
GRANT EXECUTE ON [spInsertar_Proveedor] TO [UsuarioBDFinanciera];

GRANT SELECT,INSERT,UPDATE,DELETE ON [CLIENTE] TO [UsuarioBDFinanciera];
GRANT SELECT,INSERT,UPDATE,DELETE ON [PROVEEDOR] TO [UsuarioBDFinanciera];
GRANT SELECT,INSERT,UPDATE,DELETE ON "dbo"."COLABORADOR" TO "UsuarioBDFinanciera";

-- PERMISO ESPECIAL --> EVALUAR CONSIDERACIONES DE SEGURIDAD
GRANT ALTER ON "dbo"."CLIENTE" TO "UsuarioBDFinanciera";

GO 


Consultar login y usuarios de base de datos

-- *** Ver los Inicios de Sesión de la Instancia de SQL Server ***
select sid, name, dbname, password, loginname
from master..syslogins


-- Ver los inicios de Sesion
select * from sys.server_principals


-- *** Ver los Usuarios de la Base de Datos actual de SQL Server ***
use FinancieraDemoBD
GO
select uid, name, sid, *
from sysusers
where islogin=1


select * from sys.database_principals


10/09/2020 09:42:00 p. m. Share:

0 comentarios:

Get updates in your email box
Complete the form below, and we'll send you the best coupons.

Deliver via FeedBurner
back to top