Вы находитесь на странице: 1из 20

UNIVERSIDAD DON BOSCO

FACULTAD DE ESTUDIOS TECNOLGICOS


ESCUELA DE COMPUTACIN

CICLO 3-2013

GUA DE LABORATORIO N 12
Nombre de la practica: Diseo de seguridad de una Base de datos
Lugar de ejecucin: Laboratorio de Informtica
Tiempo estimado: 3 horas
Materia: Base de datos
Docentes: Evelyn Hernndez, Ingris Hernndez, Herson Serrano

I. Objetivos
Que el estudiante sea capaz de:
1. Disear seguridad a nivel de base de datos
2. Administrar los usuarios de una base de datos.
3. Controlar el uso de esquemas de una base de datos.
II. Introduccin Terica
La proteccin de la informacin (controlar el acceso a los datos de una organizacin) se parece mucho a la
proteccin de una estructura fsica. Por ejemplo, imagine que tiene su propio negocio y el edificio que lo
alberga tambin es de su propiedad no querr que el pblico en general pueda acceder al edificio; solo
deberan tener acceso los empleados. Sin embargo, tambin necesita restricciones para las zonas a las que
los empleados pueden acceder, porque solo los contables deberan tener acceso al departamento de
contabilidad y casi nadie debera tener acceso a su despacho; debe instalar diversos sistemas de seguridad.
La proteccin de SQL Server (su edificio) se basa en este concepto; nadie puede entrar a menos que se le
conceda acceso y, una vez que los usuarios estn dentro, los diferentes sistemas de seguridad mantienen
las areas confidenciales a salvo de miradas indiscretas.

Autenticacin y Autorizacin
Usuarios y Esquemas
Seguridad para Desarrolladores
SQL Server define 4 conceptos bsicos:

1. Login de SQL Server


2. Usuario de la Base de datos

3. Role de la BD
4. Role de una aplicacin
Inicios de sesin (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).
Usuario de la base de datos (User):
El usuario de la base de datos es la identidad del inicio de sesin cuando est conectado a una base de
datos. El usuario de la base de datos puede utilizar el mismo nombre que el inicio de sesin, pero no es
necesario.

Los Logins son asignados a los usuarios


Los grants se les asignan a los usuarios.
A los usuarios se le asignan sus propios Esquemas(schemas)

Usuarios por defecto en una BD


dbo: Propietario. No puede ser borrado de la BD
Guest: Permite a usuarios que no tienen cuenta en la BD, que accedan a ella, pero hay que darle permiso
explcitamente
Information_schema
Permite ver los metadatos de SQL Server
sys
Permite consultar las tablas y vistas del sistema, procedimientos extendidos y otros objetos del catlogo del
sistema
Mostrar usuarios de una base de datos:
SELECT * FROM sys.database_principals

Los usuarios pueden pertenecer a Roles.

Todos los usuarios son miembros del Role Public


El login sa est asignado al usuario dbo en todas las base de datos.

Da acceso a la base de datos, pero esto tampoco quiere decir que pueda hacer cualquier operacin sobre la
base de datos, en principio no puede hacer casi nada, salvo que se le vaya asignando roles y otros
privilegios para darle permisos de acceso a los objetos de esa base de datos.
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
2

A nivel de Base de Datos

Los usuarios de base de datos pueden ser otorgados roles.


Se pueden crear roles nuevos.

Role de una Aplicacin


Un role de aplicacin sirve para asignarle permisos a una aplicacin:

Tiene un password
No contiene usuarios

Autenticacin
Qu es Autenticacin?
Es bsicamente el proceso de determinar que alguien es realmente quien dice ser.

Quin Soy?
Soy miembro de
Grupos o Roles?

Quin me verifico?

ID Primario

ID(s)
Secundarios

Authenticator

