Seguridad SQL Server

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 11

INTRODUCCION:

Una estrategia de defensa exhaustiva, con niveles superpuestos de seguridad, es la mejor


manera de enfrentarse a las amenazas a la seguridad. SQL Server proporciona una arquitectura
de seguridad diseñada para permitir a los administradores de bases de datos y desarrolladores
crear aplicaciones de base de datos seguras y contrarrestar las amenazas.

SQL Server contiene un conjunto jerárquico de entidades, empezando por el servidor. Cada


servidor contiene varias bases de datos y, a su vez, cada base de datos contiene un conjunto
de objetos susceptibles de ser protegidos. Cada SQL Server protegible
tiene permisos asociados que se pueden conceder a una entidad de seguridad, que es una
persona, grupo o proceso al que se concede acceso a SQL Server. El marco de seguridad de SQL
Server administra el acceso a las entidades protegibles a través de la autenticación y
la autorización.

 Principals: Identidades de seguridad que acceden y ejecutan acciones sobre los objetos

 Permissions: Una acción que realiza un principal sobre un Securable.

 Securable: Objetos a los que debemos asegurar el acceso


Crear usuario y dar permisos en SQL Server

Primero creamos un Login

Vamos a Seguridad > Login > New Login, hacemos click.

En General le asignamos un nombre al usuario en “Login Name”

Escribimos la contraseña y confirmamos. Deseleccionamos las opciones de Exigir directivas de


contraseña (para que la contraseña no expire automáticamente o se cambie en el siguiente
inicio de sesión).
En la Asignación de usuarios seleccionamos cuáles son las bases de datos que va a manejar el
usuario que estamos creando. En la parte de abajo le asignamos los roles de la base de datos.

En el apartado de Status nos aseguramos que estén seleccionados Grant y Enable en el orden


que aparece en la imagen. Hacemos click en OK para crear el usuario.
Ahora le asignaremos permisos al usuario

Vamos a Databases > EJEMPLO ‘Base de datos Asignada’ > Security > Users > User09 >
Properties

Ahora buscamos las tablas de la base de datos para dar los permisos.
En selección de tipos de objetos, seleccionamos tablas y nos mostrara las tablas de la base de
datos asignada al usuario.

Ahora daremos los permisos que deseamos.

Por ejemplo: Que el usuario pueda seleccionar solo las tablas clientes, empleados, oficinas y
pedidos, también que el usuario no pueda ver la cuota y ventas de la tabla empleados, además
que solo pueda actualizar la tabla oficinas sin cambiar la columna oficina, y por último que
pueda insertar un registro a la tabla pedidos.

A la tabla clientes le permitiremos que pueda insertar nuevos datos.


En la tabla clientes le permitimos que pueda insertar nuevos datos.

A la tabla pedidos y productos denegamos el ‘Select’ para que el usuario no visualice esas
tablas.
En la tabla empleados denegamos el Select solo a las columnas cuota y ventas, para que el
usuario puede ver la tabla, pero no puede ver esas dos columnas.
A la tabla oficina le permitiremos actualizar, pero que no pueda modificar la columna oficina,
ciudad y región. Y por último Hacemos click en OK para crear los permisos.

Antes de iniciar sesión con el usuario creado, damos click derecho al servidor, nos dirigimos a
seguridad y nos aseguramos que este marcado las siguientes opciones.

A partir de este momento podrás iniciar sesión con el nuevo usuario creado, seleccionando
SQL Server Authentication y los datos de usuario creado.
Aquí podemos ver que al usuario puede ver en funcionamiento los permisos de usuarios.
Creación de usuarios y permisos por código:

Usuario de la base de datos (User):


El usuario de la base de datos es la identidad del inicio de sesión cuando está conectado a una
base de datos. El usuario de la base de datos puede utilizar el mismo nombre que el inicio de
sesión, pero no es necesario.

--Creamos un Login
GO
CREATE LOGIN User11 WITH PASSWORD = '123456', DEFAULT_DATABASE = [EJEMPLO],
CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
--Asignamos la base de datos
USE EJEMPLO;

Login: Un login es la habilidad de utilizar una instancia del Servidor SQL, está asociado con un
usuario de Windows o con un usuario de SQL. Son autenticados contra SQL Server por lo tanto
son los accesos al servidor, pero esto no quiere decir que puedan acceder a las bases de datos
o a otros objetos. Para poder acceder a cada una de las bases de datos se necesita de un
usuario (user).

--Creamos al Usuario
GO
CREATE USER User11 FOR LOGIN User11;
GO

Roles: Los Roles pueden existir a nivel de instancia o base de datos.

A nivel de Instancia:

 Los logins pueden ser otorgados roles llamados “server roles”.


 No se pueden crear Roles nuevos

A nivel de Base de Datos

 Los usuarios de base de datos pueden ser otorgados roles.


 Se pueden crear roles nuevos.

--Asignamos un rol al usuario

ALTER ROLE db_datareader add member User11;

--Asignamos Permisos--

--GRANT : Otorga explícitamente uno o más permisos.


--DENY : Niega explícitamente uno o más permisos.
--REVOKE : elimina los permisos GRANT o DENY existentes.
--Permitimos SELECT UPDATE INSERT

GRANT SELECT ON [dbo].[clientes] ([numclie],[nombre],[repclie]) TO User11;

SELECT * FROM clientes;


UPDATE clientes SET limitecredito = 0 WHERE limitecredito > 60000;
INSERT INTO clientes VALUES (3000, 'Daniel Peña', 101, 350000)

--Denegamos SELECT

DENY SELECT ON [dbo].[empleados] ([contrato],[cuota],[ventas]) TO User11;

SELECT * FROM empleados;


SELECT numemp, nombre, edad, oficina, titulo, jefe FROM empleados;

--Permitimos Actualizar

GRANT UPDATE ON [dbo].[oficinas] ([dir], [objetivo], [ventas])TO User11;

SELECT * FROM oficinas;


UPDATE oficinas SET ventas = 0 WHERE objetivo > ventas;

--Permitimos Insertar

GRANT INSERT ON [dbo].[productos] TO User11;

SELECT * FROM productos;


INSERT INTO productos VALUES('zic', 'yv777','blue', 300,25);

--No podemos actualizar otras tablas porque no le asignamos ese permiso

select * from pedidos;


UPDATE pedidos SET importe = importe * 0.15 WHERE cant > 15;

----No podemos insertar nuevos a otras tablas

INSERT INTO empleados VALUES (200, 'Juan López', 30, NULL, 'representante',
'23/06/01', NULL, 350000, 0)

También podría gustarte