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

CONTROL DE ACCESO

Unidad 3

Al concepto de seguridad tambin


se le puede llamar privacidad.
El problema de la seguridad
consiste en lograr que los recursos
de un sistema sean, bajo toda
circunstancia, utilizados para los
fines previstos.

El objetivo de la seguridad es
proteger la Base de Datos contra
accesos no autorizados, o estar libre
de todo peligro o dao.

Caractersticas
Confidencialidad: nos dice que los objetos de un sistema han de
ser accedidos nicamente por elementos autorizados a ello, y que
esos elementos autorizados no van a convertir esa informacin en
disponible para otras entidades.

Integridad: significa que los objetos slo pueden ser modificados


por elementos autorizados, y de una manera controlada.

Disponibilidad:

indica que los objetos del sistema tienen que


permanecer accesibles a elementos autorizados.

Medidas de seguridad
Fsicas: controlar el acceso al equipo, mediante tarjetas de
acceso.

Personal:

acceso solo de
identificacin directa de personal.

SGBD:

personal

autorizado,

uso de herramientas que proporcione el SGBD


perfiles de usuario, vistas, restricciones de uso de vistas.

Usuarios y Privilegios
El acceso al servidor MySQL est controlado por usuarios y
privilegios. Los usuarios del servidor MySQL no tienen
ninguna correspondencia con los usuarios del sistema
operativo.
En la prctica es comn que algn administrador de MySQL
asigne los mismos nombres que los usuarios tienen en el
sistema.
El usuario administrador del sistema MySQL se llama
ROOT.

Creacin de Usuarios
CREATE USER usuario IDENTIFIED BY contrasea;
Ejemplos:
CREATE USER pepito IDENTIFIED BY griyo;
CREATE USER anonimo@localhost;
CREATE USER alumno@192.168.0.% IDENTIFIED BY
alumno;
Ver los usuarios:
SELECT User,Host,Password FROM mysql.user;

Borrar un usuario:

DROP USER usuario;


Cambiar el nombre de un usuario:

RENAME USER viejo_usuario TO nuevo_usuario;


Cambiar la contrasea de un usuario:

SET

PASSWORD
PASSWORD(contrasea);

FOR

Ver los privilegios de un usuario:

SHOW GRANTS FOR usuario;

usuario

La administracin de privilegios y usuarios


en MySQL
GRANT: Otorga privilegios a un usuario, en caso de no existir,
se crear el usuario.

REVOKE: Elimina los privilegios de un usuario existente.


SET PASSWORD: Asigna una contrasea.

La Sentencia GRANT
La sintaxis simplificada de GRANT consta de tres secciones. No
puede omitirse ninguna, y es importante el orden de las mismas:

GRANT lista de privilegios


ON base de datos.tabla
TO usuario
Ejemplo
Mysql > GRANT UPDATE, INSERT, SELECT
-> ON demo.precios
-> TO visitante@localhost;

La Sentencia GRANT
Es posible asignar una contrasea a la cuenta al mismo tiempo
que se crea y se le otorgan privilegios:

Mysql > GRANT UPDATE, INSERT, SELECT


-> ON demo.precios
-> TO visitante@localhost identified by nuevapassword;

La Sentencia GRANT
En la misma sentencia es posible tambin otorgar permisos a ms
de un usuario y asignarles, o no, contrasea:
Mysql > GRANT UPDATE, INSERT, SELECT
-> ON demo.precios
-> TO visitante@localhost,

-> yo@localhost IDENTIFIED BY nuevapassword,


-> tu@equipo.remoto.com;

Especificacin de lugares origen de la conexin


MySQL proporciona mecanismos para permitir que el usuario realice
su conexin desde diferentes equipos dentro de una red especfica,
slo desde un equipo, o nicamente desde el propio servidor.
Mysql > GRANT UPDATE, INSERT, SELECT
-> ON demo.precios
-> TO visitante@%.empresa.com;
El carcter % se utiliza de la misma forma que en el comando like:
sustituye a cualquier cadena de caracteres. En este caso, se
permitira el acceso del usuario 'visitante' (con contrasea, si la
tuviese definida) desde cualquier equipo del dominio
'empresa.com'. Obsrvese que es necesario entrecomillar el nombre
del equipo origen con el fin de que sea aceptado por MySQL.