En SQL Server nos encontramos con tres niveles o capas en los cuales podemos gestionar la seguridad. El
primero de ellos se encuentra a nivel de servidor, en l podemos gestionar quin tiene acceso al servidor y
quin no, y adems gestionamos que roles va a desempear. Para que alguien pueda acceder al servidor
debe tener un inicio de sesin (login) asignado, y a ste se asignaremos los roles o funciones que puede
realizar sobre el servidor.
El que alguien tenga acceso al servidor no quiere decir que pueda acceder a las bases de datos que se
encuentran en l. Para ello hay que tener acceso a la siguiente barrera de seguridad, que es a nivel de base
de dato. Para que un login tenga acceso a una base de datos, tenemos que crear en ella un usuario (user).
Deberemos crear un usuario en cada una de las bases de datos a las que queramos que acceda un login.
Anlogamente, el que un usuario tenga acceso a una base de datos no quiere decir que tenga acceso a todo
su contenido, ni a cada uno de los objetos que la componen. Para que esto ocurra tendremos que irle
concediendo o denegando permisos sobre cada uno de los objetos que la componen.
A continuacin se puede observar un grfico que refleja este modelo.

Mejoras en la Autenticacin sobre SQL2000

La informacin de Login no se enva como texto plano a travs de la red.


La nueva poltica para los passwords esta activada por default. Esta poltica incluye:
o Complejidad de passwords. No mas password como: sa, password, Admin,
Administrator, sysadmin o
o Maneja el bloqueo de las cuentas en base a intentos fallidos
o Expiracin de passwords

Usuarios de BD y esquemas
Coleccin de objetos de la BBDD cuyo propietario es un nico principal y forma un nico espacio de
nombres ( conjunto de objetos que no pueden tener nombres duplicados)
servidor.basededatos.esquema.objeto

Los objetos ahora pertenecen al esquema de forma independiente al usuario


Beneficios:
El borrado de un usuario no requiere que tengamos que renombrar los objetos
Resolucin de nombres uniforme
Gestin de permisos a nivel de esquema
Una BBDD puede contener mltiples esquemas
Cada esquema tiene un propietario (principal): usuario o rol
Cada usuario tiene un default schema para resolucin de nombres
La mayora de los objetos de la BBDD residen en esquemas
Creacin de objetos dentro de un esquema requiere permisos
CREATE y ALTER o CONTROL sobre el esquema
CREATE SHEMA
Crea un esquema en la base de datos actual. La transaccin CREATE SCHEMA tambin puede crear tablas y
vistas dentro del nuevo esquema, as como establecer la autorizacin, denegacin o revocacin (GRANT,
DENY o REVOKE) de permisos en esos objetos.
Sintaxis:
CREATE SHEMA Nombre_Esquema
Ejemplo utilizando TRANSACT SQL:
Se necesita tener 2 Usuarios de BD y 2 Inicio de sesin para la Base de datos Northwind
Sintaxis:
CREATE LOGIN nombre_login
WITH PASSWORD = 'clave_usuario';
Creando de los inicios de sesin:
CREATE LOGIN Director_RH
WITH PASSWORD = '12345';
CREATE LOGIN Gerente_Produccion
WITH PASSWORD = 'abcd';

Comprobando los inicios de sesin:


Entrar a SQL Server 2012 con el nuevo
inicio de sesin creado anteriormente

No se puede accesar a la base de datos, con la cual queremos trabajar.


Para poder tener acceso a las bases de datos primero debemos crear los USUARIOS de BASES DE DATOS,
para la creacin de usuarios de las bases de datos nos ayudaremos del siguiente cdigo.
Sintaxis:
USE BASE_DE_DATOS;
CREATE USER nombre_usuario FOR LOGIN nombre_login
WITH DEFAULT_SCHEMA = algun_esquema;
Ejemplo de creacin de usuarios de base de datos:
CREATE USER JuanPerez FOR LOGIN Director_RH
WITH DEFAULT_SCHEMA = RecursosHumanos
CREATE USER MarioRivas FOR LOGIN Gerente_Produccion
WITH DEFAULT_SCHEMA = Produccion

Asignando permisos sobre esquemas


