Cerrar

Enviar mensaje

twitter FaceBook You Tube Git Hub Docs.com Enviar email

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:

Oracle posee dos privilegios de sistema asociados a tareas administrativas, son:

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:

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.

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:

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:

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 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

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:

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 SESSION

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
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 PRIVILEGE

Permite conceder privilegios sobre objetos que no son del usuario (pertenecen 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 COST

Modifica los parámetros de cálculo de coste de la sesión

RESTRICTED SESSION

Conectar aunque la base de datos se haya iniciado en modo restringido

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

ALTER USER

Modificar al usuario. Permite cambiar la contraseña y modo de autentificación, tablespace por defecto, cuota de uso de disco, roles y el perfil del usuario

DROP USER

Borrar usuario

CREATE PROFILE

Crear perfiles

ALTER PROFILE

Modificar perfiles

DROP PROFILE

Borrar perfiles

CREATE ROLE

Crear roles

ALTER ANY ROLE

Modificar roles

GRANT ANY ROLE

Conceder roles

GRANT ANY PRIVILEGE

Conceder privilegios de sistema

Directorios

CREATE ANY DIRECTORY

Crear directorios

DROP ANY DIRECTORY

Borrar directorios

Tablespaces (espacios de tabla)

CREATE TABLESPACES

Crear tablespaces

ALTER TABLESPACE

Modificar tablespaces

DROP TABLESPACE

Borrar tablespaces

MANAGE TABLESPACE

Administrar el espacio de tablas para poder hacer copia de seguridad o simplemente quedar online u offline el tablespace

UNLIMITED TABLESPACE

Usa cuota ilimitada al escribir en cualquier tablespace. Este privilegio elimina las cuotas establecidas sobre el usuario, si las hubiera.

Tablas

CREATE TABLE

Crear tablas en el esquema del usuario, incluye insertar, modificar y eliminar datos de la misma; así como eliminar la propia tabla

ALTER ANY TABLE

Modificar tablas de cualquier usuario

BACKUP ANY TABLE

Utilizar la utilidad Export para copiar datos de otros esquemas.

CREATE ANY TABLE

Crear tablas en cualquier esquema

DELETE ANY TABLE

Borrar filas de tablas en cualquier esquema

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 TABLE

Modificar datos de tablas de cualquier esquema

LOCK ANY TABLE

Bloquear tablas, vistas e instantáneas en cualquier esquema

FLASHBACK ANY TABLE

Realizar acción de flashback en tablas, vistas e instantáneas en cualquier 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 VIEW

Crear vistas materializadas (instantáneas)

CREATE ANY MATERIALIZED VIEW

Crear vistas materializadas (instantáneas) en cualquier esquema

ALTER ANY MATERIALIZED VIEW

Modificar vistas materializadas (instantáneas) en cualquier esquema

DROP ANY MATERIALIZED VIEW

Borrar vistas materializadas (instantáneas) en cualquier esquema

GLOBAL QUERY REWRITE

Permite realizar operaciones de lectura escritura en instantáneas que usan tablas de otros esquemas

CREATE SNAPSHOT

Crear instantáneas (obsoleto)

ALTER ANY SNAPSHOT

Modificar instantáneas de cualquier usuario (obsoleto)

CREATE ANY SNAPSHOT

Crear instantáneas a cualquier usuario (obsoleto)

DROP ANY SNAPSHOT

Borrar instantáneas (obsoleto)

PL/SQL

CREATE PROCEDURE

Crear procedimientos y funciones PL/SQL

ALTER ANY PROCEDURE

Modificar procedimientos y funciones de cualquier usuario

CREATE ANY PROCEDURE

Crear funciones y procedimientos en cualquier esquema

DROP ANY PROCEDURE

Borrar cualquier procedimiento en cualquier esquema

EXECUTE ANY PROCEDURE

Ejecutar cualquier procedimiento en cualquier esquema

CREATE TRIGGER

Crear triggers

ALTER ANY TRIGGER

Modificar triggers de cualquier usuario

CREATE ANY TRIGGER

Crear triggers en cualquier esquema

DROP ANY TRIGGER

Borrar triggers de cualquier esquema

ADMINISTER DATABASE TRIGGER

Crear triggers de sistema (requiere además el privilegio CREATE TRIGGER)

CREATE LIBRARY

Crear librerías de procedimientos y funciones en el esquema de usuario

CREATE ANY LIBRARY

Crear librerías de procedimientos y funciones en cualquier esquema

DROP ANY TRIGGER

Borrar cualquier trigger

DROP LIBRARY

Borrar librería de procedimientos y funciones en el esquema de usuario

DROP ANY LIBRARY

Borrar librerías de procedimientos y funciones en cualquier esquema

EXECUTE ANY LIBRARY

Ejecutar cualquier librería

Tipos de datos

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 TYPE

Permite invocar a tipos de datos personales presentes en cualquier esquema

Índices

ALTER ANY INDEX

Modificar índices de la base de datos (incluye modificar claves primarias, secundarias,…)

CREATE ANY INDEX

Crear índices en cualquier esquema

DROP ANY INDEX

Borrar índices en cualquier esquema

Secuencias y sinónimos

ALTER ANY SEQUENCE

Modificar secuencias de cualquier usuario

CREATE ANY SEQUENCE

Crear secuencias en cualquier esquema

CREATE ANY SYNONYM

Crear sinónimos en cualquier esquema

CREATE SEQUENCE

Crear secuencias

CREATE SYNONYM

Crear sinónimos

CREATE PUBLIC SYNONYM

Crear sinónimos públicos

DROP PUBLIC SYNONYM

Borrar sinónimos públicos

CREATE ANY SEQUENCE

Crear secuencias en cualquier esquema

DROP ANY SEQUENCE

Borrar secuencias en cualquier esquema

DROP ANY SYNONYM

Borrar sinónimos en cualquier esquema

SELECT ANY SEQUENCE

Seleccionar cualquier secuencia de cualquier esquema

Clusters

CREATE CLUSTER

Crea y modifica clusters en el esquema actual

ALTER ANY CLUSTER

Modificar clusters

CREATE ANY CLUSTER

Crear clusters en cualquier esquema

DROP ANY CLUSTER

Borrar cualquier cluster

Segmentos de rollback

CREATE ROLLBACK SEGMENT

Crear segmentos de rollback

ALTER ROLLBACK SEGMENT

Modificar segmentos de rollback

DROP ROLLBACK SEGMENT

Borrar segmento de rollback

Enlaces a base de datos

CREATE DATABASE LINK

Crear enlaces privados a bases de datos en el esquema del usuario

CREATE PUBLIC DATABASE LINK

Crear enlaces públicos a bases de datos

CREATE DATABASE LINK

Modificar enlaces privados a bases de datos

CREATE PUBLIC DATABASE LINK

Modificar enlaces públicos a bases de datos

DROP PUBLIC DATABASE LINK

Borrar enlaces públicos a bases de datos

Programación de tareas

CREATE JOB

Crear trabajo planificado en el esquema actual

CREATE ANY JOB

Crea, modifica y elimina tareas, programas y credenciales de cualquier esquema (excepto SYS). Esto permite ejecutar código en cualquier esquema de cualquier usuario.

CREATE EXTERNAL JOB

Crear un trabajo en el esquema de usuario procedente del planificador de tareas del sistema operativo

EXECUTE ANY PROGRAM

Ejecutar cualquier programa presente en un trabajo planificado del esquema de usuario.

EXECUTE ANY CLASS

Asignar cualquier clase a un trbajo en el esquema de usuario.

MANAGE SCHEDULER

Administrar el planificador de tareas,

Varios

ANALYZE ANY

Analizar cualquier tabla, clúster o índice en cualquier esquema.

ANALYZE ANY DICTIONARY

Analizar cualquier elemento del diccionario de datos

SELECT ANY DICTIONARY

Realizar SELECT sobre las vistas del diccionario de datos

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 TABLE

Realizar comentarios sobre tablas, columnas y vistas en cualquier esquema de la base de datos

SELECT ANY TRANSACTION

Seleccionar los datos de la vista FLASHBACK_TRANSACTION_QUERY que controla el proceso de la actual operación flashback.

FORCE ANY TRANSACTION

Forzar aceptar (COMMIT) las transacciones en duda en un sistema distribuido de bases de datos en cualquier conexión

FORCE TRANSACTION

Forzar aceptar (COMMIT) la transacción actual en caso de duda.

SYSDBA

Privilegio general de administrador

Varios

SYSOPER

Privilegio general de administrador (más bajo que el anterior)

FLASHBACK ARCHIVE ADMINISTER

Crea, elimina o modifica cualquier archivo de flashback

DEBUG CONNECT SESSION

Conectar la sesión a un depurador

DEBUG ANY PROCEDURE

Conectar procedimientos, funciones y/o código Java a un depurador

[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 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:

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

USER_COL_PRIVS_RECD

Privilegios asignados a columnas de objetos (de otros 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

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

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.

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:

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

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:

Variable de perfil

Significado

FAILED_LOGIN_ATTEMPTS

Número consecutivo de errores en las contraseñas antes de bloquear la cuenta. Por defecto son 10

PASSWORD_LOCK_TIME

Número de días hasta que se bloquea una cuenta si se supera el límite de intentos al meter una contraseña. Por defecto es uno

PASSWORD_LIFE_TIME

Números de días que tiene vigencia una contraseña. Por defecto es 180

PASSWORD_GRACE_TIME

Días que la contraseña se la concede un 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 reutilizada

PASSWORD_VERIFY_FUNCTION

Función a la que se invoca cuando se modifica una contraseña con el fin de 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

SESSIONS_PER_USER

Número de conexiones de usuario concurrentes que se permiten.

CPU_PER_SESSION

Límite de tiempo (en centésimas de segundo) que se permite a un usuario utilizar la CPU 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

PRIVATE_SGA

Para conexiones en instalaciones de servidor compartido, número de KB que puede consumir 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

COMPOSITE_LIMIT

Máximo número de recursos consumidos por 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
		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;