Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivos:
•Diferenciar los privilegios del sistema de los de objeto.
•Otorgar privilegios en tablas.
•Ver privilegios en el diccionario de datos.
•Otorgar roles.
•Distinguir entre privilegios y roles.
Control de Acceso a Usuarios.
En un entorno de varios usuarios, necesita mantener la seguridad del acceso y el uso de
la base de datos. Con la seguridad de base de datos de Oracle Server, puede:
•Controlar el acceso a la base de datos.
•Otorgar acceso a objetos específicos de la base de datos.
•Confirmar los privilegios otorgados y recibidos con el diccionario de datos Oracle.
•Crear sinónimos para objetos de base de datos.
Esquemas.
Un esquema es una recopilación de objetos como, por ejemplo, tablas, vistas y
secuencias. El esquema es propiedad de un usuario de base de datos y tiene el mismo
nombre que el usuario.
1
•Hay más de 100 privilegios disponibles.
•El administrador de la base de datos tiene privilegios del sistema de alto nivel para
tareas como, por ejemplo:
–Creación de usuarios nuevos.
–Eliminación de usuarios.
–Eliminación de tablas.
–Realización de copias de seguridad de tablas.
Creación de un Usuario.
Para crear el usuario, el DBA ejecuta la sentencia CREATE USER. El usuario no tiene
ningún privilegio en ese momento. Por tanto, el DBA puede otorgar privilegios a ese
usuario. Estos privilegios determinan lo que el usuario podrá hacer en el nivel de base
de datos.
Sintaxis:
CREATE USER user
IDENTIFIED BY password;
En la sintaxis:
•user es el nombre del usuario que se va a crear.
•Password especifica que el usuario se debe conectar con esta contraseña.
Ejemplos:
CREATE USER vmoquete
IDENTIFIED BY "MagicPL/SQL";
/*En este ejemplo(conectado con hr) creamos el usuario: vmoquete, con
la siguiente contraseña: MagicPL/SQL(sin las comillas dobles).*/
Privilegios de Usuario Típicos.
•Una vez creado el usuario, el DBA le puede otorgar privilegios del sistema específicos.
2
•Un desarrollador de aplicaciones, por ejemplo, puede tener los siguientes privilegios
del sistema:
Sintaxis:
GRANT privilege [, privilege...]
TO user [, user| role, PUBLIC...];
En la sintaxis:
•privilege es el privilegio del sistema que se va a otorgar.
•user |role|PUBLIC es el nombre del usuario, el nombre del rol o, en el caso
de PUBLIC, designa que el privilegio se otorga a todos los usuarios.
Ejemplo:
GRANT create session, create table,
create sequence, create view
TO vmoquete;
/*El usuario vmoquete fue creado en un ejemplo previo a este, pero no se le
asigno ningún privilegio por lo cual no tenia ningún tipo de acceso al sistema, en este
ejemplo le otorgamos algunos privilegios para que pueda conectarse y crear ciertos
objetos.*/
Los Roles.
Un rol es un grupo especificado de privilegios relacionados que se pueden otorgar al usuario.
Este método facilita la revocación y el mantenimiento de privilegios.
Un usuario puede tener acceso a varios roles y se puede asignar a varios usuarios el mismo rol.
Los roles se suelen crear para una aplicación de base de datos.
3
Creación y Asignación de un Rol
En primer lugar, el DBA debe crear el rol. Después, el DBA puede asignar privilegios al rol y
asignar el rol a usuarios.
Sintaxis:
CREATE ROLE role;
En la sintaxis:
•role es el nombre del rol que se va a crear
Ejemplo:
CREATE ROLE auditor;
GRANT select on hr.employees
TO auditor;
---
GRANT auditor
TO vmoquete;
/*El ejemplo anterior muestra como crear un role, como otorgar privilegios a
dicho role y
Luego como asignar el role a los usuarios.*/
Otorgando Privilegios de Objeto.
Los privilegios de objeto varían de un objeto a otro.
Un propietario tiene todos privilegios en el objeto.
Un propietario puede otorgar privilegios específicos en el objeto del que es propietario.
Sintaxis:
GRANT object_priv|all| [(columns)]
ON object
TO {user|role|PUBLIC}
[WITH GRANT OPTION];
En la sintaxis:
4
•object_priv es un privilegio de objeto que se va a otorgar.
•ALL especifica todos los privilegios de objeto.
•columns especifica la columna de una tabla o de una vista en la que se otorgan los
privilegios.
•ON object es el objeto en el que se otorgan privilegios.
•TO identifica a quién se otorga el privilegio.
•PUBLIC otorga privilegios de objeto a todos los usuarios.
•WITH GRANT OPTION permite a la persona a la que se otorga el privilegio otorgar
privilegios de objeto a otros usuarios y roles.
Directrices:
•Para otorgar privilegios en un objeto, éste debe estar en el esquema o le deben haber
otorgado los privilegios de objeto con la cláusula WITH GRANT OPTION.
•Un propietario de objeto puede otorgar cualquier privilegio de objeto a cualquier otro
usuario o rol de la base de datos.
•El propietario de un objeto adquiere automáticamente todos los privilegios de objeto en
ese objeto.
Nota: Los DBA suelen asignar privilegios del sistema; cualquier usuario propietario de
un objeto puede otorgar privilegios de objeto.
Ejemplos:
GRANT select
ON hr.jobs
TO sue, scott;
/*En ahora los usuarios sue y rich pueden consultar la tabla jobs del esquema hr.*/
---
GRANT all
ON hr.departments
TO vmoquete;
/*Luego de este GRANT el usuario vmoquete puede consultar, insertar, actualizar y
eliminar registros en la tabla departments del esquema hr.*/
---
GRANT update (city, location_id) ON hr.locations TO auditor, scott;
/*En este ejemplo se le otorga el privilegio para actualizar los
campos city y location_id de la tabla locations de hr al role auditor y al usuario scott.*/
---
Otorgando el Privilegio de Otorgar Privilegios.
5
Ejemplos:
CREATE USER other_user
IDENTIFIED BY "MagicPL/SQL";
/
*Aquí(conectado con hr) creamos el usuario other_user con la contraseña:
MagicPL/SQL
---
GRANT CREATE SESSION
TO other_user;
/
*Aquí le otorgamos el privilegio para que pueda crear sesiones, osea conectarse a la
Base de Datos.*/
GRANT select, insert
ON hr.jobs
TO vmoquete
WITH GRANT OPTION;
/
*Aquí otorgamos el privilegio de consultar e insertar en la tabla jobs de hr al
usuario vmoquete, debido a que especificamos WITH GRANT OPTION, el usuario
puede transferir estos privilegios al usuario other_user.*/
GRANT select
ON hr.countries
TO PUBLIC;
/*Con este GRANT permitimos a todos los usuarios de la Base de Datos consultar en la
tabla countries de HR.*/
Confirmación de Privilegios Otorgados.
Si intenta realizar una operación no autorizada, como suprimir una fila de una tabla para
la que no tiene el privilegio DELETE, Oracle Server no permite que la operación se
realice.
Si recibe el mensaje de error de Oracle Server “table or view does not exist”, es porque
ha realizado una de estas acciones:
•Ha especificado una tabla o una vista que no existen
•Ha intentado realizar una operación en una tabla o en una vista para la que no tiene el
privilegio adecuado
Puede acceder al diccionario de datos para ver los privilegios de los que dispone. El
gráfico describe varias vistas de diccionario de datos.
6
USER_ROLE_PRIVS Roles a los que puede acceder el usuario.
7
usuario vmoquete revoca los privilegios del usuario other_user, los privilegios
otorgados a los usuarios user_x y user_nx también se revocan.
Bibliografías: