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

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

Acceso a la informacin.
Caso prctico
Ahora que Naroba, Noiba y Jana han instalado
correctamente un SGBD con la ayuda de Vindio y
Laro, Juan les pide que realicen las tareas propias
del administrador del mismo, es decir, realizar
altas y bajas de usuarios, modicar los privilegios
de los mismos y cuidar que la base de datos
cumpla la normativa aplicable sobre la proteccin
de datos.

Materiales formativos de FP Online propiedad del Ministerio de


Educacin, Cultura y Deporte.
Aviso Legal

1 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

1. Creacin, modicacin y eliminacin


de vistas.
Caso prctico
Cuando Vindio les cuenta a las estudiantes lo que
han de hacer y les pregunta por el modo en el que
van a encarar el trabajo, Jana le contesta que
considera que el primer paso debe ser crear vistas de
la Base de Datos, para evitar que los usuarios
accedan directamente a los datos de las tablas.

El acceso directo a los datos de las tablas de una BD


puede ser peligroso por motivos de seguridad. Cmo
podemos proteger la BD en la que se trabaja?
El uso de vistas permite proteger la BD facilitando el
acceso a los datos, ya que evita el acceso a las tablas
directamente. Otra ventaja es que podemos dar
permisos sobre las vistas.
Una vista es un objeto de una base de datos y, si no se especica lo contrario, se crea en
la base de datos en la que est trabajando el usuario que la crea.
La sentencia bsica para crear una vista, que puede ejecutarse desde consola o desde
un programa de entorno grco, es la siguiente:
CREATE VIEW nombre_vista AS sentencia_SELECT

Si por el contrario, deseamos realizar una modicacin sobre una vista ya existente, la
sentencia ms sencilla es:
ALTER VIEW nombre_vista AS sentencia_SELECT

Para eliminar una vista solo tenemos que ejecutar:


DROP VIEW [IF EXISTS] nombre_vista

Hay que tener en cuenta que todo aquello que est dentro de los corchetes es opcional
de escribir.
En algunas vistas se pueden modicar los datos que la forman utilizando las sentencias:
INSERT, UPDATE o DELETE. Pero esto no es siempre posible, por ejemplo en los siguientes
casos:

2 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

En caso de utilizar funciones de columna o columnas que son resultado de


operaciones (columnas derivadas) se pueden modicar exclusivamente las
columnas no derivadas.
En el caso de que la sentencia SELECT que genera la vista sea una subconsulta.
Al usar tablas temporales, en la denicin de la vista se emplea ALGORITHM =
TEMPTABLE.
Para poder realizar la operacin de insertar es necesario que la vista incluya todas
las columnas de la tabla que no tengan denido un valor por defecto.
En vistas multitabla, en general, solo se pueden modicar las columnas de una de
las tablas salvo que la denicin de la vista se haya hecho utilizando INNER JOIN, en
cuyo caso si est permitida la modicacin de columnas de ms de una tabla.
En vistas multitabla se puede utilizar la sentencia INSERT, solo cuando se opera en
una de las tablas.
En vistas multitabla la sentencia DELETE no se puede utilizar en ningn caso.

Debes conocer
En los siguientes enlaces puedes encontrar la informacin ocial del MySQL
sobre las vistas de usuario.
Vistas en MySQL 5.5.

3 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

2. Administrador de usuarios.
Caso prctico
Tras la creacin de vistas, Vindio se cuestiona cual es
el siguiente paso a realizar.
En esta ocasin es Noiba quien contesta. Opina que
deberan crear y dar permisos a los diversos usuarios
del sistema.
Vindio, sonre y asiente, despus le pregunta por el
modo en el que lo haran.
Noiba le contesta que utilizando los comandos
CREATE, DROP, UPDATE, SET PASSWORD, GRANT y REVOKE.

A estas alturas, a ninguno de nosotros se nos ocurre pensar que


