Seguridad en BDD
Seguridad en BDD
Seguridad en BDD
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:
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.
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
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.
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
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
III. Requerimientos
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
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).
Nota: utilice cualquiera de las dos opciones anteriores para eliminar el login guia13Carnet
10
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)
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
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
14
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
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.
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
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.
18
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.
19
20