Está en la página 1de 8

PRACTICA GESTIÓN DE USUARIOS

Por: Nelson López

Contenido de la práctica

1. RESTRICCIÓN DE ACCESO A BASES DE DATOS 2


Ejemplo 2
Ejercicio 1 5
2. RESTRICCIÓN DE ACCESO A ESQUEMAS 5
Ejemplo 5
Ejercicio 2 9
Ejercicio 3 10
Ejercicio 4 10
1. RESTRICCIÓN DE ACCESO A BASES DE DATOS

En esta sección del documento se ilustra el proceso de crear usuarios específicos para ser
asignados a una base de datos en cuestión.

Ejemplo
Crear 5 bases de datos (BD_TESTX, la X hace referencia a 1, 2, 3, 4, 5) de prueba usando el
siguiente script:
USE [master];
GO
DROP DATABASE IF EXISTS BD_TEST1;
GO
CREATE DATABASE BD_TEST1;
GO
USE BD_TEST1;
GO
CREATE TABLE Artistas (
id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
nombres varchar(255) NOT NULL,
apellidos varchar(255) NOT NULL,
);
GO
CREATE TABLE Productores (
id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
nombres varchar(255) NOT NULL,
apellidos varchar(255) NOT NULL,
);
GO
CREATE TABLE Canciones (
id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
artista_id INT NOT NULL,
productor_id INT NOT NULL,
FOREIGN KEY (artista_id) REFERENCES Artistas (id),
FOREIGN KEY (productor_id) REFERENCES Productores (id),

);
Luego de crear la base de datos proceda a crear 5 usuarios (usuario1, 2, 3,4 y 5) para cada base
de datos respectivamente, a continuación se ilustra la creación del usuario “usuario1”:

USE [BD_TEST1]
GO
CREATE LOGIN usuario1 WITH PASSWORD = '123456'
GO
CREATE USER [usuario1] FOR LOGIN [usuario1]
GO
-- OROTOGAR PERMISO PARA ESTABLECER CONEXIÓN CON EL SERVIDOR
USE [BD_TEST1];
GO
GRANT CONNECT TO usuario1;

-- LISTAR LOS USUARIOS CREADOS


SELECT name
FROM sys.server_principals
WHERE TYPE = 'S'
and name not like '%##%'

Ahora proceda a restringir a cada usuario la posibilidad de acceder las otras bases de datos.

USE [BD_TEST1]
GO
SP_DROPUSER 'usuario1';
GO
SP_CHANGEDBOWNER 'usuario1';
GO
ALTER authorization ON DATABASE::BD_TEST1 TO usuario1

Verificar que efectivamente el usuario 1, solo pueda ver la bd BD_TEST1


Ejercicio 1
Realizar el procedimiento anterior para los usuarios 2, 3, 4, 5, 6. Dejar los scripts de evidencia
junto con los pantallazos donde se muestre que efectivamente todo funciona.

2. RESTRICCIÓN DE ACCESO A ESQUEMAS

En el siguiente ejemplo se ilustra el proceso de crear una base de datos con dos esquemas. Luego
se crean dos usuarios, cada usuario solo podrá acceder a un esquema en específico.
Ejemplo
En la conexión por defecto, proceda a crear la siguiente base de datos:

"BD_TEST6" agrupada en dos esquemas (operarios y lectores).