Vamos a asignarle un esquema al usuario, por ejemplo el esquema RecursosHumanos.
GRANT SELECT
ON SCHEMA :: RecursosHumanos
TO JuanPerez
WITH GRANT OPTION
GO

Si nos conectamos con el inicio de sesin Director_RH, observamos las siguientes tablas en la base de datos
Northwind:

Si hacemos un SELECT a la tabla Empleado, podemos obtener la informacin almacenada en esa tabla,
pero si hacemos un INSERT a la tabla, nos mostrara un mensaje de error indicando que no se tiene
permisos de agregar datos a la tabla.

En conclusin: Como se puede apreciar el usuario efectivamente puede realizar un SELECT, pero no podr
el usuario realizar un DELETE o un INSERT o un UPDATE ya que solamente hemos asignado el permiso
SELECT al usuario de la BD.
Quitar los permisos sobre un esquema
Esto sera como deshacer la otorgacin del permiso, para esto se utiliza la palabra REVOKE que significa
revocar o quitar.
REVOKE SELECT
ON SCHEMA :: RecursosHumanos
TO JuanPerez CASCADE
GO

Asignando permisos sobre tablas


Asignar permisos tabla por tabla
GRANT SELECT ON OBJECT::RecursosHumanos.Empleado
TO JuanPerez

Quitar permisos sobre tablas


REVOKE SELECT ON OBJECT::RecursosHumanos.Empleado
TO JuanPerez

III. Requerimientos

Mquina con SQL Server 2012


Gua Nmero 12 de base de datos

IV. Procedimiento
Parte 1: Iniciando sesion desde SQL Server Managment Studio
1. Hacer clic en el botn Inicio
2. Hacer clic en la opcin Todos los programas y hacer clic en Microsoft SQL Server 2012.
3. Cargue SQL Server 2012.

Para conectarse con el servidor de base de datos elija los siguientes parmetros de autenticacin:
Tipo de servidor: Database Engine
Nombre del servidor: SALA02-PCNumMaquina
Nota: NumMaquina es el nmero de maquina local
Autenticacin: SQL Server Authentication
Login: sa
Password: 123456
Parte 2: Creacin de la base de datos, esquemas y tablas
1. Crear la base de datos

Nota: Sustituir la palabra Carnet por su nmero de carnet


2. Ahora se van a crear dos esquemas en la base de datos

3. Crear las tablas de la base de datos, cada una en un esquema diferente

4. Agregar datos a la base de datos

5. Seleccionar los datos de la base de datos

Parte 3: Creacin de inicio de sesin con SQL Management Studio y Transact SQL
1. En SQL Server Management Studio, abra el Explorador de objetos y expanda la carpeta que tiene el
nombre del servidor.
2. Haga clic derecho en la carpeta Seguridad (Security), seleccione Nuevo (New) y, a continuacin,
Inicio de sesin (Login).

3. En la pgina General,
escriba un nombre para
el nuevo inicio de sesin
en el cuadro Nombre de
inicio de sesin, para este
caso su carnet
4. Seleccione Autenticacin
de SQL Server.
5. Escriba una contrasea
de inicio de sesin,
puede ser tambin el
carnet.
6. Desmarque la opcin de
Exigir
directivas
de
contrasea
(Enforce
password policy), no es
recomendable hacerlo,
pero para efectos de
prctica lo haremos.
7. Selecciona en base de
datos
predeterminada
(Default database), la
base
de
datos
Alumnos_Carnet
8. Haga clic en Aceptar (Ok).

9. En el Editor de consultas, escriba el siguiente comando Transact-SQL

10. Verifique que se cre el nuevo inicio de sesin


Parte 4. Eliminando inicio de sesin
1. Utilizando Interfaz:
a. Expanda la carpeta seguridad
b. Busque el inicio de sesin que desea eliminar
c. Haga clic derecho
d. Seleccione eliminar
2. Utilizando Transact-SQL

Nota: utilice cualquiera de las dos opciones anteriores para eliminar el login guia13Carnet
10

Parte 4. Creacin de usuarios de base de datos