todos los usuarios de una BD puedan acceder a todos los datos
de la misma y realizar todas las operaciones que deseen.
Tampoco es posible que todos los usuarios que tengan permiso
para trabajar con una base de datos puedan acceder al resto de
BD que se alojan en el SGBD con el que trabajan. Cmo se
pueden establecer diferentes tipos de acceso al SGBD?
Utilizando la administracin de usuarios. De este modo
podemos establecer qu usuarios se pueden conectar al sistema y asegurar que solo
podrn realizar operaciones para las que tienen permisos sobre las bases de datos a las
que tengan acceso.
El acceso se realiza en dos pasos:
En primer lugar, se comprueba la identidad del usuario, a travs de una pareja de
datos login/contrasea. El login viene dado por el
host desde el que nos
conectamos ms el usuario que tenemos asignado.
Despus se comprueban los permisos con los que cuenta el usuario y sobre que
objetos puede operar.
Establecer una poltica de accesos adecuada es uno de las tareas ms importantes a las
que se debe enfrentar un DBA, porque de ello depende en gran medida la seguridad del
SGBD.

4 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

Autoevaluacin
Una cuenta de usuario (login) est formada por:
El nombre de usuario.
El nombre de usuario y mquina desde la que se conecta.
Los permisos de acceso a bases de datos las tablas.
Nombre de usuario y contrasea.
No es la respuesta correcta. El nombre del usuario es parte del login de
un usuario, aunque no es todo.
Correcta. Muy bien, continua as.
Incorrecta. Los permisos estn asociados a la cuenta de usuario, pero
no forman parte del login.
No es correcta. La contrasea es imprescindible, junto con el login,
para comprobar la identidad del usuario.

Solucin
1. Incorrecto
2. Opcin correcta
3. Incorrecto
4. Incorrecto

5 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

2.1. Creacin y eliminacin de usuarios.


Dado que no todos los usuarios van a poder hacer
todas las operaciones sobre un SGBD, cules son
las caractersticas de aquellos usuarios encargados
de las altas y bajas de usuarios en cada una de las
BD del sistema?
Es imprescindible que los usuarios encargados de
estas tareas cumplan dos requisitos:
Tener activo el permiso global RELOAD.
Tener activo el permiso INSERT sobre la BD en la que se almacenan los usuarios de
SGBD, en nuestro caso dicha BD es: mysql.
Las operaciones que podemos realizar sobre una cuenta de usuario son las siguientes:
Crear usuarios, en MySQL podemos crear cuentas de usuario de varios modos:
Utilizando el comando CREATE USER. La forma de uso de est sentencia es:
CREATE USER nombre_usuario [IDENTIFIED BY [PASSWORD] 'contrasea']

La contrasea debe ir entre comillas. Lo habitual es no incluir la palabra


PASSWORD y de este modo, ser el sistema el que encripte la contrasea
introducida. Si no ponemos lo que va entre corchetes el usuario se crear sin
contrasea.
Usando el comando GRANT, este es el comando empleado para proporcionar
los permisos a las cuentas de usuario. Si queremos asignar permisos a una
cuenta de usuario que no existe, el sistema crea una. Este comando lo
veremos en mayor detalle en el prximo apartado.
Manipulando directamente la tabla mysql.user mediante un INSERT. Para que la
contrasea est encriptada es necesario llamar a la funcin PASSWORD() dentro
del INSERT para la columna contrasea. Es necesario ejecutar FLUSH PRIVILEGES
para recargar los permisos creados con INSERT, o modicados con UPDATE.
Mediante alguna utilidad grca como: MySQL Workbench, Administrator o
incluso phpMyAdmin.
Para eliminar una cuenta de usuario utilizamos el comando DROP USER. La forma de
uso de esta sentencia es:
DROP USER nombre_usuario [, nombre_otro_usuario]

Otra operacin que podemos realizar sobre una cuenta de usuario es renombrarla.
Para ello utilizamos la sentencia RENAME. La forma de uso de est sentencia es:
RENAME USER nombre_viejo TO nombre_nuevo

Existe tambin una sentencia para asignar una contrasea al usuario, o cambiar la
actual se ejecuta SET PASSWORD y su forma de uso es:
SET PASSWORD [FOR nombre_usuario] = PASSWORD('contrasea')

Si omitimos el usuario, el cambio se realiza sobre el usuario actual que ejecuta el


comando.
Para poder utilizar estas sentencias es necesario que el usuario cumpla uno de los
siguientes requisitos:

6 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

O bien tiene activo en permiso global CREATE USER, lo que le permite hacer cualquiera
de las operaciones anteriores.
O bien tiene los permisos correspondientes sobre la base de datos mysql, que
son:.
INSERT para utilizar el comando CREATE USER.
DELETE para poder usar el comando DROP.
UPDATE para ejecutar los comandos RENAME y SET PASSWORD.

