Biblioteca Online : ¡La Suscripción ENI por 9,90 € el primer mes!, con el código PRIMER9. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí

Gestión de usuarios y sus permisos

Principios

Para la gestión de la seguridad, Oracle permite:

  • definir los usuarios que se pueden conectar a la base de datos (con una identificación por el sistema operativo o por la base de datos);

  • definir en qué tablespace(s) puede crear los objetos un usuario (eventualmente ninguno);

  • limitar el uso de los recursos de sistema;

  • imponer una política de gestión de contraseñas (expiración periódica, no reutilizar antes de un periodo de tiempo, etc.);

  • definir los permisos de cada usuario dentro de la base de datos.

En una base de datos Oracle los permisos de los usuarios se administran con la noción de permiso.

Un permiso es el derecho para:

  • ejecutar una sentencia SQL en general (por ejemplo, crear una tabla): es la noción de permiso de sistema;

  • acceder a un objeto de otro usuario (por ejemplo, actualizar los datos de la tabla CLIENT): es la noción de permiso de objeto.

Los permisos se pueden asignar directamente a los usuarios o por medio de roles. Un rol es una agrupación de permisos (sistemas y objetos) con un nombre, que se puede asignar como tal a un usuario; de esta manera, este usuario recibe automáticamente los permisos contenidos en el rol. Los roles facilitan la gestión de los permisos.

Además, Oracle ofrece una funcionalidad de auditoría que permite trazar la actividad de los usuarios en la base de datos. Para saber más, puede consultar la documentación...

Crear y modificar usuarios

1. Modo de identificación del usuario

Oracle puede identificar un usuario, o bien dejar que sea el sistema operativo quien lo haga. Los dos modos de identificación se pueden utilizar al mismo tiempo, en la misma base de datos.

a. Identificación por Oracle

El usuario se conecta a la base de datos introduciendo un nombre y una contraseña. Oracle comprueba el nombre y la contraseña del usuario.


SQL> CONNECT oheu/rx239$ 
Conectado.
 

Es posible utilizar las funcionalidades de gestión de contraseñas propuestas por Oracle.

b. Identificación por el sistema operativo

El usuario se conecta a la base de datos sin introducir nombre ni contraseña.


SQL> CONNECT / 
Conectado.
 

Oracle no comprueba la contraseña, sino que simplemente controla que el nombre del usuario, a nivel del sistema operativo, corresponda con un nombre de usuario de la base de datos. La identificación inicial se ha realizado por el sistema operativo.

Las funcionalidades de gestión de contraseñas propuestas por Oracle no se pueden usar (no es Oracle quien gestiona la contraseña).

Para establecer el vínculo entre el nombre del usuario en el sistema operativo y el nombre del usuario en la base de datos, Oracle utiliza un prefijo definido por el argumento OS_AUTHENT_PREFIX (por defecto igual a OPS$).

Por ejemplo, el usuario con nombre vdep a nivel del sistema operativo se podrá conectar a la base por un CONNECT / solo si existe una cuenta Oracle ops$vdep.

En plataformas Windows el nombre de dominio o, de manera predeterminada, el nombre de la máquina, forma parte del nombre del usuario: SRVWINORA\VDEP, por ejemplo. Es el nombre completo el que se debe prefijar para formar el nombre de la cuenta Oracle (todo en mayúsculas): OPS$SRVWINORA\VDEP, por ejemplo.

El prefijo puede ser igual a una cadena vacía (OS_AUTHENT_PREFIX = ""); en este caso, el nombre del usuario a nivel del sistema operativo y el nombre del usuario en Oracle son idénticos.

Además, el argumento REMOTE_OS_AUTHENT se puede poner a TRUE para indicar si los usuarios remotos se identifican con este método (FALSE, para prohibirlo; es el valor por defecto). Poner el argumento REMOTE_OS_AUTHENT a TRUE puede ser peligroso si la red no es segura. Este argumento se dejó de usar desde la versión 11.

2. Creación de un usuario...

Utilizar perfiles

1. Presentación

Un perfil es un conjunto de limitaciones de recursos, con un nombre que se puede asignar a un usuario.

Se pueden limitar los siguientes recursos:

  • tiempo de CPU por llamada y/o por sesión;

  • número de lecturas lógicas por llamada y/o por sesión;

  • número de sesiones abiertas al mismo tiempo por un usuario;

  • tiempo de inactividad por sesión;

  • duración total de la sesión;

  • cantidad de memoria privada en la SGA (solo en configuración de servidores compartidos).