1. Conectarse al servidor de SQL Server para colocar el inicio de sesin que acabamos de crear
2. Digitar el nombre de Login y contrasea y mostrar un mensaje de error el cual indica que no se
tiene acceso a la base de datos, para tener acceso debemos crear usuarios de BD.

3. Expandir la base de datos en la que se quiere crear el usuario, en esta prctica ser
Alumnos_Carnet
4. En la carpeta Seguridad (Security), seleccionar la carpeta usuarios (Users), clic derecho y nuevo
usuario (New User)

5. En Nombre de usuario digitamos un nombre de usuario por ejemplo su nombre


6. Luego dar clic en los puntos suspensivos al lado de Nombre de inicio de sesin (Login name), para
asociar el nombre de usuario a un Inicio de sesin existente

11

Esto quiere decir que cuando alguien inicie su sesin, se activarn las cuentas de la Base de Datos
asociadas a este login.
7. En esquema predeterminado (Default schema) digitar alumno
8. En la parte Esquemas propiedad de este usuario (Shemas owned by this user), seleccionamos el
esquema que deseamos que el usuario pueda tener acceso y control sobre l, que tambin seria
alumno
9. Hacer clic en aceptar (Ok).

12

10. Ahora accedemos con el inicio de sesin que creamos para que se active el usuario de base de
datos.
11. Hacer doble clic en cualquier base de datos, diferente a la de Alumnos_Carnet, y se mostrar el
siguiente mensaje

12. Expandimos la base de datos Alumnos_Carnet y verificamos a que tablas tenemos acceso

13. Si queremos acceder a la tabla Notas con una instruccin SELECT, SQL Server nos mandara el
siguiente mensaje de error.

13

Parte 5. Asignacin de permisos


1. Regrese al inicio de sesin SA
2. En la base de datos Alumno_Carnet ,crear la siguiente tabla:

3. Agregar los siguientes registros

4. Cuando la tabla se crea veremos que quedara en el esquema dbo

5. Ahora en la carpeta seguridad de la base de datos Alumnos_Carnet, dar doble clic sobre el usuario
de base de datos que se cre anteriormente, en la parte izquierda de la pantalla seleccionamos la
opcin Securables

6. Damos clic al botn Search

14

7. Y nos aparecer la siguiente ventana

Si seleccionamos la opcin:
Objetos especficos (Specific objects): crearemos permisos para uno o varios objetos de SQL el usuario
tiene la oportunidad de agregar los objetos de su preferencia.
Todos los objetos de los tipos (All objects of the types): se seleccionaran todos los tipos de objetos, es
decir si selecciona el objeto tabla, se seleccionaran todas las tablas que contenga la BD
Todos los objetos que pertenecen al esquema (All objects belonging to the schema): podr seleccionar los
objetos que pertenezcan a un esquema en especfico.
8. En esta ocasin el ejercicio es solo asignar ciertos permisos a la tabla que acabamos de crear, como
solo queremos una tabla seleccionamos la primera opcin, objetos especficos (Specific Objects),
en la ventana damos clic en Tipos de objeto (Object Types) y seleccionamos tablas (Tables).

9. Damos clic en aceptar (Ok) y ahora damos clic al botn examinar (Browse) para buscar las tablas
existentes en la base de datos

15

10. Seleccionamos la tabla Materias

11. Hacer clic en aceptar (Ok), y nos encontraremos con la siguiente pantalla en la cual marcamos las
casillas de UPDATE y SELECT, lo que quiere decir que el usuario solo podr hacer consultas y
actualizar datos.

12. Para finalizar hacer clic en aceptar (Ok)

16

13. Conctese de nuevo al servidor e ingrese con el inicio de sesin que creo anteriormente para ver
probar los permisos en esa tabla.
14. Observe que ahora le aparecen las dos tablas alumnos y materias

15. Prueba las siguientes sentencias:

Las tres consultas dieron resultados correctos s o no?


