Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 5
Seguridad y autorización
1. Vistas ............................................................................................................................ 1
2. Usuarios y privilegios .................................................................................................... 5
2.1. Gestión de cuentas/usuarios .................................................................................. 5
2.2. Gestión de privilegios ............................................................................................. 7
3. Copias de seguridad ..................................................................................................... 9
Ejemplos
©Yolanda Marhuenda
Seguridad y autorización
1. Vistas
Una vista es una consulta sobre datos de tablas u otras vistas que se almacena con un
nombre en la BD.
Desde el punto de vista de un usuario, una vista es una tabla más sobre la que se pueden
realizar consultas y acciones DML (Data Management Language), es decir, acciones de
borrado, actualización e inserción de datos. Sin embargo, una vista no es una tabla sino
que cada vez que se accede a una vista se realiza la consulta que tiene asociada.
• Crear una consulta compleja sobre varias tablas a la que se accede a menudo y
asignarle un nombre para utilizarla posteriormente.
• Proveer distintas formas de acceder a los datos dependiendo del usuario que realice el
acceso.
Para poder crear una vista es necesario que el usuario tenga el permiso CREATE VIEW.
La siguiente instrucción sirve para dar este permiso a un usuario llamado nombreusuario.
• FORCE | NOFORCE
Esta opción se utiliza para que se fuerce o no la creación de una vista si no existen las
tablas sobre las que está definida. La opción por defecto es NOFORCE de forma que
solamente se crea la vista si existen las tablas.
• aliascolumnas
Los alias se utilizan para asignar nombres a los elementos de la lista de selección de la
consulta sobre la que se crea la vista. Si no se especifican alias, se asignan los nombres
indicados en la lista de selección en la instrucción SELECT. En el caso de querer utilizar
alias hay que asignar nombres a todos los elementos de la lista de selección antes de
la instrucción SELECT y estos nombres hay que separarlos por ‘,’.
Toda la información sobre las vistas creadas por un usuario se almacena en una vista del
sistema denominada USER_VIEWS. En la Figura 1 se muestran los campos que contiene
esta vista.
Hay que tener en cuenta que cuando se realizan operaciones DML sobre una vista se
modifican los datos en la base de datos. Dependiendo del tipo de acción que se quiera
realizar sobre una vista hay que tener en cuenta lo siguiente:
• Simples: Seleccionan los datos de una única tabla y no contienen funciones referentes
a grupos de registros ni utilizan GROUP BY. Sobre estas vistas siempre se pueden
realizar operaciones DML.
• Complejas: Seleccionan los datos de más de una tabla, pueden contener funciones
sobre grupos de registros y no siempre permiten realizar acciones DML. Para poder
llevar a cabo las instrucciones DML se utilizan disparadores del tipo INSTEAD OF.
A continuación, se muestran diversos ejemplos de vistas creadas sobre una base de datos
referente a los departamentos de una empresa y los empleados que pertenecen a cada
departamento.
PERTENECER
fechanac salario
DEPARTAMENTO(código, nombre)
C.P.: código
En este ejemplo se crea una vista llamada EMPLEADO_INF que solamente tiene acceso
al DNI, nombre y primer apellido de los empleados del departamento de Informática. El
código de este departamento es INF.
Aunque solo se pide asignar nombre a las dos últimas columnas de la instrucción SELECT,
debemos asignar alias para todos los elementos, según se ha especificado anteriormente
en la definición de la sintaxis de la creación de vistas (página 1).
La siguiente vista contiene los empleados nacidos entre los años 1980 y 1990.
Al utilizar la opción WITH CHECK OPTION si se intenta asignar una fecha de nacimiento
con un valor que incumpla la condición especificada en la consulta, el SGBD no lo permite
ya que entonces el registro resultante no sería seleccionado por la vista.
2. Usuarios y privilegios
El administrador de la BD es la autoridad que gestiona el sistema de BD. Entre las acciones
que puede realizar se encuentran las relacionadas con la gestión de cuentas/usuarios y la
gestión de privilegios y roles.
En este apartado se introducen las instrucciones SQL necesarias para tratar este tipo de
acciones.
Los usuarios administradores pueden crear usuarios. Si se quiere que un usuario pueda
crear usuarios debe tener al menos el permiso CREATE USER, en caso contrario no podrá
crear usuarios.
El diccionario de datos de una BD contiene, entre otros elementos, vistas para acceder a
información referente a la gestión de usuarios. Las vistas relacionadas con los usuarios son
DBA_USERS, ALL_USERS y USER_USERS.
La vista DBA_USERS, contiene información sobre los usuarios creados. Solamente los
usuarios con permisos de administrador pueden crear, borrar, consultar esta vista y
modificar los usuarios. En la Figura 2 se muestran los campos de esta vista.
La vista ALL_USERS puede ser consultada por cualquier usuario y obtiene los usuarios
que puede ver. En la Figura 3 se muestra la estructura de esta vista.
Algunas acciones de gestión que se puede realizar sobre los usuarios son la eliminación y
la modificación de sus datos.
Para modificar los datos de los usuarios se utiliza la instrucción ALTER USER. Entre otras
acciones esta instrucción permite:
Por otro lado, un usuario puede gestionar qué objetos que ha creado: tablas, restricciones,
funciones, procedimientos,… consultando la vista USER_OBJECTS. En la Figura 4 se
muestran los campos de esta vista.
Para conocer los objetos que un usuario ha creado y de qué tipo son puede realizar la
siguiente consulta:
SET PAGESIZE 60
COLUMN OBJECT_NAME FORMAT A50
En el código anterior se han utilizado dos instrucciones antes de la consulta para mejorar
la salida por pantalla. Con la instrucción SET PAGESIZE 60 establecemos el número de
líneas por página a 60 (de forma que si la consulta devuelve más de 60 registros se repiten
los nombres de las columnas como encabezado de página) y con la instrucción COLUMN
aplicamos al campo OBJECT_NAME de la consulta un formato alfanumérico de longitud de
40 en vez de 120, que es el tamaño que tiene asignado este campo en la vista
USER_OBJECT.
Los usuarios de una BD pueden disponer de diferentes tipos de privilegios o permisos para
tener acceso a diferentes datos y/o realizar acciones en una BD. Los roles se utilizan para
agrupar privilegios y/o otros roles. Constituyen una forma de agrupar un conjunto de
múltiples privilegios o roles bajo un nombre.
Un usuario pueden saber cuál es la información relacionada con sus roles y privilegios
consultando las vistas USER_ROLE_PRIVS, USER_SYS_PRIVS y USER_TAB_PRIVS.
El texto nombreusuarios se refiere a los nombres de todos los usuarios a los que se dan
privilegios separados por “,”.
En el segundo caso se dan permisos sobre tablas o vistas a los usuarios que se
especifiquen. En esta instrucción se puede añadir al final el texto WITH GRANT OPTION,
de forma que se permite que al usuario al que conceden los permisos pueda a su vez
conceder este permiso sobre el recurso (tabla o vista) a otros usuarios.
Cuando un usuario tiene permisos de acceso sobre una vista/tabla de otro usuario puede
acceder a este recurso indicando delante del nombre de la vista o tabla, el nombre del
usuario propietario de la misma y un “.”. Por ejemplo, si USUARIO1 ha compartido con el
USUARIO2 la tabla EMPLEADO con permiso de consulta, USUARIO2 consultará esta
información de la siguiente forma:
3. Copias de seguridad
La versión de Oracle instalada dispone de menús para realizar copias de seguridad
(Backup) de la BD y restaurarla (Restore Database). Al realizar la copia de seguridad
utilizando los menús se muestra una ventana con los comandos que se van ejecutando
para llevar a cabo la acción.