Concepto de USUARIO Un usuario es un nombre definido en la base de datos que puede conectarse a ella y acceder a determinada información según los permisos que tenga asignados por el administrador El objetivo de la creación de usuarios es establecer una cuenta segura y útil, que tenga los privilegios adecuados y los valores por defecto apropiados. En Oracle se puede especificar todo lo necesario para abrir una cuenta con el comando CREATE USER Asociado a cada usuario existe un esquema con el mismo nombre, que contiene una colección lógica de objetos. Por defecto el usuario sólo tiene acceso a los objetos de su esquema, a no ser que otro le de privilegios para acceder al suyo. Creación de Usuarios En la instalación de Oracle se crean por defecto dos usuarios con privilegios de administración, estos son: - SYS: Propietario de las tablas del diccionario de datos - SYSTEM: Puede crear usuarios, aunque no en su tablespace. Sintaxis para la creación de usuarios: CREATE USER nombre_usuario IDENTIFIED BY clave [DEFAULT TABLESPACE espacio_tabla ] [TEMPORARY TABLESPACE espacio_tabla] [QUOTA{entero{K|M}|UNLIMITED ON espacio_tabla ] [PROFILE perfil] Modificación y borrado de usuarios MODIFICACION: Cada usuario sólo puede cambiar su clave, a no ser que tenga el privilegio ALTER USER. ALTER USER nombre_usuario IDENTIFIED BY clave_acceso [DEFAULT ROLE nombrerol] BORRADO: Podemos borrar un usuario de la BD, incluidos sus objetos. El privilegio que capacita para borrar usuarios es DROP USER. DROP USER usuario [CASCADE]; PRIVILEGIOS Son atributos que permiten a un usuario realizar determinadas operaciones dentro de una BD o acceder a objetos de otros usuarios. Existen dos tipos de privilegios: - Privilegios sobre los objetos Privilegios del sistema Privilegios sobre los objetos Derecho a ejecutar una acción sobre una tabla, vista, secuencia, disparador o procedimiento almacenado específico. Nos permiten acceder y realizar cambios en los datos de otros usuarios. Puede incluir permisos para pasar privilegios de uno a otro usuario (with grant option). Los privilegios son: alter, execute, delete, index, insert, references, select, update, all. Privilegios del sistema Derecho a ejecutar un tipo de comando SQL sobre objetos de un esquema, objetos de un tipo especificado, sobre el sistema o sobre un usuario. El administrador de la base de datos puede tener cualquier variedad de privilegios del sistema. Existen unos 80 privilegios distintos disponibles. Sintaxis para otorgar privilegios: GRANT {privilegio1 [, privilegio2 ..] | rol}|ALL [privileges] [(columna1[, columna2])] ON [usuario] objeto TO {usuario| rol | public} [,{usuario| rol | public}] [WITH GRANT OPTION]|[WITH ADMIN OPTION] Retirada de privilegios De objetos a los usuarios o roles: REVOKE {priv_objeto[,priv_objeto]...|ALL [privileges]} ON [usuario.] objeto FROM {usuario|rol|PUBLIC} [,{usuario|rol|PUBLIC}]...; De sistema o roles a usuarios o a roles: REVOKE {priv_sistema|rol} [, {priv_sistema|rol} ]... FROM {usuario|rol|PUBLIC} [,{usuario|rol|PUBLIC}]...; ROLES BASICOS Es un objeto creado para simplificar el manejo de los privilegios en la Base de Datos Consiste en agrupar una serie de privilegios en un objeto llamado rol, para que posteriormente este objeto sea otorgado a diferentes usuarios o a otros roles. Algunas propiedades de los roles son: Una vez creados no tienen propietario. Pueden ser asignados a algún usuario de la base de datos o a otro rol. Pueden ser habilitados o deshabilitados por un usuario que tenga el privilegio CREATE ROLE. Se puede dar acceso a cualquier usuario a un rol excepto a uno mismo (reflexiva). Las definiciones de roles son almacenadas en el diccionario de datos. Un rol puede decidir el acceso de un usuario a un objeto, pero no puede permitir la creación de objetos. Operaciones con roles Creación de un rol: CREATE ROLE nombre_rol Modificación de un rol: ALTER ROLE nombre_rol Borrado de un rol: DROP ROLE nombre_rol Activar, desactivar un rol: SET ROLE nombre_rol Conceder un permiso o un rol a un rol: GRANT privilegio[,privilegio,...] ON nombre_tabla TO nombre_rol Denegar un permiso o un rol a un rol: REVOKE privilegio FROM nombre_rol PERFILES Son límites que permiten compartir recursos en la BD entre los usuarios y restringen la cantidad de recursos del sistema y de la BD disponible para un usuario. Los recursos que pueden ser limitados por perfil son los siguientes: RECURSO SESSIONES_PER_USER DESCRIPCION El número de sesiones concurrentes que un usuario puede tener en una instancia. CPU_PER_SESSION El tiempo de CPU, en centenas de segundos, que una sesión puede utilizar. CONNECT_TIME El número de minutos que una sesión puede permanecer activa. IDLE_TIME El número de minutos que una sesión puede permanecer sin que sea utilizada de manera activa. LOGICAL_READS_PER_ SESSION El número de bloques de datos que se pueden leer en una sesión. LOGICAL_READS_PER_ CALL El número de bloques de datos que se pueden leer en una operación. PRIVATE_SGA La cantidad de espacio privado que una sesión puede reservar en la zona de SQL compartido de la SGA. COMPOSITE_LIMIT El número de total de recursos por sesión, en unidades de servicio. Esto resulta de un cálculo ponderado de CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION y PRIVATE_SGA, cuyos pesos se pueden variar con el comando ALTER RESOURCE COST.