Está en la página 1de 17

Administración de usuarios en

Oracle Database
PUBLICIDAD

[5.1] introducción
Todo acceso a una base de datos requiere conectar mediante un usuario y contraseña. Dicho usuario dará
derecho a utilizar ciertos objetos de la base de datos, pero tendrá restringido (salvo que se trate de un
superadministrador) el uso de otros.

A los usuarios se les asigna una serie de privilegios que son los que dan permiso de uso a ciertos objetos.
Estos privilegios suelen agruparse en lo que se conoce como roles, que permiten estructurar mejor los
permisos que se conceden a los usuarios. El perfil del usuario será el conjunto de permisos y restricciones
que se aplican a dicho usuario.

Por ello cuando un usuario conecta debe probar que es quien dice ser (normalmente mediante una
contraseña), es decir se autentifica. Por otro lado esta autentificación dará lugar a unos privilegios (unos
derechos) y unas restricciones

Todo lo que se explica en esta unidad se refiere a la gestión de usuarios en la base de datos Oracle 11g.

[5.2] cuentas y permisos administrativos


[5.2.1]cuentas administrativas
Durante la instalación de Oracle se instalan dos cuentas administrativas y otras dos con permisos especiales
para tareas de optimización y monitorización de la base de datos:

▪ SYS. Inicialmente posee la contraseña CHANGE_ON_INSTALL que, lógicamente, hay que cambiar
inmediatamente en la instalación. SYS toma rol de DBA (es decir, de superadministrador) y es en su
esquema donde se crea el diccionario de datos; por lo que no conviene de ninguna manera crear
otro tipo de elementos en su esquema; es decir, el usuario SYS no debe crear tablas, ni vistas no
ningún otro objeto de la base de datos.
▪ SYSTEM. Posee también el rol DBA y se crea durante la instalación. Como antes, la
contraseña MANAGER que tiene por defecto se debería cambiar en la instalación. En su esquema
se suelen crear tablas y vistas administrativas (pero no se deberían crear otro tipo de tablas).
▪ SYSMAN. Usado para realizar tareas administrativas con la aplicación Database
Control del Enterprise Manager.
▪ DBSMNP. Usuario que tiene permisos para monitorizar Enterprise Manager.

[5.2.2]privilegios administrativos
Oracle posee dos privilegios de sistema asociados a tareas administrativas, son:

▪ SYSDBA. Con capacidad de parar e iniciar (instrucciones SHUTDOWN y STARTUP) la instancia de


base de datos; modificar la base de datos (ALTER DATABASE), crear y borrar bases de datos
(CREATE y DROP DATABASE), Crear el archivo de parámetros (CREATE SPFILE), cambiar el

[Fecha] 1
modo de archivado de la base de datos, recuperar la base de datos y además incluye el privilegio de
sistema RESTRICTED SESSION. En la práctica sus capacidades son las asociadas al usuario SYS.
▪ SYSOPER. Permite lo mismo que el anterior salvo: crear y borrar la base de datos y recuperar en
todas las formas la base de datos (hay modos de recuperación que requieren el privilegio anterior).

La vista V$PWFILE_USERS nos permite examinar a los usuarios administrativos.

[5.3] propiedades de los usuarios de


Oracle
A los usuarios de Oracle se les puede asignar la configuración referida a:

▪ Nombre de usuario. No puede repetirse y como máximo debe tener 30 caracteres que sólo podrán
contener letras del alfabeto inglés, números, el signo dólar y el signo de guión bajo (_). Además el
nombre no puede comenzar con un número.
▪ Configuración física. Se refiere al espacio asociado al usuario para almacenar sus datos (lo que
Oracle llama tablespace) y la cuota (límite de almacenamiento) que se le asigna a dicho usuario y
mediante la que se establece el espacio máximo que el usuario puede gastar en el tablespace.
▪ Perfil asociado. El perfil del usuario indica los recursos y configuración que tomará el usuario al
sistema
▪ Privilegios y roles. Permiten especificar los permisos que posee el usuario.
▪ Estado de la cuenta de usuario:
o Abierta. El usuario puede conectar y realizar sus acciones habituales
o Bloqueada. El usuario no podrá conectar mientras siga en estado bloqueado. El bloqueo lo
realiza el DBA:
o ALTER USER usuario ACCOUNT LOCK
o Expirada. La cuenta agotó el tiempo máximo asignado a ella. Para salir de este estado, el
usuario/a debe resetear su contraseña de usuario.
o Expirada y bloqueada.
o Expirada en periodo de gracia. Está en los últimos momentos de uso antes de pasar a
estado de expirada

[5.4] autentificación
La autentificación define la forma en la que el usuario verifica quién es. Hay métodos de autentificación más
seguros que otros. Asegurar la autentificación implicaría asegurar el medio la comunicación entre usuario y
base de datos con protocolos de cifrado. Por otro lado hay que proteger especialmente a los usuarios
administradores.

