Está en la página 1de 20

Manual de Administración de Bases de Datos

[5]
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.

Página 1 de 20
 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 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:

Página 2 de 20
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.

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.

Página 3 de 20
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).

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

Página 4 de 20
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

Página 5 de 20
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

Privilegio Significado
CREATE SESSION Permite al usuario conectar con la base de datos
RESTRICTED Permite al usuario establecer sesión con la base de datos en
SESSION caso de que la base de datos esté en modo restringido
mediante la instrucción:

Página 6 de 20
Privilegio Significado
ALTER SYSTEM ENABLE RESTRICTED
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 Permite conceder privilegios sobre objetos que no son del
OBJECT PRIVILEGE usuario (pertenecen a otros usuarios) a terceros usuarios.
CREATE ANY
Permite crear tablas en otros esquemas de usuario
TABLE
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
Permite eliminar datos en tablas de otros usuarios
TABLE
DELETE ANY
Permite eliminar datos en tablas de otros usuarios
TABLE

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
Modifica los parámetros de cálculo de coste de la sesión
RESOURCE COST
RESTRICTED Conectar aunque la base de datos se haya iniciado en modo
SESSION restringido
Base de datos y sistema
ALTER Modificar la base de datos (privilegio de gran capacidad
DATABASE administrativa)
ALTER SYSTEM Modificar los parámetros del sistema
AUDIT SYSTEM Auditar la base de datos
Usuarios, roles, privilegios y perfiles
Crear usuarios pudiendo indicar tablespace por defecto, cuotas
CREATE USER
y perfiles

Página 7 de 20
Privilegio Significado
Modificar al usuario. Permite cambiar la contraseña y modo de
ALTER USER autentificación, tablespace por defecto, cuota de uso de disco,
roles y el perfil del usuario
DROP USER Borrar usuario
CREATE
Crear perfiles
PROFILE
ALTER PROFILE Modificar perfiles
DROP PROFILE Borrar perfiles
CREATE ROLE Crear roles
ALTER ANY
Modificar roles
ROLE
GRANT ANY
Conceder roles
ROLE
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
Borrar tablespaces
TABLESPACE
MANAGE Administrar el espacio de tablas para poder hacer copia de
TABLESPACE seguridad o simplemente quedar online u offline el tablespace
Usa cuota ilimitada al escribir en cualquier tablespace. Este
UNLIMITED
privilegio elimina las cuotas establecidas sobre el usuario, si las
TABLESPACE
hubiera.
Tablas
Crear tablas en el esquema del usuario, incluye insertar,
CREATE TABLE modificar y eliminar datos de la misma; así como eliminar la
propia tabla
ALTER ANY
Modificar tablas de cualquier usuario
TABLE
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
Borrar tablas en cualquier esquema
TABLE

Página 8 de 20
Privilegio Significado
INSERT ANY
Añadir datos a cualquier tabla
TABLE
SELECT ANY
Seleccionar datos de tablas en cualquier esquema
TABLE
UPDATE ANY
Modificar datos de tablas de cualquier esquema
TABLE
LOCK ANY
Bloquear tablas, vistas e instantáneas en cualquier esquema
TABLE
FLASHBACK ANY Realizar acción de flashback en tablas, vistas e instantáneas en
TABLE cualquier esquema
Vistas
CREATE VIEW Crear vistas en el esquema del usuario
CREATE ANY
Crear vistas en cualquier esquema
VIEW
DROP ANY VIEW Borrar cualquier vista en cualquier esquema
UNDER ANY
Crear subvistas
VIEW
Instantáneas (Snapshots o vistas materializadas)
CREATE
MATERIALIZED Crear vistas materializadas (instantáneas)
VIEW
CREATE ANY
MATERIALIZED Crear vistas materializadas (instantáneas) en cualquier esquema
VIEW
ALTER ANY
Modificar vistas materializadas (instantáneas) en cualquier
MATERIALIZED
esquema
VIEW
DROP ANY
Borrar vistas materializadas (instantáneas) en cualquier
MATERIALIZED
esquema
VIEW
GLOBAL QUERY Permite realizar operaciones de lectura escritura en instantáneas
REWRITE que usan tablas de otros esquemas
CREATE
Crear instantáneas (obsoleto)
SNAPSHOT
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

Página 9 de 20
Privilegio Significado
PROCEDURE
DROP ANY
Borrar cualquier procedimiento en cualquier esquema
PROCEDURE
EXECUTE ANY
Ejecutar cualquier procedimiento en cualquier esquema
PROCEDURE
CREATE
Crear triggers
TRIGGER
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
DATABASE
privilegio CREATE TRIGGER)
TRIGGER
CREATE Crear librerías de procedimientos y funciones en el esquema de
LIBRARY usuario
CREATE ANY Crear librerías de procedimientos y funciones en cualquier
LIBRARY esquema
DROP ANY
Borrar cualquier trigger
TRIGGER
Borrar librería de procedimientos y funciones en el esquema de
DROP LIBRARY
usuario
DROP ANY Borrar librerías de procedimientos y funciones en cualquier
LIBRARY esquema
EXECUTE ANY
Ejecutar cualquier librería
LIBRARY
Tipos de datos
CREATE TYPE Crear tipos de datos personales
ALTER ANY
Modificar tipos de datos personales en cualquier usuario
TYPE
CREATE ANY
Crear tipos de datos en cualquier esquema
TYPE
DROP ANY TYPE Borrar tipos de datos de cualquier esquema
EXECUTE ANY Permite invocar a tipos de datos personales presentes en
TYPE cualquier esquema
Índices
ALTER ANY Modificar índices de la base de datos (incluye modificar claves
INDEX primarias, secundarias,…)
CREATE ANY
Crear índices en cualquier esquema
INDEX
DROP ANY INDEX Borrar índices en cualquier esquema
Secuencias y sinónimos
ALTER ANY
Modificar secuencias de cualquier usuario
SEQUENCE