Debes conocer
Puedes ver el modo de crear usuarios mediante una utilidad grca,
concretamente MySQL Workbench, en la siguiente presentacin:
Creacin de usuarios con MySQL Workbench.

Gestin de cuentas de usuario y permisos en MySQL

7 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

2.2. Permisos a usuarios: puntos de


acceso al sistema.
Quin va a ser el usuario encargado de garantizar la
seguridad en los SGBD?
Esta responsabilidad recae directamente en el DBA. Es l
quien:
Crea los usuarios para proporcionar entrada al
sistema.
Desarrolla las polticas de contraseas.
Asigna los permisos para que el usuario pueda acceder a los distintos objetos del
sistema, para hacer qu tareas concretas y desde dnde puede acceder.
Esas son las tareas que realiza el DBA para controlar las
que puede realizar un usuario y es lo que se conoce como
controlar los puntos de acceso al sistema.
Para asignar permisos a un usuario se utiliza el comando:
GRANT; y para quitrselos se emplea REVOKE. Se pueden
utilizar distintos comodines, como % o *, en el uso de
GRANT y REVOKE. Para saber ms sobre ambos comandos
debes visitar el enlace que encontrars a continuacin.
Los permisos se pueden proporcionar sobre bases de datos enteras, restringirlos a
determinadas tablas de bases de datos concretas e incluso sobre columnas de una tabla.
Podemos saber cuales son los permisos que tiene asignado un usuario bien a travs del
entorno grco, o bien mediante la ejecucin del comando SHOW GRANTS FOR
'nombre_usuario'@'host' en la consola; donde host puede ser el nombre de una mquina o una
direccin IP o de dominio.

Recuerda que una cuenta de usuario viene denida por nombre_usuario y las
mquinas desde las que se puede conectar.

Debes conocer
En el siguiente enlace encontrars documentacin sobre la estructura y
opciones aplicables a los comandos GRANT y REVOKE.
Informacin sobre GRANT y REVOKE.

8 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

Autoevaluacin
Si modicamos los permisos con GRANT, REVOKE o SET
servidor recarga las tablas de permisos automticamente.

PASSWORD

el

Falso.
Verdadero.
No es correcto, para modicar los permisos el servidor debe recargar
las tablas de permisos con los nuevos valores.
Correcto, has captado la idea.

Solucin
1. Incorrecto
2. Opcin correcta

9 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

3. Acceso simultneo: concurrencia y


bloqueos.
Caso prctico
Las estudiantes dicen que ya han terminado la tarea.
Vindio les pregunta si han tenido en cuenta que
puede haber accesos simultneos a los mismos
registros de la BD.
Noiba dice que esa situacin siempre se da en una
BD y que no hay posibilidad de controlarlo.
Vindio vuelve a sonreir. En este caso, les dice, lo
habitual es que el SGBD est congurado de modo
que controle los accesos simultneos al sistema y
que realice los bloqueos necesarios, pero que, si es necesario, tambin
puede congurarse o hacerse a mano.

Cuando varios usuarios operan simultneamente sobre los


mismos registros de una BD cmo se logra que los datos no se
corrompan y que quede preservada la integridad y la coherencia
de la BD?
La forma de actuar en estos casos es habilitando bloqueos. El
tipo de estos depende de la operacin que se realice sobre los
datos. Una de las ventajas de emplear un SGBD frente a un
sistema de almacenamiento basado en cheros es que se puede
controlar el acceso concurrente a los datos almacenados en el
sistema.
Hay dos mtodos para implementar los bloqueos:
Binario: las transacciones solicitan previamente el bloqueo de los registros
escogidos para evitar que cualquier otra transaccin acceda simultneamente a
ellos.
Compartido o exclusivo: es menos restrictivo, ya que permite algunas situaciones
de acceso concurrente. Permite que las transacciones que solicitan el bloque de
registros accedan a l al tiempo si la solicitud de todas ellas es para lectura y acta
el modo compartido. Por otro lado, cuando alguna de las transacciones solicita
realizar una modicacin de los datos, el SGBD utiliza un bloqueo exclusivo sobre
los registros afectados para que ninguna otra transaccin acceda a ellos en ese
instante.
Un problema derivado de los bloqueos es lo que se conoce como abrazo mortal o

10 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