[5.4.1]autentificación por el sistema operativo


Se permite el uso sólo en usuarios con privilegios administrativos. En el sistema operativo en el que se
instale Oracle se crean dos grupos de usuarios relacionados con los dos privilegios de
sistema SYDBA y SYSOPER. En Windows se llaman ORA_DBA y ORA_OPER respectivamente, en Linux
normalmente son dba y oper.

Los usuarios de esos grupos conectarían mediante CONNECT / AS SYSDBA o CONNECT / AS SYSOPER.

[Fecha] 2
Otra posibilidad es conectar con:

CONNECT /@servicioRed AS SYSDBA

En este caso usamos los privilegios del sistema operativo para conectar con una base de datos remota cuyo
nombre de servicio de red se indique. Esta forma sólo vale para máquinas dentro de un dominio Windows.

[5.4.2]autentificación por archivo de


contraseñas
Se usa también para usuarios administrativos, especialmente cuando no se confía la autentificación vista en
el apartado anterior.

Para usar esta forma de autentificación los usuarios de tipo SYSDBA o SYSOPER indican su nombre de
usuario y contraseña al conectar (opcionalmente indican el host y/o nombre de servicio al que se desean
conectar) esos datos se contrastarán con los del archivo de contraseñas utilizado.

Esta forma (y la anterior) permite conectar la base de datos aunque no esté montada todavía la base de
datos.

La utilidad ORAPWD permite crear, si no existe, el archivo de contraseñas:

ORAPWD FILE=ruta [ENTRIES=n [FORCE=y|n[IGNORECASE=y|n]]]

Funcionamiento:

▪ FILE. Permite indicar el nombre del archivo de contraseñas


▪ ENTRIES. Indica el máximo número de contraseñas que admitirá el archivo
▪ FORCE. En caso de darle el valor y (de yes, sí) sobrescribe las contraseñas cuando asignemos una
nueva a un usuario administrativo
▪ IGNORECASE. No tiene en cuenta mayúsculas ni minúsculas en las contraseñas.

Por otra lado el parámetro de sistema REMOTE_LOGIN_PASSWORDFILE (modificable con el


comando ALTER SYSTEM SET…) permite indicar la forma en la que funciona el archivo de contraseñas.
Valores posibles:

▪ NONE. No permite usar el archivo de contraseñas, las conexiones de usuarios con privilegios
administrativos tendrán que usar otros métodos.
▪ EXCLUSIVE. El archivo de contraseñas se usa sólo en la instancia actual.
▪ SHARED: Se comparte el archivo de contraseñas entre varias instancias de tipo Real Application
Cluster de Oracle (para bases de datos distribuidas). En este caso no se pueden cambiar las
contraseñas de los usuarios administrativos.

[5.4.3]autentificación por contraseña en el


diccionario de datos
Es la forma habitual de autentificarse de los usuarios normales (los que no son administradores). En este
caso los usuarios son autentificados mediante una contraseña que se contrastará en el diccionario de datos,
que es donde se almacenan estas contraseñas.

Está configuración requiere la base de datos montada y abierta (al tener que usar el diccionario de datos).

[Fecha] 3
La contraseña se pasa encriptada desde el ordenador cliente al servidor mediante el algoritmo AES.

[5.4.4]autentificación externa
Oracle delega la autentificación a un servicio externo que se asociará a Oracle. Ejemplos de servicios
externos son Kerberos o RADIUS, este último sólo disponible en Windows. Requiere el uso de las mejoras
de seguridad avanzada de Oracle.

[5.4.5]autentificación global
Se trata de utilizar un servicio LDAP para realizar la autentificación. Oracle dispone de un servicio LDAP
global integrado en Oracle Applications (plataforma de Oracle para le creación de aplicaciones) que se
llama Oracle Internet Directory.

Si los usuarios sólo están dados de alta en el directorio externo, usarán todos la misma cuenta de Oracle;
para independizarles se requiere darles de alta en ambos servicios (Oracle y el Oracle Internet Directory).

[5.5] control de usuarios en Oracle


[5.5.1]creación de usuarios en Oracle
La sentencia de creación de usuarios (que es compatible con SQL estándar)
es:
CREATE USER nombre IDENTIFIED BY contraseña [opciones]

El formato completo de la instrucción con todas sus cláusulas es:


CREATE USER nombre {IDENTIFIED BY contraseña |
EXTERNALLY |
GLOBALLY AS nombreGlobal}
[DEFAULT TABLESPACE tableSpacePorDefecto]
[TEMPORARY TABLESPACE tableSpacetTemporal]
[QUOTA {cantidad [K|M] | UNLIMITED} ON tablespace
[QUOTA {cantidad [K|M] | UNLIMITED} ON tablespace […]]
]
[PASSWORD EXPIRE]
[ACCOUNT {UNLOCK|LOCK}];
[PROFILE {perfil | DEFAULT}]