USE [master];
GO
DROP DATABASE IF EXISTS [BD_TEST6]
GO
CREATE DATABASE [BD_TEST6]
GO
USE [BD_TEST6]
GO
DROP SCHEMA IF EXISTS [operarios]
GO
DROP SCHEMA IF EXISTS [lectores]
GO
CREATE SCHEMA [operarios]
GO
CREATE SCHEMA [lectores]
GO
USE BD_TEST6;
GO
CREATE TABLE operarios.bodegas (
id int PRIMARY KEY,
descripcion varchar(45) DEFAULT NULL,
telefono varchar(45) DEFAULT NULL
);
GO
CREATE TABLE operarios.proveedores (
id int PRIMARY KEY,
descripcion varchar(45) NOT NULL,
direccion varchar(45) NOT NULL,
postal varchar(45) NOT NULL,
pais varchar(45) NOT NULL
);
GO
CREATE TABLE operarios.categorias (
id int PRIMARY KEY,
descripcion varchar(45) UNIQUE,
);
GO
CREATE TABLE operarios.clientes (
id int PRIMARY KEY,
nombres varchar(45) DEFAULT NULL,
apellidos varchar(45) DEFAULT NULL,
direccion varchar(45) DEFAULT NULL,
ciudad varchar(45) DEFAULT NULL,
postal varchar(45) DEFAULT NULL,
pais varchar(45) DEFAULT NULL
);
GO
CREATE TABLE operarios.empleados (
id int PRIMARY KEY,
nombres varchar(45) DEFAULT NULL,
apellidos varchar(45) DEFAULT NULL,
fecha_cumple date DEFAULT NULL
);
GO
CREATE TABLE lectores.ordenes (
id int PRIMARY KEY,
fecha date NOT NULL,
empleado_id int NOT NULL,
cliente_id int NOT NULL,
bodega_id int NOT NULL
FOREIGN KEY (empleado_id) REFERENCES operarios.empleados (id),
FOREIGN KEY (cliente_id) REFERENCES operarios.clientes (id),
FOREIGN KEY (bodega_id) REFERENCES operarios.bodegas (id)
);
GO
CREATE TABLE lectores.productos (
id int PRIMARY KEY,
nombre varchar(45) DEFAULT NULL,
unidad varchar(45) DEFAULT NULL,
precio varchar(45) DEFAULT NULL,
proveedor_id int NOT NULL,
categoria_id int NOT NULL
FOREIGN KEY (proveedor_id) REFERENCES operarios.proveedores (id),
FOREIGN KEY (categoria_id) REFERENCES operarios.categorias (id)
);
GO
CREATE TABLE operarios.productos_ordenes (
id int PRIMARY KEY,
producto_id INT NOT NULL,
orden_id int NOT NULL,
cantidad int NOT NULL
FOREIGN KEY (producto_id) REFERENCES lectores.productos (id),
FOREIGN KEY (orden_id) REFERENCES lectores.ordenes (id)
);
Listar las tablas en los esquemas creados
USE [BD_TEST6];
GO
SELECT * FROM INFORMATION_SCHEMA.TABLES;

Ahora proceda a crear dos usuarios uno llamado operario1 y el otro llamado lector1 ambos con la
siguiente clave: 123456. El usuario operario, debe poner ver únicamente las tablas del esquema
operarios y el usuario lector1 solo debe poder visualizar las tablas del esquema lectores.
-- CREACIÓN DE USUARIO lector1
USE [BD_TEST6]
GO
CREATE LOGIN [lector1] WITH PASSWORD = '123456'
GO
CREATE USER [lector1] FOR LOGIN [lector1]
GO
GRANT CONNECT TO lector1;

-- PERMITIR AL USUARIO lector1 SOLO ACCEDER AL ESQUEMA LECTORES


USE [BD_TEST6]
GO
ALTER authorization ON SCHEMA ::lectores TO lector1

-- CREACIÓN DE USUARIO operario1


USE [BD_TEST6]
GO
CREATE LOGIN [operario1] WITH PASSWORD = '123456'
GO
CREATE USER [operario1] FOR LOGIN [operario1]
GO
GRANT CONNECT TO operario1;

-- PERMITIR AL USUARIO operario1 SOLO ACCEDER AL ESQUEMA OPERARIOS


USE [BD_TEST6]
GO
ALTER authorization ON SCHEMA ::operarios TO operario1

Verificar lo anterior realizando una conexión con cada usuario creado


Usuario lector1

Usuario operario1

Ejercicio propuesto
Agrupar la base de datos del proyecto formativo en al menos dos esquemas que usted considere.
Crear dos usuarios, uno por cada esquema.

También podría gustarte