deadlock. Se produce cuando una transaccin bloquea registros, a los que desea acceder
una segunda transaccin, que a su vez tiene bloqueados otros registros a los que desea
acceder la primera transaccin. En esta situacin ambas transacciones estn a la espera
de que la otra libere los registros que necesita para nalizar su tarea sobre los registros
bloqueados. Para evitar este conicto, los SGBD implementan un mecanismo de control
que comprueba peridicamente la existencia de deadlocks, reiniciando la transaccin que
lleva menos operaciones realizadas, segn el nmero de modicaciones.

Debes conocer
Para saber ms sobre el bloqueo de tablas en MySQL puedes acceder al
manual desde los siguientes enlaces:
Mtodos de bloqueo de tablas en MySQL.
Sentencias de bloqueo de tablas en MySQL.

11 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

4. Denicin de roles: asignar y retirar


roles a usuarios.
Caso prctico
Jana, que lleva un rato pensativa, le pregunta a Vindio
si no hubiera sido ms sencillo, a la hora de dar
permisos a los usuarios, crear grupos, como se hace
en el sistema operativo Linux.
Vindio aplaude esta idea. Les dice que, aunque los
grupos no existen, lo que pueden es crear roles, es
decir denir conjuntos de permisos y asignrselos a
los usuarios. De este modo se facilita esta tarea. El
problema es que no todos los SGBD soportan su uso,
y MySQL es uno de estos SGBD.

Un rol viene denido por el conjunto de permisos que se agrupan para realizar
una serie de funciones.
La denicin de roles simplica la administracin de
usuarios al permitir asignar de forma rpida y sencilla
todos los permisos que precisa el usuario al asociarle el rol
o roles que necesita y no tener que asignar los permisos
uno a uno para cada usuario. En bases de datos con
multitud de objetos distintos es donde realmente se nota la
ventaja y potencia de trabajar utilizando roles.
Se pueden comparar los roles con los grupos de usuarios en GNU/Linux. En dicho
sistema operativo se crean distintos grupos, cada uno de ellos con una serie de permisos
que le posibilitan y denen un modo de operar sobre el sistema. Cualquier usuario que
pertenezca al grupo hereda esos permisos. Una vez denidos los grupos, basta con
asignar el usuario a los distintos grupos.
Denir roles sirve para agrupar tareas en tipos de usuarios concretos y que no sea un
usuario, a excepcin de la cuenta del administrador, el que acumule muchos permisos. De
esta manera se consigue aumentar el nivel de seguridad de la base de datos.
En MySQL no vienen predeterminados los roles pero en otros SGBD, como por ejemplo
Oracle, si estn soportados.
La sentencia en Oracle para crear roles es:
CREATE ROLE nombre_rol [NOT IDENTIFIED | IDENTIFIED BY contrasea]

12 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

Una vez creado el rol, utilizamos GRANT para asignar los permisos al rol:
GRANT permisos TO nombre_rol

y tambin se asigna el rol al usuario:


GRANT nombre_rol TO nombre_usuario

Para eliminar un rol sera utilizando el comando DROP y se modicara con ALTER.

Autoevaluacin
Todos los SGBD existentes hoy en da soportan el uso de roles de
usuario.
Verdadero.
Falso.
No es correcto, aunque hay sistemas como Oracle que permiten la
utilizacin de roles, existen otros, como MySQL, que no los soportan.
Correcto, has captado la idea.

Solucin
1. Incorrecto
2. Opcin correcta

13 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

5. Normativa legal vigente sobre la


proteccin de datos.
Caso prctico
Cuando han terminado con los usuarios y
permisos Vindio les entrega la normativa
vigente sobre proteccin de datos para que
la conozcan, se familiaricen con ella y,
despus, comprueben que se cumple en el
SGBD que han instalado.

Entre las responsabilidades del DBA no


est solo asegurar el buen funcionamiento
del SGBD. Controlar el mantenimiento de
los datos almacenados conlleva, adems
de realizar las copias de seguridad para
garantizar la recuperacin del sistema, y
para que en caso de problemas todo
quede como si nada hubiera pasado,
asegurar el cumplimiento de la LOPD a
quienes acceden a esos datos. Esto le obliga a proteger el acceso a los datos de carcter
personal que puedan estar almacenados en las bases de datos.
Un dato de carcter personal es cualquier informacin que permite identicar a una
persona o hacerla fcilmente identicable.
En Espaa, la AGPD es el organismo encargado de garantizar el cumplimiento de la
legislacin sobre proteccin de datos.
La normativa vigente sobre proteccin de datos viene dada por:
Ley Orgnica 15/1999, de 13 de diciembre, de Proteccin de Datos de Carcter
Personal (Ttulo VI con rango de ley ordinaria).
Real Decreto 1720/2007 por el que se aprueba el Reglamento de desarrollo de la
Ley Orgnica 15/1999, de 13 de diciembre, de Proteccin de Datos de Carcter
Personal.
Real Decreto 428/1993, de 26 de marzo, por el que se aprueba el Estatuto de la
Agencia Espaola de Proteccin de Datos.