Sólo la primera línea es obligatoria, el resto posee opciones por defecto que se
aplican si no se especifica cada apartado (no hace falta especificar todos, sólo
las líneas que nos interesen).

Ejemplo:
CREATE USER jsanchez IDENTIFIED BY Caracola
DEFAULT TABLESPACE Usuarios
QUOTA 15M ON Usuarios //Se dan 15MBytes de espacio en el tablespace
ACCOUNT LOCK; //La cuenta estará bloqueada

[Fecha] 4
La contraseña, si no se usan comillas dobles, no puede tener ni espacios en
blanco ni caracteres nacionales como la eñe. En caso de querer usar estos
símbolos se usan comillas dobles, lo que permitirá establecer contraseñas más
complejas.

[5.5.2]modificación de usuarios
Cada parámetro indicado anteriormente se puede modificar mediante la
instrucción ALTER USER que se utiliza igual que CREATE USER. Ejemplo:
ALTER USER jsanchez QUOTA UNLIMITED ON usuarios

[5.5.3]borrado de usuarios
Se realiza mediante:
DROP USER usuario [CASCADE]

La opción CASCADE elimina los objetos del esquema del usuario antes de
eliminar al propio usuario. Es obligatorio si el esquema contiene objetos.´

[5.5.4]consultar usuarios
La vista administrativa DBA_USERS muestra la lista y configuración de todos
los usuarios del sistema. Para observar la estructura de la vista, siempre es
conveniente usar DESCRIBE DBA_USERS con el fin de consultar las
columnas que nos interesen más

[5.6] control de privilegios en Oracle


Los privilegios son permisos que damos a los usuarios para que puedan realizar
ciertas operaciones con la base de datos. En Oracle hay más de cien posibles
privilegios. Se dividen en:

▪ Privilegios de sistema. Son permisos para modificar el funcionamiento


de la base de datos. Son cambios, en definitiva, que afectan a todos los
usuarios y usuarias.
▪ Privilegios de objeto. Son permisos que se aplican a un objeto concreto
de la base de datos.

[5.6.1]privilegios de sistema
Se comentan algunos de los privilegios de sistema más importantes

[Fecha] 5
Privilegio Significado
CREATE SESSION Permite al usuario conectar con la base de datos
Permite al usuario establecer sesión con la base de datos en caso de que la
base de datos esté en modo restringido mediante la instrucción:
ALTER SYSTEM ENABLE RESTRICTED
RESTRICTED SESSION
SESSION
Sólo los usuarios con este privilegio puede conectar con la base de datos si
ésta se encuentra en este modo.
ALTER DATABASE Permite modificar la estructura de la base de datos
ALTER SYSTEM Permite modificar los parámetros y variables del sistema
CREATE TABLE Permite crear tablas. Incluye la posibilidad de borrarlas.
GRANT ANY OBJECT Permite conceder privilegios sobre objetos que no son del usuario (pertenecen
PRIVILEGE a otros usuarios) a terceros usuarios.
CREATE ANY TABLE Permite crear tablas en otros esquemas de usuario
DROP ANY TABLE Permite borrar tablas de otros usuarios
SELECT ANY TABLE Permite seleccionar datos en tablas de otros usuarios
INSERT ANY TABLE Permite añadir datos en tablas de otros usuarios
UPDATE ANY TABLE Permite eliminar datos en tablas de otros usuarios
DELETE ANY TABLE Permite eliminar datos en tablas de otros usuarios

En la tabla anterior se ha hecho hincapié en los privilegios referidos a las tablas,


para otros objetos el funcionamiento es similar: igual que hay CREATE TABLE,
se puede usar CREATE VIEW para las vistas
o INDEX, TRIGGER, PROCEDURE, SEQUENCE, SYNONYM, TYPE,… y de
esa forma podemos conceder privilegio de creación de otros objetos. Lo mismo
con el resto de operaciones

Hay dos privilegios especiales que permiten conceder nivel de DBA,


son: SYSDBA y SYSOPER. Se han comentado anteriormente.

La lista completa de privilegios es:


Privilegio Significado
Sesiones
ALTER SESSION Modificar el funcionamiento de la sesión
ALTER RESOURCE
Modifica los parámetros de cálculo de coste de la sesión
COST
RESTRICTED
Conectar aunque la base de datos se haya iniciado en modo restringido
SESSION
Base de datos y sistema
ALTER DATABASE Modificar la base de datos (privilegio de gran capacidad administrativa)
ALTER SYSTEM Modificar los parámetros del sistema
AUDIT SYSTEM Auditar la base de datos
Usuarios, roles, privilegios y perfiles
CREATE USER Crear usuarios pudiendo indicar tablespace por defecto, cuotas y perfiles
Modificar al usuario. Permite cambiar la contraseña y modo de autentificación,
ALTER USER
tablespace por defecto, cuota de uso de disco, roles y el perfil del usuario
DROP USER Borrar usuario
CREATE PROFILE Crear perfiles

