En este capítulo se conocerá cómo se definen y modifican los usuarios, perfiles y roles de una base de datos.
Es una tarea bastante común de cualquier DBA, ya que constantemente se están incorporando nuevos usuarios al sistema o modificando las opciones de éstos. Aquí se repasarán todas las opciones que permiten manejar estas características y se aprenderá a simplificar la carga mediante la administración de perfiles y roles, que son conceptos que controlan diferentes tipos de recursos.
- Rol: Un rol es utilizado para asignar privilegios a los usuarios y que les permiten acceder a diferentes objetos y operaciones.
- Perfil: Un perfil denota la cantidad de recursos del sistema que se permite consumir a un usuario o grupo de ellos.
- Un usuario puede ser incluido en ambas entidades al mismo tiempo.
Cuando se da de alta a un usuario basta, como mínimo, con indicar el nombre y el password de la cuenta (esquema) que se está creando. Enseguida se asigna un espacio físico al nuevo esquema dentro de la base de datos con los parámetros por defecto.
Para crear un usuario especificando las opciones adecuadas sin considerar los valores por defecto, se debería respetar la siguiente sintaxis:
CREATE USER nombre_usuario
IDENTIFIED BY password
[DEFAULT TABLESPACE nombre_tablespace]
[TEMPORARY TABLESPACE nombre_tablespace]
[QUOTA [número, K o M o UNLIMITED] ON nombre_tablespace1]
[, QUOTA [número, K o M o UNLIMITED] ON nombre_tablespace2]
[PROFILE nombre_perfil]
[PASSWORD EXPIRE]
[ACCOUNT LOCK o ACCOUNT UNLOCK]
Donde los parámetros corresponden a lo siguiente:
- Username: Nombre del usuario que se está creando.
- Password: Clave de inicio que se le otorga al usuario. Luego él podrá reemplazarla por la que desee.
- Default Tablespace: Es el tablespace por defecto al que se conectará el usuario cada vez que ingrese a la base de datos y donde guardará todos sus objetos. Si no se especifica, entonces se conectará al tablespace system.
- Temporary Tablespace: Es el tablespace temporal que utilizará el usuario en todas sus conexiones.
- Quota: Cuota de disco (en Kilobytes o Megabytes) que le es otorgada al usuario en cada uno de los tablespaces a los que puede acceder. Si se indica "UNLIMITED" entonces el usuario podrá utilizar todo el espacio que quiera dentro del tablespace designado.
- Profile: Es el nombre del perfil que ha sido asignado a este usuario.
- Password expire: Establece que el password del usuario expirará en forma automática y, por lo tanto, deberá cambiarlo al iniciar su próxima sesión.
- Account lock (o unlock): Permite establecer si la cuenta debe permanecer bloqueada o no inmediatamente después de crearla.
La forma de modificar usuarios a través de comandos es utilizando la opción Alter User, cuya sintaxis completa es muy similar a la de creación de usuarios. Todos los parámetros que fueron establecidos en el instante de la creación pueden ahora modificarse con esta instrucción:
ALTER USER nombre_usuario
IDENTIFIED BY password
[DEFAULT TABLESPACE nombre_tablespace]
[TEMPORARY TABLESPACE nombre_tablespace]
[QUOTA [número, K o M o UNLIMITED] ON nombre_tablespace1]
[, QUOTA [número, K o M o UNLIMITED] ON nombre_tablespace2]
[PROFILE nombre_perfil]
[PASSWORD EXPIRE]
[ACCOUNT LOCK o ACCOUNT UNLOCK]
Es tan poderosa que da la sensación de estar creando al usuario de nuevo, pero no es así porque todos los objetos que tuviera creados bajo su esquema siguen permaneciendo allí.
Para eliminar un usuario se ejecuta la siguiente instrucción:
DROP USER nombre_usuario [CASCADE]
Y la opción Cascade se hace obligatoria cuando el usuario posee objetos en su esquema (tablas, vistas, etc.) y debemos borrarlos junto con él. Sin usar esta opción no podríamos eliminar un usuario con objetos.
Los perfiles se crean para limitar las posibilidades de los usuarios del sistema de base de datos. Por ejemplo, se pueden establecer 3 tipos de usuarios:
- Administradores: Que podrían tener acceso a recursos ilimitados dentro del sistema.
- Desarrolladores: Que podrían disponer de un número ilimitado de sesiones pero restringida la utilización de la CPU.
- Otros.
En síntesis, los perfiles se utilizan para suavizar las tareas de administración de la seguridad, manteniendo siempre bajo control los accesos a los recursos de todos los usuarios, por muchos que éstos puedan llegar ser.
Los perfiles se crean y modifican con los comandos CREATE PROFILE y ALTER PROFILE. La sintaxis de estos comandos no necesitan ser repetidas aquí porque vienen extensamente explicados en la ayuda del software; sólo vale la pena destacar que algunas de las cláusulas hacen referencia a cuánto ciclo de CPU se le asignará a cada usuario, cuántas sesiones concurrentes podrán tener, etc.
Los Roles constituyen la forma más segura y rápida de asignar recursos a los grupos de usuarios. Es una tarea muy tediosa para cualquier DBA tener que asignar o revocar permisos a todos los usuarios, de a uno por uno, y es por eso que agrupando un conjunto de usuarios bajo las mismas características es posible manejar sus permisos como un grupo.
Para crear roles se utiliza la siguiente sintaxis:
CREATE ROLE nombre_rol NOT IDENTIFIED o IDENTIFIED BY password
Y para asignar el rol a un usuario o para comenzar a asignar / quitar ciertos privilegios al rol se debe utilizar los comandos siguientes:
- Grant: Otorga privilegios a un rol (o a un usuario cualquiera) o también asigna un rol a un usuario.
- Revoke: Elimina privilegios otorgados previamente a un rol (o a un usuario).
Los roles o privilegios se pueden asignar varios al mismo usuario o grupo en una sola línea de comandos, siguiendo la sintaxis siguiente:
GRANT nombre_rol o nombre_privilegio [, nombre_rol o nombre_privilegio]
TO nombre_usuario o nombre_rol o PUBLIC [, nombre_usuario o nombre_rol]
[WITH ADMIN OPTION]
Ejemplo:
- Creación del rol ROLE_DML:
- CREATE ROLE role_dml NOT IDENTIFIED;
- Asignar el privilegio de Select al rol recién creado:
- GRANT select TO role_dml;
- Asignar el rol a los usuarios JPEREZ y LGONZALEZ:
GRANT role_dml TO jperez, lgonzalez;
Esto hace que los usuarios anteriores posean el privilegio de SELECT. Cada uno de los usuarios que se incorporen a este rol, tendrá el mismo privilegio recién mencionado.
Si los privilegios se otorgan con la cláusula "with admin option" esto quiere decir que los usuarios que reciben los privilegios pueden a su vez otorgarlos a otros.
No hay comentarios:
Publicar un comentario