Página 10 de 20
Privilegio Significado
CREATE ANY
Crear secuencias en cualquier esquema
SEQUENCE
CREATE ANY
Crear sinónimos en cualquier esquema
SYNONYM
CREATE
Crear secuencias
SEQUENCE
CREATE
Crear sinónimos
SYNONYM
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
Crea y modifica clusters en el esquema actual
CLUSTER
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
CREATE Crear enlaces privados a bases de datos en el esquema del
DATABASE LINK usuario
CREATE PUBLIC
Crear enlaces públicos a bases de datos
DATABASE LINK
CREATE
Modificar enlaces privados a bases de datos
DATABASE LINK

Página 11 de 20
Privilegio Significado
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
CREATE ANY
cualquier esquema (excepto SYS). Esto permite ejecutar código
JOB
en cualquier esquema de cualquier usuario.
CREATE Crear un trabajo en el esquema de usuario procedente del
EXTERNAL JOB planificador de tareas del sistema operativo
EXECUTE ANY Ejecutar cualquier programa presente en un trabajo planificado
PROGRAM del esquema 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
Convertirse en otro usuario al utilizar algunas de las utilidades
BECOME USER
de Oracle
COMMENT ANY Realizar comentarios sobre tablas, columnas y vistas en
TABLE cualquier esquema de la base de datos
Seleccionar los datos de la
SELECT ANY
vista FLASHBACK_TRANSACTION_QUERY que controla
TRANSACTION
el proceso de la actual operación flashback.
FORCE ANY Forzar aceptar (COMMIT) las transacciones en duda en un
TRANSACTION sistema distribuido de bases de datos en cualquier conexión
FORCE Forzar aceptar (COMMIT) la transacción actual en caso de
TRANSACTION duda.
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
PROCEDURE depurador

Página 12 de 20
[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

Página 13 de 20
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
Procedimientos, funciones, paquetes, sinónimos, programas
EXECUTE
en directorios
INDEX Tablas (para crear índices en la misma)
REFERENCES Tablas (para crear claves secundarias, FOREIGN KEY)
UNDER Vistas, para crear subvistas
Depurar procedimientos y funciones mediante programa
DEBUG
externo
ON COMMIT Actualizar la vista materializada (o instantánea) al realizar
REFRESH un COMMIT
QUERY REWRITE Escribir en la vista materializada (o instantánea)
READ Directorios
WRITE Directorios
FLASHBACK
Archivos de datos flashback (activar o desactivar)
ARCHIVE
[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.

Página 14 de 20
[5.6.6]mostrar información sobre privilegios

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

Vista Significado
DBA_SYS_PRIVS Privilegios de sistema asignados a usuarios y roles
Lista de todos los privilegios de todos los objetos de la
DBA_TAB_PRIVS
base de datos
Lista de todos los privilegios aplicados a columnas de
DBA_COL_PRIVS
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
Privilegios de objeto asignados a los objetos del
USER_TAB_PRIVS_MADE
usuario actual
Privilegios de objeto (de otros usuarios) concedidos al
USER_TAB_PRIVS_RECD
usuario actual
USER_COL_PRIVS_MAD Privilegios de objeto asignados a columnas de objetos
E del usuario actual
Privilegios asignados a columnas de objetos (de otros
USER_COL_PRIVS_RECD
usuarios) y 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

Página 15 de 20
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
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
Permite crear tablas y código PL/SQL del tipo que sea. Se mantiene por
RESOURCE
compatibilidad
DBA Permite casi todo, excepto manejar la instancia de la base de datos

Página 16 de 20
[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.

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.

Página 17 de 20
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
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
FAILED_LOGIN_ATTEMPTS contraseñas antes de bloquear la cuenta. Por
defecto son 10
Número de días hasta que se bloquea una
PASSWORD_LOCK_TIME cuenta si se supera el límite de intentos al
meter una contraseña. Por defecto es uno
Números de días que tiene vigencia una
PASSWORD_LIFE_TIME
contraseña. Por defecto es 180
Días que la contraseña se la concede un
PASSWORD_GRACE_TIME periodo extra de gracia tras consumir su
tiempo de vida. Por defecto es 7
PASSWORD_REUSE_TIME Número de días que una contraseña puede ser
Página 18 de 20
Variable de perfil Significado
reutilizada
Función a la que se invoca cuando se
modifica una contraseña con el fin de
PASSWORD_VERIFY_FUNCTION
verificar su validez 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


Número de conexiones de usuario
SESSIONS_PER_USER
concurrentes que se permiten.
Límite de tiempo (en centésimas de segundo)
que se permite a un usuario utilizar la CPU
CPU_PER_SESSION
antes 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 que puede
PRIVATE_SGA
consumir cada sesión en la zona de memoria
compartida (SGA)
Minutos como máximo que se permite a una
CONNECT_TIME
sesión
Minutos máximos de inactividad de una
IDLE_TIME
sesión
LOGICAL_READS_PER_SESSIO Máximo número de bloques leídos en una
N sesión
Máximo número de bloques leídos por un
LOGICAL_READS_PER_CALL
proceso
Máximo número de recursos consumidos por
COMPOSITE_LIMIT una sesión. Es la media ponderada de varios
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


Página 19 de 20
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;

Página 20 de 20

También podría gustarte