[Fecha] 6
Privilegio Significado
ALTER PROFILE Modificar perfiles
DROP PROFILE Borrar perfiles
CREATE ROLE Crear roles
ALTER ANY ROLE Modificar roles
GRANT ANY ROLE Conceder roles
GRANT ANY
Conceder privilegios de sistema
PRIVILEGE
Directorios
CREATE ANY
Crear directorios
DIRECTORY
DROP ANY
Borrar directorios
DIRECTORY
Tablespaces (espacios de tabla)
CREATE
Crear tablespaces
TABLESPACES
ALTER
Modificar tablespaces
TABLESPACE
DROP TABLESPACE Borrar tablespaces
MANAGE Administrar el espacio de tablas para poder hacer copia de seguridad o
TABLESPACE simplemente quedar online u offline el tablespace
UNLIMITED Usa cuota ilimitada al escribir en cualquier tablespace. Este privilegio elimina
TABLESPACE las cuotas establecidas sobre el usuario, si las hubiera.
Tablas
Crear tablas en el esquema del usuario, incluye insertar, modificar y eliminar
CREATE TABLE
datos de la misma; así como eliminar la propia tabla
ALTER ANY TABLE Modificar tablas de cualquier usuario
BACKUP ANY
Utilizar la utilidad Export para copiar datos de otros esquemas.
TABLE
CREATE ANY
Crear tablas en cualquier esquema
TABLE
DELETE ANY
Borrar filas de tablas en cualquier esquema
TABLE
DROP ANY TABLE Borrar tablas en cualquier esquema
INSERT ANY TABLE Añadir datos a cualquier tabla
SELECT ANY TABLE Seleccionar datos de tablas en cualquier esquema
UPDATE ANY
Modificar datos de tablas de cualquier esquema
TABLE
LOCK ANY TABLE Bloquear tablas, vistas e instantáneas en cualquier esquema
FLASHBACK ANY Realizar acción de flashback en tablas, vistas e instantáneas en cualquier
TABLE esquema
Vistas
CREATE VIEW Crear vistas en el esquema del usuario
CREATE ANY VIEW Crear vistas en cualquier esquema
DROP ANY VIEW Borrar cualquier vista en cualquier esquema
UNDER ANY VIEW Crear subvistas
Instantáneas (Snapshots o vistas materializadas)
CREATE
MATERIALIZED Crear vistas materializadas (instantáneas)
VIEW

[Fecha] 7
Privilegio Significado
CREATE ANY
MATERIALIZED Crear vistas materializadas (instantáneas) en cualquier esquema
VIEW
ALTER ANY
MATERIALIZED Modificar vistas materializadas (instantáneas) en cualquier esquema
VIEW
DROP ANY
MATERIALIZED Borrar vistas materializadas (instantáneas) en cualquier esquema
VIEW
GLOBAL QUERY Permite realizar operaciones de lectura escritura en instantáneas que usan
REWRITE tablas de otros esquemas
CREATE SNAPSHOT Crear instantáneas (obsoleto)
ALTER ANY
Modificar instantáneas de cualquier usuario (obsoleto)
SNAPSHOT
CREATE ANY
Crear instantáneas a cualquier usuario (obsoleto)
SNAPSHOT
DROP ANY
Borrar instantáneas (obsoleto)
SNAPSHOT
PL/SQL
CREATE
Crear procedimientos y funciones PL/SQL
PROCEDURE
ALTER ANY
Modificar procedimientos y funciones de cualquier usuario
PROCEDURE
CREATE ANY
Crear funciones y procedimientos en cualquier esquema
PROCEDURE
DROP ANY
Borrar cualquier procedimiento en cualquier esquema
PROCEDURE
EXECUTE ANY
Ejecutar cualquier procedimiento en cualquier esquema
PROCEDURE
CREATE TRIGGER Crear triggers
ALTER ANY
Modificar triggers de cualquier usuario
TRIGGER
CREATE ANY
Crear triggers en cualquier esquema
TRIGGER
DROP ANY
Borrar triggers de cualquier esquema
TRIGGER
ADMINISTER
Crear triggers de sistema (requiere además el privilegio CREATE
DATABASE
TRIGGER)
TRIGGER
CREATE LIBRARY Crear librerías de procedimientos y funciones en el esquema de usuario
CREATE ANY
Crear librerías de procedimientos y funciones en cualquier esquema
LIBRARY
DROP ANY
Borrar cualquier trigger
TRIGGER
DROP LIBRARY Borrar librería de procedimientos y funciones en el esquema de usuario
DROP ANY
Borrar librerías de procedimientos y funciones en cualquier esquema
LIBRARY
EXECUTE ANY
Ejecutar cualquier librería
LIBRARY
Tipos de datos