Por qu?
Parte 6. Agregando permisos a esquemas
En los ejercicios anteriores, un usuario de base de datos poda realizar consultas y actualizaciones de datos,
ahora haremos que ese usuario de base de datos tenga el permiso para crear tablas las cuales quedaran en
el esquema que se le predetermino cuando se estaba creando.
1. Regresar al inicio de sesin SA
2. Expandir la base de datos en la que se quiere otorgar los permisos, en
esta prctica ser siempre Alumnos_Carnet.
3. Expandir la carpeta seguridad (Security) y luego expandir la carpeta
esquemas (Schemas)
4. Dar clic derecho sobre el esquema en el que se otorgaran permisos al
usuario, en

este ejercicio ser al esquema alumno y dar clic en

propiedades (Properties)

17

5. En la parte izquierda dar clic en la pgina de permisos (Permissions), y luego dar clic en la parte
donde dice Ver permisos de base de datos (View database permissions)
6. En la seccin de permisos explcitos que se encuentra en la parte de abajo, seleccionar los permisos
que deseamos que posea el usuario, en este ejercicio agregamos el permiso para creacin de tablas
y procedimientos, de clic en la casilla conceder a la par del permiso Create procedure y Create
table

7. Probar permisos, ingresar a SQL Server con el login que creo en esta prctica, ejecute las siguientes
instrucciones en la ventana de consultas.

Crear una tabla:

18

Pudo crearlo, por qu?


Crear una vista

Pudo crearlo, por qu?


7. Regrese al usuario SA y digite el siguiente cdigo:

8. Cree de nuevo la vista con el usuario que creo en la prctica Se pudo crear s, no y porque?

V. Ejercicio Complementario
Con Transact SQL, resolver los siguientes ejercicios:
1.
2.
3.
4.

Crear un inicio de sesin


Crear un usuario para la base de datos AdventureWorks. El esquema predeterminado es: Person
Asignar permiso en el cual se puede ver todos los objetos que estn bajo este esquema
Asignar permiso en el cual se puede agregar y actualizar datos solo a las siguientes tablas:
a. ContactType
b. CountryRegion
5. Asignar a este usuario que puede crear tablas y vistas en la base de datos
Investigue en este punto GRANT CREATE TABLE y GRANT CREATE VIEW
VI. Tarea de investigacin
1. Crear la siguiente base de datos:

19

2. Crear los siguientes esquemas y colocar en ellos las siguientes tablas:


a. Esquema: Datos
i. Tablas: Clientes y ciudades
b. Esquema: Pedidos
i. Tablas: Pedido y Transporte
Investigue en este punto la instruccin ALTER SCHEMA y como transferir tablas a un esquema
3. Para los usuarios de la Base de Datos se crearn los siguientes tipos de usuarios:
a. Crear un usuario el cual se encarga de ingresar nuevos clientes y ciudades, tambin a este
usuario se le concede el permiso de actualizar y eliminar informacin de los clientes y
ciudades y solo podr ver esas tablas nada ms.
b. Luego una persona encargada de seleccionar los pedidos que se han realizado y este no
podr seleccionar las otras tablas o informacin.
c. Un usuario administrativo el cual se encarga de seleccionar, agregar, modificar y eliminar
datos de las tablas Pedido y transporte, y solamente vera estas 2 tablas.

VI. Fuente de consulta

1. La Biblia de SQL Server 2005


Madrid, Espaa : Anaya, 2006
Autor: Mike Gundelerloy y Joseph L. Jorden
Biblioteca UDB Clasificacin: 005.361 G975 2006
2. Microsoft SQL Server 2005: Diseo de una estructura de servidor de base de datos. MCITP Examen
70-443
Madrid, Espaa : ANAYA, 2007
Autor: J.C. Mackin y Mike Hotek
Biblioteca UDB Clasificacin: 005.361 M158 2007
3. SQL Server 2008
Madrid, Espaa : ANAYA, 2009
Autor: Francisco Charte Ojeda
Biblioteca UDB Clasificacin: 005.361 Ch436 2009

20