Una lectura lógica corresponde a una lectura de un bloque durante una consulta, tanto si el bloque ya está presente en memoria (en la Database Buffer Cache) como si se lee de disco (en este caso, la lectura lógica también corresponde a una lectura física).

Desde la versión 8, los perfiles también se pueden utilizar para implementar una política de gestión de contraseñas.

Se pueden poner en marcha las siguientes funcionalidades:

  • bloqueo de cuenta (y duración de bloqueo) cuando se supera un número determinado de intentos fallidos de conexión;

  • tiempo de vida de las contraseñas (eventualmente con un periodo de cortesía);

  • no reutilizar una contraseña antes de un plazo determinado de tiempo o antes de determinado número de cambios;

  • complejidad de la contraseña.

El perfil llamado DEFAULT se crea automáticamente durante la creación de la base de datos. Este perfil se asigna por defecto a los usuarios. Por defecto, este perfil DEFAULT no impone ningún límite para los recursos; por el contrario, desde la versión 11, este perfil tiene límites para las contraseñas (como se verá más adelante).

La limitación de los recursos, con ayuda de los perfiles, no ofrece muchas posibilidades. Si desea controlar de manera más precisa la asignación de recursos (CPU, espacio de anulación, duración de inactividad) a los usuarios o grupos de usuarios, puede utilizar la Database Resource Manager. La implementación de esta funcionalidad se realiza gracias al paquete DBMS_RESOURCE_MANAGER. Para saber más, consulte la documentación Oracle® Database Administrator’s Guide.

2. Creación de un perfil

La sentencia SQL CREATE PROFILE permite crear un nuevo perfil.

Sintaxis


CREATE PROFILE...

Gestionar los permisos

1. Permiso de sistema

a. Definición

Un permiso de sistema consiste en poder ejecutar una sentencia SQL en general, por ejemplo, crear una tabla.

Generalmente, cada sentencia SQL tiene, al menos, un permiso de sistema asociado, que tiene el mismo nombre que la sentencia SQL. Por ejemplo, la sentencia SQL CREATE TABLE tiene un permiso de sistema asociado CREATE TABLE (da permiso para crear una tabla en su propio esquema).

Algunos permisos de sistema toman el nombre de la sentencia SQL con la palabra clave ANY. En este caso, el permiso de sistema permite ejecutar la sentencia en cualquier esquema de la base de datos. Por ejemplo, el permiso de sistema CREATE ANY TABLE da el permiso para crear una tabla en cualquier esquema de la base de datos.

Cuando la sentencia SQL implicada no es relativa a los objetos de un esquema, no hay permiso ANY (ANY quiere decir en cualquier esquema): por ejemplo, el permiso para crear un tablespace es CREATE TABLESPACE; no hay CREATE ANY TABLESPACE (un tablespace no pertenece a un esquema).

Los permisos de sistema son fuente de poder y origen de peligro, sobre todo en lo que respecta a la gestión de usuarios y permisos (CREATE USER, ALTER USER, DROP USER, GRANT ANY PRIVILEGE, GRANT ANY ROLE) y la eliminación de objetos (DROP ANY TABLE, DROP TABLESPACE, etc.); por tanto, los permisos de sistema se deben asignar con cuidado (especialmente los permisos ANY).

Piense que si da el permiso ALTER USER a un usuario, éste podrá modificar las cuentas de usuario (cambiar las contraseñas, por ejemplo), incluida la de usted.

Algunos permisos de sistema particulares:

CREATE SESSION

Da permiso al usuario para conectarse.

SELECT ANY DICTIONARY

Da permiso al usuario para consultar cualquier objeto del diccionario de datos en el esquema SYS.

Si un usuario no tiene el permiso CREATE SESSION, se obtiene el error ORA-01045 durante un intento de conexión:


ORA-01045: el usuario OHEU no tiene el permiso CREATE SESSION; conexión rechazada
 

El permiso SELECT ANY DICTIONARY es interesante porque permite dar a un usuario permiso para leer las vistas DBA, sin tener que ser DBA. En la versión 8 u 8i, el rol SELECT_CATALOG_ROLE se puede utilizar para conseguir el mismo objetivo; este rol sigue existiendo por razones de compatibilidad hacia atrás. En la versión 7 era necesario dar a los usuarios el permiso SELECT ANY TABLE, lo que podía presentar problemas...