[Fecha] 8
Privilegio Significado
CREATE TYPE Crear tipos de datos personales
ALTER ANY TYPE Modificar tipos de datos personales en cualquier usuario
CREATE ANY TYPE Crear tipos de datos en cualquier esquema
DROP ANY TYPE Borrar tipos de datos de cualquier esquema
EXECUTE ANY
Permite invocar a tipos de datos personales presentes en cualquier esquema
TYPE
Índices
Modificar índices de la base de datos (incluye modificar claves primarias,
ALTER ANY INDEX
secundarias,…)
CREATE ANY INDEX Crear índices en cualquier esquema
DROP ANY INDEX Borrar índices en cualquier esquema
Secuencias y sinónimos
ALTER ANY
Modificar secuencias de cualquier usuario
SEQUENCE
CREATE ANY
Crear secuencias en cualquier esquema
SEQUENCE
CREATE ANY
Crear sinónimos en cualquier esquema
SYNONYM
CREATE SEQUENCE Crear secuencias
CREATE SYNONYM Crear sinónimos
CREATE PUBLIC
Crear sinónimos públicos
SYNONYM
DROP PUBLIC
Borrar sinónimos públicos
SYNONYM
CREATE ANY
Crear secuencias en cualquier esquema
SEQUENCE
DROP ANY
Borrar secuencias en cualquier esquema
SEQUENCE
DROP ANY
Borrar sinónimos en cualquier esquema
SYNONYM
SELECT ANY
Seleccionar cualquier secuencia de cualquier esquema
SEQUENCE
Clusters
CREATE CLUSTER Crea y modifica clusters en el esquema actual
ALTER ANY
Modificar clusters
CLUSTER
CREATE ANY
Crear clusters en cualquier esquema
CLUSTER
DROP ANY
Borrar cualquier cluster
CLUSTER
Segmentos de rollback
CREATE
ROLLBACK Crear segmentos de rollback
SEGMENT
ALTER ROLLBACK
Modificar segmentos de rollback
SEGMENT
DROP ROLLBACK
Borrar segmento de rollback
SEGMENT
Enlaces a base de datos

[Fecha] 9
Privilegio Significado
CREATE DATABASE
Crear enlaces privados a bases de datos en el esquema del usuario
LINK
CREATE PUBLIC
Crear enlaces públicos a bases de datos
DATABASE LINK
CREATE DATABASE
Modificar enlaces privados a bases de datos
LINK
CREATE PUBLIC
Modificar enlaces públicos a bases de datos
DATABASE LINK
DROP PUBLIC
Borrar enlaces públicos a bases de datos
DATABASE LINK
Programación de tareas
CREATE JOB Crear trabajo planificado en el esquema actual
Crea, modifica y elimina tareas, programas y credenciales de cualquier
CREATE ANY JOB esquema (excepto SYS). Esto permite ejecutar código en cualquier esquema
de cualquier usuario.
CREATE EXTERNAL Crear un trabajo en el esquema de usuario procedente del planificador de tareas
JOB del sistema operativo
EXECUTE ANY Ejecutar cualquier programa presente en un trabajo planificado del esquema
PROGRAM de usuario.
EXECUTE ANY
Asignar cualquier clase a un trbajo en el esquema de usuario.
CLASS
MANAGE
Administrar el planificador de tareas,
SCHEDULER
Varios
ANALYZE ANY Analizar cualquier tabla, clúster o índice en cualquier esquema.
ANALYZE ANY
Analizar cualquier elemento del diccionario de datos
DICTIONARY
SELECT ANY
Realizar SELECT sobre las vistas del diccionario de datos
DICTIONARY
AUDIT ANY Auditar a cualquier objeto de la base de datos
BECOME USER Convertirse en otro usuario al utilizar algunas de las utilidades de Oracle
COMMENT ANY Realizar comentarios sobre tablas, columnas y vistas en cualquier esquema de
TABLE la base de datos
Seleccionar los datos de la
SELECT ANY
vista FLASHBACK_TRANSACTION_QUERY que controla el proceso de
TRANSACTION
la actual operación flashback.
FORCE ANY Forzar aceptar (COMMIT) las transacciones en duda en un sistema
TRANSACTION distribuido de bases de datos en cualquier conexión
FORCE
Forzar aceptar (COMMIT) la transacción actual en caso de duda.
TRANSACTION
SYSDBA Privilegio general de administrador
Varios
SYSOPER Privilegio general de administrador (más bajo que el anterior)
FLASHBACK
ARCHIVE Crea, elimina o modifica cualquier archivo de flashback
ADMINISTER
DEBUG CONNECT
Conectar la sesión a un depurador
SESSION
DEBUG ANY
Conectar procedimientos, funciones y/o código Java a un depurador
PROCEDURE

[Fecha] 10
[5.6.2]conceder privilegios
Se usa con la instrucción GRANT que funciona así:
GRANT privilegio1 [,privilegio2[,…]] TO usuario
[WITH ADMIN OPTION];

La opción WITH ADMIN OPTION permite que el usuario al que se le concede


el privilegio puede conceder dicho privilegio a otros usuarios. Es, por tanto, una
opción a utilizar con cautela.