14 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

Para saber ms
En el siguiente enlace podrs obtener la Gua de Seguridad de Datos, en
formato PDF.
Gua de Seguridad de Datos. (0.76 MB)
Guas publicadas por la AGPD.
A travs del siguiente enlace acceders a la pgina web ocial de la AGPD.
Web de la AGPD.

Autoevaluacin
Cules de las siguientes armaciones son correctas:
La AGPD es el organismo que garantiza el cumplimiento de la
legislacin sobre la proteccin de datos en Internet.

La AGPD es el organismo que garantiza el cumplimiento de la


legislacin sobre la proteccin de datos en Espaa.

Un dato de carcter personal es aquella informacin de la vida privada


de un individuo.

Un dato de carcter personal es aquella informacin que permite


identicar a una persona.

Mostrar retroalimentacin

Solucin
1. Incorrecto
2. Correcto

15 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

3. Incorrecto
4. Correcto

16 de 18

26/8/16 1:36

Acceso a la informacin.

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

Anexo.- Licencias de recursos.


Licencias de recursos utilizados en la Unidad de Trabajo.
Recurso
(1)

17 de 18

Datos del recurso (1)

Recurso
(2)

Datos del recurso (2)

Autora:
jonny
goldstein.
Licencia: CC By.
Procedencia:
www.ickr.com/photos
/jonnygoldstein
/2142231170
/in/photostream/

Autora: Alain Bachellier.


Licencia: CC By-nc-sa.
Procedencia:
www.ickr.com/photos
/alainbachellier/3679225582/in/set72157608481522787

Autora:
Hefhoover
(having a bit of camera
trouble :-( .
Licencia:
CC
by-nc-sa.
Procedencia:
www.ickr.com/photos
/hefhoover
/4086584639/

Autora: Alain Bachellier.


Licencia: CC By-nc-sa.
Procedencia:
www.ickr.com/photos
/alainbachellier/3678356779/in/set72157608481522787

Autora:
Joe
Pemberton.
Licencia:
CC
by-nc-nd.
Procedencia:
www.ickr.com/photos
/joepemberton
/2530023538/

Autora: James Rivera Photography.


Licencia: CC by nc nd.
Procedencia:http://capturegreatness.org
/wp-content/uploads/2012/07
/Dollarphotoclub_56233474.jpg

Autora: miggslives.
Licencia: CC by.
Procedencia:
www.ickr.com/photos
/miggslives
/4354119044/

Autora: Vertigogen.
Licencia: CC by-nc.
Procedencia:
www.ickr.com/photos
/vertigogen/234217869/

Autora:
Alain
Bachellier.
Licencia:
CC
By-nc-sa.
Procedencia:
www.ickr.com/photos
/alainbachellier

Autora: mjswart.
Licencia: CC by-nc.
Procedencia:
www.ickr.com/photos
/mjswart/3763969995/

26/8/16 1:36

Acceso a la informacin.

Recurso
(1)

http://localhost:51235/temp_print_dirs/eXeTempPrintDir_guGa...

Datos del recurso (1)

Recurso
(2)

Datos del recurso (2)

/3678357769/in/set72157608481522787

18 de 18

Autora:
Alain
Bachellier.
Licencia:
CC
By-nc-sa.
Procedencia:
www.ickr.com/photos
/alainbachellier
/3678558585/in/set72157608481522787

Autora: mricon.
Licencia: CC by-sa.
Procedencia:
www.ickr.com/photos
/mricon/137744681/

Autora:
Alain
Bachellier.
Licencia:
CC
By-nc-sa.
Procedencia:
www.ickr.com/photos
/alainbachellier
/2983574231/in/set72157608481522787/

Autora: N'ayez pas peur !! La Fabrique


de Blogs.
Licencia: CC by-cd-sa.
Procedencia:

jpg
https://www.hostinet.com/formacion
/wp-content/uploads/le/protecciondatos-personales.jpg

26/8/16 1:36

Вам также может понравиться