Especificacin de bases de datos y


tablas
Despus de analizar las opciones referentes a los lugares de conexin
permitidos, veamos ahora cmo podemos limitar los privilegios a bases
de datos, tablas y columnas.
En el siguiente ejemplo otorgamos privilegios sobre todas las tablas de
la base de datos demo.
Mysql > GRANT ALL
-> ON demo.*

-> TO visitante@localhost;

Especificacin de bases de datos y tablas


Podemos obtener el mismo resultado de esta forma:
Mysql > USE demo;
Mysql > GRANT ALL

-> ON *
-> TO visitante@localhost;

Especificacin de bases de datos y tablas


De igual modo, al especificar slo el nombre de una tabla se
interpretar que pertenece a la base de datos en uso:
Mysql > USE demo;

Mysql > GRANT ALL


-> ON precios
-> TO visitante@localhost;

Especificacin de columnas
A continuacin un ejemplo donde se especifican las columnas sobre las que
se otorgan privilegios con el comando GRANT:
Mysql > GRANT UPDATE(precio,empresa)
-> ON demo.precios
-> TO visitante@localhost;
Podemos especificar privilegios diferentes para cada columna o grupos de
columnas:
Mysql > GRANT UPDATE(precio), SELECT (precio, empresa)

-> ON demo.precios
-> TO visitante@localhost;

Niveles de Privilegios en MYSQL


Globales: se aplican al conjunto de todas las bases de datos en un servidor. Es el
nivel mas alto de privilegio, en el sentido de que su mbito es el ms general.
De bases de datos: se refieren a bases de datos individuales, y por extensin, a todos
lo objetos que contiene cada base de datos.
De columna: se aplican a tablas individuales, y por lo tanto, a todas las columnas de
esas tablas.
De columna: Se aplican a una columna en una tabla concreta.
De rutina: se aplican a los procedimientos almacenados. En mysql se pueden
almacenar procedimientos consistentes en varias consultas sql.

Crear otro administrador


En entornos grandes, es frecuente encontrarse en la necesidad de delegar el trabajo
de administrar un servidor de bases de datos para que otros usuarios, adems del
administrador, puedan responsabilizarse de otorgar privilegios sobre una base de
datos particular. Esto se puede hacer en MySQL con el privilegio grant option:
Mysql > GRANT ALL, GRANT OPTION
-> ON demo.*
-> TO operador@localhost;

El mismo resultado se puede obtener con la siguiente sintaxis alternativa:


Mysql > GRANT ALL
-> ON demo.*

-> TO operador@localhost
-> WITH GRANT OPTION;

Limites de uso
Los recursos fsicos del servidor siempre son limitados: si se conectan
muchos usuarios al mismo tiempo al servidor y realizan consultas o
manipulaciones de datos complejas, es probable que pueda decaer el
rendimiento notablemente. Una posible solucin a este problema es
limitar a los usuarios el trabajo que pueden pedir al servidor con tres
parmetros:

Mximo nmero de conexiones por hora.


Mximo nmero de consultas por hora.
Mximo nmero de actualizaciones por hora.

Limites de uso
La sintaxis de estas limitaciones es como se muestra a continuacin:
Mysql > GRANT ALL

-> ON *.*
-> TO
-> WITH MAX_CONECTIONS_PER_HOUR 3
-> MAX_QUERIES_PER_HOUR 300

-> MAX_UPDATES_PER_HOUR 30;

Eliminar privilegios
El comando REVOKE permite eliminar privilegios otorgados con
GRANT a los usuarios. Veamos un ejemplo representativo:
REVOKE ALL
ON *.*

FROM visitante@localhost;
Al ejecutar este comando se le retiran al usuario visitante todos sus
privilegios sobre todas las bases de datos, cuando se conecta desde
localhost.

Eliminar usuarios
Antes de proceder a la eliminacin de un usuario, es
necesario asegurarse de que se le han quitado primero todos
sus privilegios. Una vez asegurado este detalle, se procede a
eliminarlo mediante el comando DROP USER:
mysql > DROP USER visitante;