Ejemplo:
GRANT CREATE SESSION, ALTER SESSION, CREATE TABLE,
CREATE VIEW, CREATE SYNONYM, CREATE SEQUENCE,
CREATE TRIGGER, CREATE PROCEDURE, CREATE TYPE
TO jsanchez;

[5.6.3]revocar privilegios
Retira privilegios concedidos a un usuario. Se realiza con la
instrucción REVOKE que funciona de esta forma:
REVOKE privilegio1 [,privilegio2 [,…]] FROM usuario;

Al revocar los privilegios, las acciones llevadas a cabo con ellos (borrar,
modificar,…) no se anulan.

[5.6.4]privilegios de objeto
Las instrucciones vistas anteriormente otorgan o quitan permisos generales, es
decir dictan qué operaciones, en general, puede realizar un usuario.

Los privilegios de objeto marcan qué operaciones le están permitidas a un


usuario realizar sobre el objeto

Sintaxis:
GRANT {privilegio [(listaColumnas)] [,privilegio [(listaColumnas)] [,…]] |
ALL [PRIVILEGES]}
ON [esquema.]objeto
TO {usuario | rol | PUBLIC} [,{usuario | rol | PUBLIC} [,…]]
[WITH GRANT OPTION]

La opción ALL concede todos los privilegios posibles sobre el objeto. Se


pueden asignar varios privilegios a la vez y también varios posibles usuarios.
La opción WITH GRANT OPTION permite al usuario al que se le conceden los

[Fecha] 11
privilegios, que pueda, a su vez, conceder esos mismos privilegios a otro
usuario.

Ejemplo de uso de GRANT con privilegios de objeto:


GRANT UPDATE, INSERT ON jsanchez.personas TO anozal;

En la siguiente tabla se enumeran los posibles privilegios que se pueden aplicar


a un determinado objeto:
Privilegio Aplicable a
SELECT Tablas, vistas, instantáneas, secuencias
INSERT Tablas, vistas,
UPDATE Tablas, vistas
DELETE Tablas, vistas
ALTER Tablas, secuencias
EXECUTE Procedimientos, funciones, paquetes, sinónimos, programas en directorios
INDEX Tablas (para crear índices en la misma)
REFERENCES Tablas (para crear claves secundarias, FOREIGN KEY)
UNDER Vistas, para crear subvistas
DEBUG Depurar procedimientos y funciones mediante programa externo
ON COMMIT REFRESH Actualizar la vista materializada (o instantánea) al realizar un COMMIT
QUERY REWRITE Escribir en la vista materializada (o instantánea)
READ Directorios
WRITE Directorios
FLASHBACK ARCHIVE Archivos de datos flashback (activar o desactivar)

[5.6.5]quitar privilegios de objeto


Para hacerlo, la sintaxis es:
REVOKE {privilegio1 [,privilegio2] [,…]] |
ALL [PRIVILEGES]}
ON [esquema.]objeto
FROM {usuario | rol | PUBLIC} [,{usuario | rol | PUBLIC} [,…]]
[CASCADE CONSTRAINTS]

CASCADE CONSTRAINTS elimina cualquier restricción que impida el borrado


del privilegio.

Sólo puede revocar los privilegios de objeto concedidos, el usuario que


concedió dichos privilegios.

[5.6.6]mostrar información sobre privilegios


Las vistas que permiten mostrar información sobre privilegios son:

[Fecha] 12
Vista Significado
DBA_SYS_PRIVS Privilegios de sistema asignados a usuarios y roles
DBA_TAB_PRIVS Lista de todos los privilegios de todos los objetos de la base de datos
DBA_COL_PRIVS Lista de todos los privilegios aplicados a columnas de la base de datos
SESSION_PRIVS Privilegios en activo para el usuario y sesión actuales
USER_SYS_PRIVS Privilegios de sistema asignados al usuario
USER_TAB_PRIVS_MADE Privilegios de objeto asignados a los objetos del usuario actual
USER_TAB_PRIVS_RECD Privilegios de objeto (de otros usuarios) concedidos al usuario actual
USER_COL_PRIVS_MADE Privilegios de objeto asignados a columnas de objetos del usuario actual
Privilegios asignados a columnas de objetos (de otros usuarios) y
USER_COL_PRIVS_RECD
concedidos al usuario actual

[5.6.7]administración de roles en Oracle


Los roles son privilegios aglutinados sobre un mismo nombre, bajo la idea de
que ese conjunto denote un uso habitual sobre la base de datos. Gracias a los
roles se facilita la asignación de privilegios a los usuarios. Un usuario puede
tener asignados varios roles y viceversa.

[5.6.8]creación de roles
Los roles se crean usando esta sintaxis
CREATE ROLE rol [NOT IDENTIFIED |
IDENTIFIED {BY password | EXTERNALLY | GLOBALLY | USING package}];