Resumen

1. Las diferentes tipos de cuentas

En general, una base Oracle contiene cuatro tipos de cuentas.

Administración

Una cuenta como esta tiene todos los permisos de sistema necesarios, fundamentalmente para la gestión de las estructuras de almacenamiento y la gestión de los usuarios. Además, las cuentas de administración tienen un acceso completo al diccionario de datos.

Estos permisos se pueden obtener por medio del rol DBA o de un rol equivalente.

Desarrollo/alojamiento del esquema de aplicaciones

Una cuenta como esta tiene los permisos de sistema necesarios para la creación de los diferentes tipos de objetos (tablas, vistas, procedimientos...) y tiene una cuota sobre, al menos, un tablespace. Los permisos de sistema necesarios se pueden obtener por medio de los roles CONNECT y RESOURCE o a través de un rol equivalente que usted haya creado (aconsejable).

Para las cuentas de desarrollo, puede ser aconsejable prever un tablespace dedicado y definir una cuota solo sobre este tablespace. En la situación ideal, es preferible utilizar una base de datos a parte para el desarrollo.

La cuenta "propietaria" de una aplicación generalmente tiene cuotas ilimitadas en los tablespaces (de tablas e índices) dedicados a la aplicación.

Usuario final

Una cuenta como esta necesita pocos permisos de sistema: CREATE SESSION (obligatorio), ALTER SESSION (algunas veces necesaria) y generalmente es todo....

Supervisar los usuarios conectados

La vista V$SESSION permite identificar los usuarios conectados actualmente:


SQL> SELECT sid,serial#,username,osuser,status FROM v$session; 
 SID   SERIAL# USERNAME   OSUSER                   STATUS 
---- --------- ---------- ------------------------ -------- 
   1         3            SYSTEM                   ACTIVE 
... 
  10     10494 VDEP       vdep                     INACTIVE 
  14       450 SYSTEM     Administrator            ACTIVE
 

Las sesiones sin valor en la columna USERNAME corresponden a procesos batch.

Las columnas interesantes de la vista V$SESSION son las siguientes:

SID

Identificador de la sesión.

SERIAL#

Número de serie de la sesión.

USERNAME

Nombre del usuario (cuenta Oracle).

SCHEMANAME

Nombre del esquema del usuario (puede ser diferente de USERNAME si la sesión ha ejecutado la sentencia SQL ALTER SESSION SET CURRENT_SCHEMA).

STATUS

Estado de la sesión (ACTIVE, INACTIVE o KILLED).

LOGON_TIME

Fecha y hora de conexión.

OSUSER

Nombre del usuario, a nivel del sistema operativo.

MACHINE

Nombre de la máquina del usuario, a nivel del sistema operativo.

TERMINAL...

Utilizar EM Express

1. Usuarios

En EM Express, seleccione el elemento Usuarios del menú Seguridad para acceder a la página de gestión de usuarios:

images/12_431_1.png

Desde esta página puede realizar diversas acciones relacionadas con la gestión de usuarios:

images/12_431_2.png
  • crear un nuevo usuario (menú o botón Crear por);

  • crear un nuevo usuario idéntico a otro usuario existente (menú o botón Crear como);

  • eliminar un usuario (menú o botón Borrar Usuario);

  • mostrar los detalles de un usuario (menú Ver Detalles o clic en el nombre del usuario en la lista);

  • modificar las propiedades básicas (autentificación, contraseña o perfil) de un usuario (menú Modificar Cuenta);

  • modificar los tablespaces por defecto de un usuario (menú Modificar Tablespaces); 

  • modificar los permisos de sistema y los roles asignados a un usuario (menú Modificar Privilegios y Roles);

  • modificar los permisos de objeto asignados a un usuario (menú Otorgar Privilegios de Objeto).

Existen diferentes cuadros de diálogo para realizar estas acciones:

  • Crear un usuario:

images/12_432_1.png
  • Modificar la cuenta:

images/12_433_1.png
  • Modificar los tablespaces:

images/12_433_2.png
  • Modificar los privilegios y los roles:

images/12_433_3.png
  • Asignar privilegios de objeto:

images/12_434_1.png

Haciendo clic en el enlace del nombre del usuario o seleccionando el elemento Ver detalles, del menú Acciones, se accede a una página que permite consultar las características de un usuario:

images/12_435_1.png

Las pestañas...