Está en la página 1de 14

INSTITUTO TECNOLÓG ICO DE VILLAHERMOSA

Campus Villahermosa
Depto.: Sistemas y Computación

Materia: Taller de Base de Datos

Maestra: Loyda Sánchez Marín

Tema 3: Control de acceso

Creación de usuarios, roles y privilegios


Actividad 3:
según los requerimientos del proyecto

Equipo #7: Julio César Olán Lorenzo


Francisco Javier Hernández Chable
Francisco Javier Sarao Aguilar
Jesús Ángel Hernández Salvador
Introducción
En el presente reporte haremos la creación de cuentas de usuario, roles y asignación de
privilegios según las políticas de seguridad de MySQL. Todos estos elementos nos servirán
para nuestro proyecto y, además, para conocer también quienes realizan cambios en la bd
y en qué momento se realizan.
Como se ha estado trabajando en actividades pasadas, ahora es el turno de la creación de
usuarios y su asignación de privilegios. Mostraremos cada uno de los pasos a realizar en
el proceso de creación y además explicaremos conforme vayamos avanzando.
Desarrollo del reporte
En los siguientes pasos de la actividad realizaremos la creación de usuarios, roles y
asignación de privilegios para cada uno de los usuarios. Explicaremos detalladamente cada
uno de los pasos realizados para que podamos tener una mejor comprensión del tema y,
de igual forma, mostraremos la evidencia correspondiente.
1°. - Para empezar con la actividad lo que haremos será abrir nuestro Panel de Control
de XAMPP y ejecutaremos el MySQL, después de hacer lo anterior, abriremos el
administrador de phpMyAdmin tal y como se ve en la captura:

2°. - Lo siguiente que haremos será seleccionar la base de datos “mysql” y abriremos el
espacio de trabajo SQL para poder empezar a realizar las consultas.
3°. - Antes de empezar a crear las cuentas de usuario y demás, comprobaremos en la
tabla USER de la base de datos mysql, que no haya ningún usuario ya creado con el mismo
nombre. Entonces, lo que haremos será seleccionar la base de datos y hacer un SELECT
a la tabla correspondiente:

Con la captura anterior demostramos y comprobamos que no haya ningún usuario creado
con el mismo nombre que crearemos los nuevos usuarios.
4°. - Para empezar con el desarrollo practico del reporte, lo que haremos será crear, vía
sentencias de SQL, las cuentas de usuarios que utilizaremos para nuestro proyecto.
Crearemos todas las cuentas de usuario en la misma declaración, esto nos permitirá ahorrar
tiempo y así tendremos un desarrollo más ordenado. Para crear las cuentas de los usuarios
(4 en total) usaremos la siguiente declaración:
CREATE USER 'man1'@'localhost' IDENTIFIED BY 'managerjc';
CREATE USER 'man2'@'localhost' IDENTIFIED BY 'managerfj';
CREATE USER 'rw_user1'@'localhost' IDENTIFIED BY 'rw_user1pass';
CREATE USER 'rw_user2'@'localhost' IDENTIFIED BY 'rw_user2pass';
Después de haber ejecutado las declaraciones anteriores, podemos observar que nos salen
los mensajes de que hemos creado correctamente los usuarios y que se nos ha devuelto
un conjunto vació de columnas. Esto sale porque hemos hecho inserción de registros.
En la captura de abajo se demuestra la correcta ejecución y creación de las cuentas de
usuario:
Ahora es el turno de hacer un SELECT de nueva cuenta a la tabla USER para comprobar
que aparecen los usuarios creados con sus contraseñas cifradas.
Como podemos observar las cuentas de usuario creadas no tienen asignado ningún
privilegio por ahora. Esto lo podemos comprobar viendo en cada una de las columnas la
letra “N”, que quiere decir que no hay privilegios asignados.
5°. - Ahora procederemos a crear los roles para asignarlos a cada una de las cuentas de
usuario, pero antes de asignárselos a los usuarios, haremos la asignación de privilegios a
los roles que ahora crearemos.
Crearemos un total de 3 roles, dichos roles serán los del administrador y dos más los cuales
serán de escritura y lectura. La declaración para crear los roles será la siguiente:
CREATE ROLE 'pw_manager', 'pw_read', 'pw_write';

Como podemos ver en la captura de arriba nos aparece un mensaje que nos dice que se
nos ha devuelto un conjunto vació, es decir, cero columnas. Los roles que hemos creado
se han hecho satisfactoriamente.
Existe una forma de comprobar que hemos creado los roles y es dando clic en el lado
izquierdo en la tabla que dice roles_mapping. Al darle clic se nos abrirá una vista que nos
muestra los roles que hemos creado con su respectivo nombre:
6°. - Ahora lo que nos falta es asignar los privilegios a los roles creados. Teniendo en
cuenta que usaremos un rol de administrador (el cual tendrá todos los privilegios), uno de
lectura (privilegio SELECT) y otro de escritura (privilegios INSERT, UPDATE Y DELETE).
Haremos la asignación en una sola declaración y usando las palabras reservadas correctas.
Lo haremos de la siguiente forma:
GRANT ALL ON product_warehouse. * TO 'pw_manager';
GRANT SELECT ON product_warehouse. * TO 'pw_read';
GRANT INSERT, UPDATE, DELETE ON product_warehouse. * TO 'pw_write';

Al rol del administrador, pw_manager, le haremos su asignación usando las cláusulas