La opción IDENTIFIED hace que el rol sólo pueda utilizarse si el usuario se


identifica con el método que indiquemos en esta instrucción. Las formas de
identificarse son las mismas formas que se utilizan al identificar un usuario
(vistas anteriormente), salvo que ahora disponemos de una nueva: la
opción PACKAGE que hace que el rol sólo se pueda utilizar si usamos el
paquete de aplicaciones indicado.

Por defecto un rol no requiere identificación.

[5.6.9]modificación de roles
Disponemos de la instrucción ALTER ROLE permite modificar la configuración
del rol. Tiene las mismas opciones que CREATE ROLE y sólo se usa si
deseamos establecer un nuevo método para autentificarnos.

[5.6.10]asignar y retirar privilegios a roles


Se realiza con la instrucción GRANT y se usa igual que cuando establecemos
permisos a los usuarios, en la sintaxis de los comandos GRANT y REVOKE

[Fecha] 13
vistas anteriormente, simplemente se indicaría un nombre de rol en lugar de un
nombre de usuario. Por ejemplo si deseamos asignar los privilegios CREATE
TABLE y CONNECT a un rol llamado rol1. Se haría:
GRANT CREATE TABLE, CONNECT TO rol1;

De la misma forma, podemos quitar privilegios asignados a un rol mediante el


comandol REVOKE:
REVOKE CREATE TABLE FROM rol1;

[5.6.11]asignar roles a usuarios


