M2 - Bases de dades / Exercicis UF3: Gestió d'usuaris
Contingut
MOLT IMPORTANT ABANS DE FER ELS EXERCICIS ORACLE 21.c alter session set "_ORACLE_SCRIPT"=true;
Administració Oracle
1.Crear un tablespace de nombre compras asociándole un fichero en disco llamado ‘COMPRAS.ORA’ de 5 Mb.
2.Modificar el tablespace anterior para que pueda autoextenderse automáticamente, sin límite de espacio en disco.
3. Crear el usuario RH. Tablespace por defecto: users, Tablespace temporal: Temp. Asignar al usuario RH los roles CONNECT i RESOURCE.
4. Crear las tablas como RH.
CREATE TABLE CLIENTE ( DNI VARCHAR2(10), NOMBRE VARCHAR2(20), FECHA_NAC DATE NOT NULL, DIRECCION VARCHAR2(200), TFNO VARCHAR2(10), APELLIDOS VARCHAR2(100), CONSTRAINT CLIENTE_PK PRIMARY KEY (DNI));
CREATE TABLE PROVEEDOR( NIF VARCHAR2(10), NOMBRE VARCHAR2(20), DIRECCION VARCHAR2(200), TFNO VARCHAR2(10), CONSTRAINT PROVEEDOR_PK PRIMARY KEY (NIF));
5.Amb l'usuari SYSTEM, crear un rol que tenga los siguientes privilegios: INSERT y SELECT en las tablas RH.CLIENTE y RH.PROVEEDOR, CREATE SESSION, CREATE DATABASE LINK, CREATE TABLE y CREATE VIEW.
6.Crear un usuario llamado COMPRADOR. El tablespace por defecto es COMPRAS. Se le asigna 1Mb en el tablespace COMPRAS y 0 de cuota en el tablespace SYSTEM. El tablespace temporal será TEMP. Asignarle el rol anterior.
7.Crear un usuario de base de datos llamado ‘administrador’ que tenga funciones de administrador, ponedle de pasword administrador
8.Conectarse con el nombre de usuario creado anteriormente.
9.Crear varias tablas como administrador.
CREATE TABLE CLIENTE ( DNI VARCHAR2(10), NOMBRE VARCHAR2(20), FECHA_NAC DATE NOT NULL, DIRECCION VARCHAR2(200), TFNO VARCHAR2(10), APELLIDOS VARCHAR2(100), CONSTRAINT CLIENTE_PK PRIMARY KEY (DNI));
CREATE TABLE PROVEEDOR( NIF VARCHAR2(10), NOMBRE VARCHAR2(20), DIRECCION VARCHAR2(200), TFNO VARCHAR2(10), CONSTRAINT PROVEEDOR_PK PRIMARY KEY (NIF));
CREATE TABLE PRODUCTO( NOMBRE VARCHAR2(50), CODIGO VARCHAR2(50), PRECIO NUMBER(10) NOT NULL, PRV_NIF VARCHAR2(10), CONSTRAINT PRODUCTO_PK PRIMARY KEY (CODIGO), CONSTRAINT PROVEEDOR_FK FOREIGN KEY(PRV_NIF) REFERENCES PROVEEDOR (NIF));
CREATE TABLE CLIENTE_PRODUCTO( PRD_CODIGO VARCHAR2(50), CLN_DNI VARCHAR2(10), CONSTRAINT CLIENTE_PRODUCTO_PK PRIMARY KEY (PRD_CODIGO, CLN_DNI), CONSTRAINT PRODUCTOCP_FK FOREIGN KEY (PRD_CODIGO) REFERENCES PRODUCTO(CODIGO), CONSTRAINT CLIENTECP_FK FOREIGN KEY (CLN_DNI) REFERENCES CLIENTE(DNI));
10.Crear 5 usuarios nuevos ( USU1, USU2, USU3, USU4, USU5) con la misma contraseña que el nombre, asignándoles el tablespace COMPRAS y una cuota de 2M
11.Dar permiso a USU1 sólo para que pueda conectarse a la BD.
12.Crear un rol que permita conectarse a la BD y hacer SELECT sobre las tablas definidas en el ejercicio 9.
13.Asignar el rol creado a los usuarios USU2 y USU3.
14.Conceder al usuario USU4 privilegios INSERT y DELETE sobre las tablas CLIENTE y PROVEEDOR con la opción de poder concedérselos a otros usuarios.
15.Conceder al usuario USU5 cuatro privilegios de sistema, dos de ellos con la opción de poder concedérselos a otros usuarios.
16. Conceder a todos los usuarios de la BD privilegios para que puedan modificar las columnas DIRECCION y TFNO de las tablas CLIENTE y PROVEEDOR.
17.Quitar a los usuarios USU3 y USU4 todos los privilegios que tenían asignados.
18. Comprovar la limitació de recursos. En cas de que no estigui activa, activar-la.
19.Hacer que USU5 sólo pueda conectarse en dos sesiones concurrentes a la vez.
20.Limitar el tiempo de conexión a la BD a 5 minutos a los usuarios USU2 y USU3.
Accés a la base de dades
1.Crear un usuario 'USER1' con autentificación de contraseña ('insti'). Otorgale el privilegio de iniciar sesión.
2.Entrar como 'USER1' y cambiar la contraseña a 'merce'.
3.Crea el tablespace de nombre usuarios asociándole un fichero en disco llamado 'USUARIOS.ORA' de 5 Mb. Asignar el tablespace usuarios y como temporal el tablespace temp a 'USER1'.
4.Bloqueamos la cuenta de 'USER1'.
5.Desbloqueamos la cuenta de 'USER1'.
6.Conceder privilegios a 'USER1' para que pueda conectarse, crear tablas, vistas, secuencias y tipos. Permitirle que pueda conceder estos privilegios a otros usuarios.
7.Revocar los privilegios concedidos a 'USER1'.
8.Conceder los privilegios INSERT, UPDATE, DELETE y SELECT para la tabla ‘cliente’ (RH.cliente) a 'USER1'.
9.Conceder todos los privilegios para la tabla ‘dept’ a 'USER1' incluyendo que pueda conceder estos privilegios a otros usuarios.
10.Queremos que un usuario llamado 'USER2' (crearlo), con contraseña 'merce', sólo pueda hacer INSERT en las columnas (DNI, nombre), UPDATE en las columnas (direccion, telefono) y REFERENCES en la columna (DNI) y SELECT en todas las columnas de la tabla 'cliente' de 'RH'.
11.Revocar el privilegio references a 'USER2'.
12.Crear un rol para los programadores de aplicaciones del sistema llamado 'PAS' con contraseña ‘sistema’.
13.Conceder los privilegios de sistema CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE ANY INDEX, CREATE SÉQUENCE, CREATE TYPE al rol 'PAS' creado anteriormente.
14.Conceder los privilegios de objeto INSERT, UPDATE, DELETE, SELECT sobre la tabla 'cliente' al rol 'PAS'.
15.Conceder el rol 'PAS' al usuario 'USER2'.
16.Conceder el rol PAS'al usuario 'USER1'.
17.Conceder al usuario 'USER2' el derecho de 5mb de espacio en el espacio de tabla USERS.
18.Conceder al usuario 'USER2' el derecho de cantidad ilimitada de espacio en el espacio de tabla USERS.
19.Conceder al usuario 'USER1' cuota ilimitada a todos los espacios de tablas.
ACTIVACIÓ DE PERFILS:
ALTER SYSTEM SET RESOURCE_LIMIT = TRUE;
20.Crear un perfil 'LIMREC con los límites de recursos siguientes: máximo de 5 sesiones de BD concurrentes abiertas, CPU por sesión ilimitada, CPU por petición de BD 30 segundos, tiempo de conexión activa ilimitado, estar inactivo durante un tiempo máximo de 30 minutos, lecturas lógicas por sesión ilimitadas y lecturas lógicas por petición 1000.
21.Modificar el perfil anterior ajustando la contraseña de administración a: bloquear la cuenta tras tres intentos consecutivos sin éxito, si se bloquea la cuenta mantener esta bloqueada durante todo un día, tiempo de vida para la contraseña de 30 días más un periodo de grácia de cinco días, el perfil de usuario no puede volver a usar una contraseña antigua.
22.Hacer que caduque la contraseña de 'USER2'.
23.Asignar a USER1 el perfil 'LIMREC'.
24.Deshabilitar la administración de contraseñas para el perfil predeterminado de la BD.
25. Mostrar información (status del compte, tablespace per defecte i tablespace temporal i perfil) acerca de los usuarios 'USER1' y 'USER2'. Vista DBA_USERS.
26.Mostrar información sobre los roles de la base de datos.
27.Mostrar información acerca de las cuotas de espacio de tablas.
28.Mostrar información acerca del perfil ‘LIMREC’.
Gestió d'usuaris
1. Buscar en la bd el contenido de las vistas: dba_profiles ; dba_roles; dba_users; dba_role_privs ; dba_tab_privs ; dba_sys_privs. (antes de hacer select * sobre estas vistas consultar con un describe o desc las columnas que nos interesan)
2. Crear un usuario llamado “administrador” autentificado por la base de datos. Indicar como "tablespace" por defecto USERS y como "tablespace" temporal TEMP; asignar una cuota de 500K en el "tablespace" USERS.
3. Abrir una sesión sqlplus e intentar conectaros como usuario “administrador”, ¿qué sucede?, ¿por qué?.
4. Averiguar qué privilegios de sistema, roles y privilegios sobre objetos tiene concedidos el usuario “administrador”.
5. Otorgar el privilegio “CREATE SESSION” al usuario “administrador” e intentar de nuevo la conexión sqlplus.
6. Conectarse como usuario “administrador” y crear un usuario llamado “prueba00” que tenga como "tablespace" por defecto USERS y como "tablespace" temporal TEMP; asignar una cuota de 0K en el "tablespace" USERS. ¿Es posible hacerlo?.
7. Conectado como usuario SYSTEM, otorgar el privilegio “create user” al usuario “administrador” y repetir el ejercicio anterior.
8. Averiguar que usuarios de la base de datos tienen asignado el privilegio “create user” de forma directa, ¿qué vista debe ser consultada?.
9. Hacer lo mismo para el privilegio “create session”.
10. Crear dos "tablespace" llamados NOMINA y ACADEMO, que contendrán datos relativos a las aplicaciones de nomina y datos académicos de los empleados de una empresa, según las siguientes características:
11. Crear dos "tablespace" temporales, manejados de forma local, llamados TEMP_NOMINA y TEMP_ACADEMO con las siguientes características:
12. Estando conectado como usuario “administrador” probar a crear un rol llamado “administrador”, ¿qué ocurre?.
13. Idem estando conectado como usuario SYSTEM, ¿qué sucede?, ¿por qué?.
14. Comprobar en el diccionario de datos los usuarios o roles que poseen el privilegio “CREATE ROLE”.
15. Crear un rol llamado “ADMIN”, asignarle los privilegios “create session”, “cr eate user” y “CREATE ROLE”. Asignarlo al usuario administrador.
16. Consultar los privilegios de sistema que tiene asignados de forma directa el usuario “administrador”, revocarlos y asignarle el rol “admin.”.
17. Crear, conectado como SYSTEM, un usuario llamado “prueba01” autenticado por base de datos al que no se le asigne "tablespace" por defecto ni temporal.
18. Consultar en las vistas correspondientes los "tablespaces" y la quota en cada uno de ellos que tiene los usuarios SYS, SYSTEM, “administrador”, “prueba00” y “prueba01”. ¿Qué ha ocurrido con el usuario “prueba01”?.
19. Crear un usuario llamado “prueba02” autenticado por base de datos, asignando como "tablespace" por defecto NOMINA y como "tablespace" temporal TEMP_NOMINA (no se le asignara cuota en NOMINA).
20. Asignar al usuario “prueba01” los "tablespace" ACADEMO y TEMP_ACADEMO como "tablespace" de trabajo y temporal respectivamente (sin especificar cuota).
21. Consultar en las vistas correspondientes los "tablespace" y la cuota en cada uno de ellos que tiene los usuarios “prueba01” y “prueba02”.
22. Crear un rol llamado “CONEXIÓN” y asignarle el permiso “CREATE SESSION”.
23. Asignar el rol “CONEXIÓN” a los usuarios “prueba00”, “prueba01” y “prueba02”
24. Comprobar en la vista correspondiente cuales son los roles asignados a los usuarios “prueba00”, “prueba01” y “prueba02”.
25. Conectarse como usuario “prueba01” y crear la tabla siguiente en el "tablespace" ACADEMO:
- CREATE TABLE CODIGOS
- (CODIGO varchar2(3),
- DESCRIPCION varchar2(20))
- TABLESPACE ACADEMO
- STORAGE (INITIAL 64K
- NEXT 64K
- MINEXTENTS 5
- MAXEXTENTS 10);
¿Es posible hacerlo?, ¿falta algún permiso?.
26. Crear un rol llamado “DESARROLLO” y asignarle los permisos "CREATE SEQUENCE", "CREATE SESSION", "CREATE SYNONYM", "CREATE TABLE" y "CREATE VIEW". Asignar el rol “DESARROLLO” a los usuarios “prueba00”, “prueba01” y “prueba02”.
27. Volver a conectarse como usuario “prueba01” y crear la tabla anterior en el "tablespace" ACADEMO.
28. Asignar cuota ilimitada al usuario “prueba01” en el "tablespace" ACADEMO. Volver a repetir el ejercicio 27.
29. Asignar cuota ilimitada al usuario “prueba02” en el "tablespace" NOMINA.
30. Obtener información sobre roles, privilegios de sistema, "tablespace" y cuotas para los usuarios “prueba00”, “prueba01” y “prueba02”.
31. Asignar cuota cero en el "tablespace" por defecto para el usuario “prueba01”, ¿siguen estando sus objetos?, ¿es posible crear algún otro? (probad a crear un tabla).
32. Conectarse como usuario “prueba01” e intentar modificar su cuota en el "tablespace" ACADEMO, ¿es posible?.
33. Conectarse como usuario “prueba01” y modificar su clave, ¿es posible?.
34. Averiguar que usuarios o roles de base de datos tienen asignado el privilegio ALTER USER.
35. Abrir una sesión con el usuario “administrador” y otra con el usuario “prueba02”. Siendo el usuario “administrador”, intentar borrar el usuario “prueba02”.
36. .Asignar el permiso DROP USER al rol ADMIN.
37. Averiguar que usuarios o roles de base de datos tienen asignado el privilegio DROP USER.
38. Conectado como usuario "administrador", crear el usuario “prueba03” autentificado por base de datos y asignando cuotas en el "tablespace" ACADEMO (500K) y NOMINA (200K). Su "tablespace" por defecto serà ACADEMO i su tablespace temporal será TEMP.
39. Comprobar en el fichero de inicialización si está activado el modo de limitación de recursos.
40. Averiguar que usuarios de base de datos o que roles tienen asignado el privilegio “CREATE PROFILE”.
41. Asignar el permiso “CREATE PROFILE” al rol ADMIN.
42. Averiguar que perfiles están definidos en la base de datos y que límites de recursos fija cada uno de ellos.
43. Consultar que perfiles tiene asignados cada usuario de la base de datos.
44. Crear un perfil llamado “DESARROLLO” con las siguientes especificaciones:
45. Asignar el perfil anterior a los usuarios “prueba00”, “prueba01”, “prueba02” y “prueba03”.
46. Intentar la conexión dos veces como usuario “prueba01” fallando la contraseña, ¿qué sucede?. Comprobar si la cuenta ha sido bloqueada en la vista de base de datos correspondiente .
47. Crear un usuario “prueba04” con el parámetro “password expire”, sus "tablespace" por defecto y temporal serán USERS (cuota 0k) y TEMP. Asignar los roles CONEXIÓN y DESARROLLO. Conectarse como usuario “prueba04”, ¿qué sucede?.
48. Bloquear la cuenta del usuario “prueba04”, ¿qué sucede al conectarse de nuevo?.
49. .Modificar el "tablespace" por defecto y el temporal del usuario “prueba01” de forma que sean NOMINA y TEMP_NOMINA.
50. Comprobar cual es el valor del parámetro OS_AUTHENT_PREFIX en la base de datos. (en init<SID>.ora)
51. Cambia la identificación del usuario “prueba01” de forma que sea identificado por el sistema operativo.
52. Modificar el parámetro OS_AUTHENT_PREFIX de forma que, en adelante, la cadena que identifique a un usuario externo sea “” (cadena vacía). (en el fichero de parámetros de inicializacion (init<SID>.ora). Indicar: os_authent_prefix = ""
53. Desbloquear la cuenta del usuario “prueba04”.
54. Modificar los valores del perfil DEFAULT según se indica en la siguiente tabla:
55. Averiguar que usuarios o roles tienen asignado el privilegio “ALTER PROFILE”.
56. Asignar el privilegio anterior al rol ADMIN.
57. Comprobar los valores asignados al perfil “DESARROLLO”. Modificar el perfil “DESARROLLO”, desde el usuario “administrador”, según la siguiente tabla:
¿Qué ha sucedido con el resto de los parámetros?. ¿Coincide el valor de “Connect_time” en este perfil con el que tiene en el perfil DEFAULT?.
58. Averiguar los privilegios de sistema y sobre objetos, así como los roles, que tiene asignados los roles por defecto “CONNECT”, “RESOURCE”, “DBA”, “EXP_FULL_DATABASE” e “IMP_FULL_DATABASE”. ¿Consideras una buena política de seguridad asignar el rol “CONNECT” a todos los usuarios que precisan conectarse a la base de datos?.
59. ¿Puede asignarse el perfil “DESARROLLO” al rol “CONNECT”?. ¿Y el perfil “DEFAULT” al perfil “DESARROLLO”?
60. Averiguar que usuarios o roles de la base de datos tienen asignado el privilegio “DROP PROFILE”.
61. Asignar el privilegio “DROP PROFILE” al rol “ADMIN.”.
62. Conectarse como usuario “administrador” e intentar eliminar el perfil “DEFAULT”, ¿qué ocurre?.
63. Como usuario “administrador” crear el rol “SECRETO” identificado por la contraseña “total” y asignarlo al usuario “prueba04”.
64. Averiguar que usuarios poseen el privilegio “ALTER ANY ROLE” (de forma directa o a través de roles).
65. ¿Qué valor tiene en la base de datos el parámetro MAX_ENABLED_ROLES?. Modificar su valor para que, en adelante, valga 40. Comprobar esta modificación.
66. Averiguar que usuarios poseen el privilegio “GRANT ANY ROLE” (de forma directa o a través de roles).
67. Como usuario “administrador”, deasignar el rol “SECRETO” al usuario “prueba04”.
68. Asignar el privilegio “GRANT ANY ROLE” al rol “ADMIN.”.
69. Averiguar de nuevo que usuarios poseen el privilegio “GRANT ANY ROLE” (de forma directa o a través de roles).
70. Averiguar que usuarios poseen el privilegio “DROP ANY ROLE” (de forma directa o a través de roles).
71. Asignar permiso de conexión al usuario "prueba03", asignar el rol “SECRETO” al mismo usuario. Conectarse como este usuario e intentar borrar el rol.
72. En caso de que no lo tenga asignado, asignar el rol “CONEXION” y el rol “DESARROLLO” al usuario “prueba04”. Hacer que solo el rol “CONEXIÓN” este activo cuando se conecte.
73. Comprobar en la vista apropiada del diccionario de datos los roles activos en la sesión.
74. Conectado como usuario “prueba04”, activar el rol “DESARROLLO” y comprobar de nuevo en la vista apropiada del diccionario de datos los roles activos en la sesión.
75. Asignar el rol "CONNECT" al usuario "ADMIN". ¿Es preciso asignarle los permisos "CREATE PROCEDURE", "CREATE PUBLIC SYNONYM", "CREATE ROLE", "CREATE TRIGGER"?, ¿Los tiene ya asignados?.
76. Conectarse como usuario SYSTEM y otorgar al usuario "prueba02" el permiso para seleccionar datos de la tabla códigos (pertenece al usuario "prueba01"). ¿Qué sucede?, ¿por qué?.
77. Conectarse como usuario "prueba01" y otorgar al usuario "prueba02" el permiso para seleccionar datos de la tabla códigos; hacerlo de forma que "prueba02" también pueda otorgar el permiso a otros usuarios (opción ADMIN).
78. Conectarse como usuario "prueba02" y otorgar al usuario "prueba03" el permiso para seleccionar datos de la tabla códigos.
79. Conectarse como usuario "prueba01" y revocar al usuario "prueba02" el permiso para seleccionar datos de la tabla códigos.
80. Conectarse como usuario "prueba03" e intentar consultar la tabla códigos. ¿Qué ocurre?, ¿por qué?.