GRANT ALL ON para definir la base de datos a la cual estarán ligados los privilegios y el
TO para asignar los privilegios a ese rol.
En cuanto al rol de solo lectura, pw_read, haremos casi lo mismo, pero en vez de utilizar la
palabra reservada ALL usaremos el privilegio especifico a otorgar, es decir la palabra
reservada SELECT y hacemos la asignación con el TO y el nombre del rol.
Y por último en la tercera línea de ejecución usamos, de igual forma que los anteriores, la
cláusula GRANT y especificamos los privilegios de escritura, es decir el INSER, UPDATE
Y DELETE. Hacemos la asignación de los privilegios al rol con la palabra reservada TO.
Cabe mencionar que en cada asignación de privilegios a los roles tenemos que definir a
que base de datos estarán ligados los privilegios. En nuestro caso, como lo haremos
referente a nuestro proyecto, nuestra base de datos se llama product_warehouse.
7°. - Para comprobar que los roles creados tienen los privilegios que les hemos asignado
haremos lo siguiente.
Usaremos las cláusulas SHOW GRANTS FOR ‘nombre_rol’, poniendo en la parte
nombre_rol cada uno de los nombres de los roles que hemos creado.
- Demostrando la asignación de privilegios al rol pw_manager:
SHOW GRANT FOR pw_manager;

En la captura de arriba mostramos con un recuadro azul la parte donde nos muestra que
se le han asignado todos los privilegios (ALL PRIVILEGES) al rol pw_manager, donde los
usuarios asignados a este rol serán los administradores de la base de datos del proyecto.

- Demostrando la asignación de privilegios al rol pw_read:


SHOW GRANT FOR pw_read;
Mostramos con un recuadro de azul la parte de la consulta donde se nos muestra la
asignación correcta del privilegio de lectura (SELECT) al rol de solo lectura, pw_read.

- Demostrando la asignación de privilegios al rol pw_write:


SHOW GRANT FOR pw_write;

De igual forma, pero de otro color, mostramos en un recuadro naranja la consulta donde se
puede ver la descripción de la asignación de los privilegios de escritura (INSERT, UPDATE
Y DELETE) al rol pw_write.
De esta forma comprobamos que se han asignado correctamente los privilegios a los roles
establecidos para las cuentas creadas.
8°. - Ahora solo nos falta asignar los roles a cada una de las cuentas de usuario de la
base de datos. Para hacerlo usaremos la palabra reservada TO.
Haremos la asignación de roles de la siguiente forma:
GRANT 'pw_manager' TO 'man1'@'localhost';
GRANT 'pw_manager' TO 'man2'@'localhost';
GRANT 'pw_read' TO 'rw_user1'@'localhost';
GRANT 'pw_write' TO 'rw_user1'@'localhost';
GRANT 'pw_read' TO 'rw_user2'@'localhost';
GRANT 'pw_write' TO 'rw_user2'@'localhost';

Como podemos ver en la captura de arriba de nos muestran los mensajes que nos dicen
que se ha generado la consulta correctamente. Es decir, que hemos asignado los roles a
los usuarios para nuestra base de datos.
9°. - De igual manera que la comprobación de la asignación de privilegios a los roles,
podemos comprobar que se han asignado los roles a las cuentas de usuario de manera
correcta.
Para hacer esta comprobación vamos a usar las cláusulas SHOW GRANT FOR
‘nombre_usuario’. Definiendo en la parte nombre_usuario, el nombre de cada una de las
cuentas de usuario creadas para administrar nuestro proyecto de base de datos.
- Demostrando la asignación del rol pw_manager a la primera cuenta de
administrador ‘man1’@’localhost’:
SHOW GRANTS FOR ‘man1’@’localhost’;
Para que se pueda ver mejor hemos encerrado el resultado de la consulta donde se nos
muestra la asignación del rol pw_manager (rol del administrador) a la cuenta
‘man1’@’localhost’ (cuenta del administrador). Esta cuenta tendrá todos los privilegios
asignados a ese rol.
- Demostrando la asignación del rol pw_manager a la segunda cuenta de
administrador ‘man2’@’localhost’:
SHOW GRANTS FOR ‘man2’@’localhost’;
Observamos que al igual que la primera cuenta de administrador, se le ha asignado el rol
pw_manager, es decir, que la cuenta tiene todos los privilegios para trabajar con la base de
datos.

- Demostrando la asignación de los roles de lectura y escritura pw_read y pw_write


correspondientemente, a la cuenta de solo lectura/escritura ‘rw_user1’@’localhost’:
SHOW GRANTS FOR ‘rw_user1’@’localhost’;

- Demostrando la asignación de los roles de lectura y escritura pw_read y pw_write


respectivamente, a la cuenta segunda cuenta de lectura/escritura
‘rw_user2’@’localhost’:
SHOW GRANTS FOR ‘rw_user2’@’localhost’;
Recordemos que a pw_read se le asignó el privilegio SELECT, el cual solo nos permite
visualizar el contenido de nuestra base de datos. Al rol pw_write, se le asignaron los
privilegios de INSERT, UPDATE Y DELETE, para que de esta forma se puedan hacer
modificaciones ligeras a la base de datos.
Y de esta manera terminamos con la comprobación, desarrollo y explicación detallada de
la actividad. La cual nos servirá para poder seguir desarrollando de manera correcta y
eficiente nuestro proyecto.
Conclusión
Conforme al reporte detallado de la creación de usuarios, roles y privilegios, así como su
asignación, concluimos la actividad con éxito y presentando los resultados.
Los ejercicios aquí realizados son de suma importancia para poder tener una seguridad,
control y gestión adecuados para nuestra base de datos. El crear usuarios nos sirve para
poder darle acceso a los diferentes usuarios que mantendrán la bd y la asignación de roles
y privilegios ayudan a restringir ciertas actividades que los usuarios podrán realizar en la
base de datos.

También podría gustarte