La sintaxis completa para asignar roles a un usuario es:
GRANT rol1 [,rol2 [,…]]
TO {usuario|rol|PUBLIC [,{usuario|rol|PUBLIC} [,…] }
[WITH ADMIN OPTION]

Al igual que en las instrucciones anteriores, PUBLIC asigna el rol a todos los
usuarios y WITH ADMIN OPTION permite al usuario al que se le concede el rol,
conceder él dicho rol a otros usuarios/as.

[5.6.12]roles por defecto


Los usuarios tienen una serie de roles por defecto, estos son aquellos roles que van unidos al usuario, de
modo que en cuanto un usuario lanza una sesión, los privilegios que contienen sus roles por defecto,
comienzan a funcionar.

Cuando asignamos un rol mediante el comando GRANT, este pasa a ser un rol por defecto.

[5.6.13]roles predefinidos
Oracle dispone de una serie de roles predefinidos que se pueden asignar a los
usuarios. Hay más de cincuenta roles predefinidos. Los clásicos son:
rol significado
CONNECT Permite crear sesiones. Se mantiene por compatibilidad
RESOURCE Permite crear tablas y código PL/SQL del tipo que sea. Se mantiene por compatibilidad
DBA Permite casi todo, excepto manejar la instancia de la base de datos

[5.6.14]activar y desactivar roles


No todos los roles aparecen activados. Para saber los roles que están activados en una sesión de usuario,
bastará con consultar el contenido de la vista SESSION_ROLES.

Al iniciar sesión cada usuario tendrá activados los privilegios que se le asignaron explícitamente y los roles
por defecto.

[Fecha] 14
La activación (y también la desactivación) de un rol se realiza mediante SET ROLE (sólo podemos activar y
desactivar roles que el usuario tenga asignados mediante la instrucción GRANT). Su sintaxis es:

SET ROLE
{ rol1 [IDENTIFIED BY contraseña]
[,rol2 [IDENTIFIED BY contraseña] [,…]]
| ALL [EXCEPT rol1 [,rol2 [,…]]]
| NONE
};

Las posibilidades son:

▪ Indicar una lista de roles que serán los que se activen (se usa cuando se habían desactivado)
▪ Indicar ALL para activar todos los roles, excepto aquellos que se indiquen en la
cláusula EXCEPT que quedarán sin activar.
▪ NONE desactiva todos los roles (incluido el rol por defecto). Sólo quedarán activados los privilegios
individuales marcados explícitamente.

La activación y desactivación sólo sirve para la sesión actual, en la siguiente sesión volverán a estar
activados sólo los roles por defecto.

[5.6.15]asignar a un usuario un rol por defecto


Cuando se crea un usuario mediante CREATE USER, no disponemos de la posibilidad de asignar un rol por
defecto. De hecho se le asigna automáticamente la opción ALL que hace que todos los roles que se le
asignen en el futuro (mediante GRANT) pasarán a ser roles por defecto.

Por ello la instrucción que administra los roles por defecto es ALTER USER:

ALTER USER usuario


DEFAULT ROLE {rol1 [,rol2 [,…]| ALL [EXCEPT rol1 [,rol2[,…]] |NONE ]};

La opción ALL coloca a todos los roles como roles por defecto, EXCEPT especifica una lista de roles que no
serán colocados como roles por defecto. NONE hace que no haya ningún rol por defecto. Finalmente
podemos simplemente especificar la lista de roles que quedarán como roles por defecto.

[5.6.16]borrar roles
Lo hace la instrucción DROP ROLE, seguida del rol a borrar. Desde ese
momento a los usuarios a los que se habían asignado el rol se les revoca.

[5.6.17]información sobre roles en el


diccionario de datos
Existen varias vistas para examinar los roles.
Vista Significado
DBA_ROLES Muestra todos los roles de la base de datos
DBA_ROLES_PRIVS Roles asignados a los usuarios

[Fecha] 15
Vista Significado
ROLE_ROLE_PRIVS Roles asignados a otros roles
DBA_SYS_PRIVS Privilegios de sistema asignados a usuarios y roles
ROLE_SYS_PRIVS Privilegios de sistema asignados a roles
ROLE_TAB_PRIVS Privilegios de objeto concedidos a roles
SESSION_ROLES Roles en activo para el usuario actual

[5.7] administración de perfiles de


Oracle
Los perfiles permiten limitar los recursos que los usuarios usan de la base de datos. Hay un perfil
llamado DEFAULT que se aplica automáticamente a todos los usuarios y que les da recursos ilimitados
sobre la base de datos. Para limitar el número de recursos se debe de activar (poniéndola el valor TRUE) la
variable de sistema RESOURCE_LIMIT (que por defecto está a FALSE). Esto se hace así:

ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;

En realidad hay dos tipos de parámetros de los perfiles:

▪ Perfiles de manejo de contraseñas, que gestionan el funcionamiento de


las contraseñas para el usuario.
Variable de perfil Significado
Número consecutivo de errores en las contraseñas antes de bloquear la cuen
FAILED_LOGIN_ATTEMPTS
10
Número de días hasta que se bloquea una cuenta si se supera el límite de in
PASSWORD_LOCK_TIME
contraseña. Por defecto es uno
PASSWORD_LIFE_TIME Números de días que tiene vigencia una contraseña. Por defecto es 180
Días que la contraseña se la concede un periodo extra de gracia tras cons
PASSWORD_GRACE_TIME
vida. Por defecto es 7
PASSWORD_REUSE_TIME Número de días que una contraseña puede ser reutilizada
Función a la que se invoca cuando se modifica una contraseña con el fin de
PASSWORD_VERIFY_FUNCTION
en base a las reglas de complejidad que deseemos

Perfiles relacionados con el uso de recursos. Establecen el máximo o


mínimo uso de recursos de la base de datos por parte del usuario.
Variable de perfil Significado
SESSIONS_PER_USER Número de conexiones de usuario concurrentes que se permiten.
Límite de tiempo (en centésimas de segundo) que se permite a un usuario u
CPU_PER_SESSION
de ser echado del sistema. De esa forma se evitan peligros de rendimiento
CPU_PER_CALL Como la anterior pero referida a cada proceso
Para conexiones en instalaciones de servidor compartido, número de KB q
PRIVATE_SGA
cada sesión en la zona de memoria compartida (SGA)
CONNECT_TIME Minutos como máximo que se permite a una sesión
IDLE_TIME Minutos máximos de inactividad de una sesión
LOGICAL_READS_PER_SESSION Máximo número de bloques leídos en una sesión
LOGICAL_READS_PER_CALL Máximo número de bloques leídos por un proceso

[Fecha] 16
Variable de perfil Significado
Máximo número de recursos consumidos por una sesión. Es la media p
COMPOSITE_LIMIT
parámetros anteriores

crear perfiles

Sintaxis:
CREATE PROFILE perfil LIMIT parámetro1 valor1 [parametro2 valor [...]]

Los parámetros a especificar son los que aparecen en la tabla anterior. A cada
parámetro se le indica un valor, o bien la palabra DEFAULT si deseamos que
tome su valor por defecto, o bien UNLIMITED para indicar que el parámetro
tomará un valor de infinito.

Ejemplo:
CREATE PROFILE programador LIMIT
SESSIONS_PER_USER UNLIMITED
CPU_PER_SESSION UNLIMITED
IDLE_TIME 15
CONNECT_TIME 150
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LOCK_TIME 2;

[5.7.1]modificar perfiles
La instrucción ALTER PROFILE funciona igual que CREATE PROFILE y es la
encargada de hacer modificaciones a un perfil creado.

[5.7.2]borrar perfil
En este caso es DROP PROFILE seguida del nombre del perfil a eliminar. Se
puede usar la palabra CASCADE para eliminar todas las restricciones que
impidan borrar el perfil. Sintaxis:
DROP PROFILE nombrePerfil [CASCADE]

[5.7.3]asignar un perfil a un usuario


Cada usuario tiene un solo perfil. La instrucción de creación de usuarios (CREATE USER) dispone de la
cláusula PROFILE para indicar el perfil que se asigna a ese usuario.

Si lo que deseamos es asignar un perfil a un usuario después de haberle creado, disponemos de la


instrucción ALTER USER con la que podemos indicar el perfil. Ejemplo:

ALTER USER jsanchez PROFILE programador;

[Fecha] 17

También podría gustarte