Instituto Profesional DuocUC Escuela de Ingeniería Administrando Usuarios Jaime Amigo P. © 2006, Santiago - Chile Instituto Profesional DuocUC Escuela de Ingeniería Objetivos Después de completar esta lección, usted deberá saber: • Crear y manejar cuentas de usuarios de bases de datos • Crear y manejar roles • Otorgar y Revocar privilegios • Controlar los recursos usados por usuarios 2 Instituto Profesional DuocUC Escuela de Ingeniería Cuentas de Usuarios de Bases de Datos Cada cuenta de usuario de base de datos debe tener un: • Nombre de usuario único • Método de Autentificación • Tablespace Default • Tablespace Temporal • Perfil de Usuario Cuentas de Usuarios de Bases de Datos Una de las tareas elementales de un DBA es la de Administrar Usuarios. Cada usuario que se conecta a una base de datos debe tener una cuenta. Cuentas genéricas son difíiciles de auditar y es una mala práctica en algunas corporaciones, por tanto, se debe evitar crear este tipo de cuentas (consultor, gerente, ventas, consulta, etc). Se puede crear una nueva cuenta de usuario de base de datos con el comando CREATE USER. Cuando se crea una nueva cuenta, como mínimo se debe asignar un nombre único y un método de autentificación. Opcionalmente, se puede otorgar atributos adicionales a la cuenta de usuario. Para cambiar o asignar nuevos atributos a una cuenta existente se utiliza el comando ALTER USER. Cada cuenta de usuario tendrá: •Un nombre de usuario único. Este nombre no puede exceder los 30 caracteres, no puede contener caracteres especiales, y debe comenzar con una letra. •Un método de autentificación. El método más común de autentificación es una contraseña, pero Oracle 10g soporta varios otros tipos incluyendo biométrico, certificados y la autentificación simbólica (token). •Un tablespace por defecto. Un lugar en donde el usuario creará objetos si el usuario no especifica otro tablespace. Que el usuario tenga un tablespace por defecto no implica que el usuario tiene acceso a crear objetos en dicho tablespace o cuota de espacio dentro del tablespace en el cual crear. Ambos privilegios se otorgar por separado. •Un tablespace temporal. Un lugar en donde el usuario puede crear objetos temporales tales como sorts y tablas temporales. •Un perfil de usuario. Un conjunto de recursos y restricciones de password asignadas al usuario 3 Instituto Profesional DuocUC Escuela de Ingeniería Creando un Usuario Seleccione Users desde la página Administration. Haga Click en el botón Create. Creando un Usuario • En Oracle Enterprise Manager se puede gestionar una lista de usuarios de base de datos que tienen permitidos accesos. Para ello existe una plantilla Users en la cual se puede crear, borrar y modificar los seteos para un usuario. • La plantilla de propiedades de usuarios consiste de varias páginas. Se puede crear o editar seteos de seguridad para el usuario de la base de datos Para crear un usuario: 1. Navegar a la homepage Database. 2. Seleccione Administration, luego baje hasta la sección de Schema y luego a Users & Properties. Finalmente seleccione Users haciendo un click. Aparecera una página que contiene la lista de usuarios válidos para la base de datos. 3. Hacer click en Create para crear un nuevo usuario. 4 Comando SQL para crear un usuario CREATE USER user IDENTIFIED [BY password | EXTERNALLY] [DEFAULT TABLESPACE tablespace] [TEMPORARY TABLESPACE tablespace] [QUOTA {integer [K|M] | UNLIMITED} ON tablespace [QUOTA {integer [K|M] | UNLIMITED} ON tablespace ]…] [PASSWORD EXPIRE] [ACCOUNT { LOCK | UNLOCK}] [PROFILE {profile | DEFAULT}] Dónde user: Nombre del usuario BY password: especifica que para que el usuario se autentifique con la base de datos necesita ingresar una password mientras se logea EXTERNALLY: indica que el usuario se autentifica por el sistema operativo DEFAULT TEMPORARY tablespace: Indica el default o tablespace temporal para el usuario QUOTA: Define el maximo de espacio permitido para crear objetos propiedad del usuario sobre dicho tablespace. La cuota se puede definir en KB o MB. UNLIMITED indica que el usuario tiene espacio ilimitado para crear objetos sobre dicho tablespace. PASSWORD EXPIRE: Fuerza al usuario a cambiar la password cuando se logea a la base de datos usando SQL`Plus (esta opción solo es valida si el usuario se autentifica por la base de datos) ACCOUNT LOCK/UNCLOCK: Permite bloquear o desbloquear una cuenta de usuario, UNLOCK es el valor por default PROFILE: Es usado par controlar el uso de recursos y especificar el mecanismo de control de password para el usuario Las password son mantenidas por Oracle en el diccionario de datos. 5 Instituto Profesional DuocUC Escuela de Ingeniería Perfiles y Usuarios Usuarios son asignados solo a un perfil (Profile) a la vez. Perfiles: • Control del uso de recursos • Administración de passwords Perfiles y Usuarios Los perfiles definen un conjunto de limitaciones de recursos al uso de la base de datos y de la instancia. Los perfiles tambien imponen limitaciones sobre la password (largo, fecha de expiración, etc). Cada usuario esta asignado a un perfil y puede tener asociado solo un perfil a la vez. Existe un perfil por defecto básico que sirve de base para todos los otros perfiles. Como se observa en la figura, existen limitaciones sobre el uso de CPU por sesión, CPU por llamadas o tiempo máximo de conexión, etc. Los perfiles solo pueden imponer limitaciones de uso de recursos a usuarios, si el parámetro de inicialización RESORCE_LIMIT. Con RESOURCE_LIMIT seteado a FALSE, las limitaciones del perfil son ignoradas. Los perfiles permiten al DBA controlar los siguientes recursos del sistema: • CPU. El recurso CPU puede ser limitado por sesión. Un factor CPU/session de 1000 significa que si una sesión individual esta usando este perfil de consumo mas de 10 segundos de tiempo de CPU, el usuario recibe el siguiente error: ORA02392: exceeded session limit on CPU usage, you are being logged off 6 Perfiles y Usuarios (continuación) Una limitación por llamada es la misma cosa, pero en vez de limitar la sesión total del usuario, evita que cualquier comando simple consuma mucha CPU. Si CPU/Call esta limitado y el usuario excede la limitación, el comando se aborta y aparece el siguiente error: ORA-02393: exceeded call limit on CPU usage • Network/Memory: Cada sesion de base de datos consumo memoria del sistema y recursos de red. - Connect Time: Cuantos minutos un usuario puede estar conectado antes de ser automáticamente desconectado por el servidor. - Idle Time: Cuantos minutos una sesion de usuario puede estar IDLE antes de ser desconectada. El tiempo IDLE es calculado solamente por el proceso servidor. El tiempo Idle no considera largas consultas y otras aplicaciones. - Concurrent Sessions: Cuantas sesiones concurrente pueden ser creadas usando la cuenta de la base de datos. - Private SGA: Limita la cantidad de espacio consumido dentro de la SGA para ordenamientos por ejemplo. Esta restricción solo tiene efecto cuando se usan servidores compartidos • Disk I/O: Limita la cantidad de datos que un usuario puede leer en la sesión. Reads/Session y Reads/Call colocan un límite sobre el número total de lecturas de memoria y disco. Esto puede utilizarse para asegurar que no habran sentencias que consuman mucho I/O. Los perfiles también permiten combinaciones CPU/session, reads/session, connect time, y private SGA. 7 Instituto Profesional DuocUC Escuela de Ingeniería Autentificación de Usuarios • • • Password External Global Autentificación de Usuarios Autentificar significa verificar la identidad de alguien (usuario, dispositivo u otra entidad) que desee usar datos, recursos o aplicaciones. Validando esa identidad establece una relación de confianza para otras interacciones. La autentificación también establece . Después de la autentificación, el proceso permite o limita niveles de acceso sobre entidades. Cuando se crea una cuenta de usuario se debe decidir la técnica de autentificación a utilizar, sin embargo, esta puede ser modificada después. Password: También referencia como autentificación por la base de datos, crea cada usuario con una password asociada que debe ser entregada cuando el usuario intenta establecer una conexión. Cuando se setea una password, es posible expirarla inmediatamente, lo que fuerza al usuario a modificarla después de su primer login. Si se planifica que las password de usuario expiren, se debe tener certeza que los usuarios tienen la posibilidad de cambiar la password. Algunas aplicaciones finales de usuarios no tienen esta funcionalidad. 8 Autentificación de Usuarios (continuación) External: También referenciada como autentificación por sistema operativo, usuarios pueden conectarse a Oracle mas convenientemente sin especificar un usuario o contraseña. Con este tipo de autentificación, la base de datos confía en el sistema operativo o servicio de autentificación de red para restringir el acceso de las cuentas a la base de datos. Una password de base de datos no debe ser usada con este tipo de login. Si el sistema operativo o servicio de autentificación de red lo permite, se puede tener este tipo de autentificación de usuarios. Para poder realizarlo, es preciso setear el parámetro de inicialización OS_AUTHENT_PREFIX y usar este prefijo en las cuentas de Oracle. El parámetro OS_AUTHENT_PREFIX define un prefijo que Oracle agrega al comienzo de cada cuenta de usuario del sistema operativo. El valor por defecto es OPS$ por compatibilidad con versiones previas de Oracle. Oracle compara el prefijo username con el username Oracle en la base de datos cuando un usuario intenta conectarse. Por ejemplo, asumamos que OS_AUTHENT_PREFIX esta seteado como sigue: OS_AUTHENT_PREFIX=OPS$ Si un usuario con una cuenta de sistema operativo llamada tsmith esta conectándose a una base de datos Oracle y esta autentificado en el sistema operativo, Oracle chequea que esta corresponda a un usuario de base de datos llamado OPS$tsmith y si es así, permite al usuario conectarse. Todas las referencias a un usuario autentificado por sistema operativo deben incluir el prefijo, como se ha visto OPS$tsmith. Note: El texto del parámetro de inicialización OS_AUTHENT_PREFIX es case sensitive (sensible a mayúsculas y minúsculas). Global: Es una autentificación fuerte a través de la opción Oracle Advanced Security, que permite a los usuarios ser identificados a través del uso de dispositivos biométricos, certificados X.509, kerberos, Radius, dispositivos token y Oracle Internet Directory. 9 Instituto Profesional DuocUC Escuela de Ingeniería Tablespace Default, Temporary y Locking • • Default: Localización Default de objetos de bases de datos (Vistas, Indices, Triggers, etc) Temporary: Usados para Ordenamiento (sorting) Default, Temporary Tablespaces y Locking Cada usuario tiene asignado un tablespace por default. El tablespace default es el tablespace donde los objetos son creados si no se especifica en la cláusula CREATE TABLE o INDEX el tablespace durante la creación de los mismos. Si no se especifica un tablespace por default, el sistema define uno. El tablespace temporary es aquel donde ocurren las acciones de ordenamiento. Hay varias maneras que estos ordenamientos tienen lugar, por ejemplo cuando se crea un índice o se usa la cláusula ORDER BY, GROUP BY en una sentencia SELECT o SELECT DISTINCT, MERGE JOIN o CREATE INDEX. Sino se especifica éste, el sistema define uno a utilizar. Cuando se crea un usuario, éste puede tener un estado de bloqueado o desbloqueado. Si esta bloqueado, significa que no puede logearse a la base de datos. Todas las cuentas nuevas de usuario tiene asignado por defecto desbloqueado (unlocked). 10 Instituto Profesional DuocUC Escuela de Ingeniería Usuarios de Base de Datos y Schemas • • • La colección de objetos propiedad de un usuario es llamado Schema. Schema Objects Un usuario puede estar asociado solo un Schema. Indexes Username y schema a menudo son usados alternativamente. Stored program units Tables Triggers Views Sequences Synonyms User-defined data types Database links Usuarios de base de datos y Schemas Un esquema (schema) es una colección de objetos de una base de datos propiedad de un usuario. Un esquema tiene el mismo nombre que el usuario propietario. Los Schema objects incluyen estructuras tales como: tablas, vistas, indices y código Java o PL/SQL. No hay relación entre tablespace y esquemas. Objetos en el mismo esquema pueden estar en tablespace diferentes y un tablespace puede contener objetos de diferentes esquemas. Cuando se crea un usuario de base de datos, un esquema correspondiente con el mismo nombre se crea para ese usuario. Un usuario puede estar asociado sólo a un esquema del mismo nombre y en ese caso, username y schema a menudo son usados alternativamente. Los Schema objects que ocupan espacio dentro de la base de datos (tales como tablas e indices) son creados en el tablespace por defecto a menos que se especifique un lugar diferente. Los propietario de esquemas tiene control total de sus objetos dentro de este y pueden otorgar permisos a otros usuarios para usar dichos objetos. 11 Instituto Profesional DuocUC Escuela de Ingeniería Checklist para Crear Usuarios • • • • • Seleccionar un perfil Seleccionar una técnica de autentificación Asignar un tablespace Default y Temporal Otorgar privilegios y roles al usuario Decidir las cuotas sobre el tablespace Checklist para creación de usuarios Al crear un usuario, el DBA debe asignar un perfil, seleccionar un método de autentificación y asignar un tablespace temporal y por defecto. Por defecto cuando un usuario es creado, éstos no tienen ningún privilegio, lo que significa que no tienen habilitadas acciones para realizar sobre la base de datos. Database Control automáticamente otorga algunos pocos privilegios que permiten a un usuario conectarse y crear algunos objetos en la base de datos. Sin embargo, si un usuario no tiene cuota en ningún tablespace, el usuario no podra crear objetos. Un usuario que no tiene asignado ningún privilegio, solo puede acceder a los objetos creados por el mismo. 12 Instituto Profesional DuocUC Escuela de Ingeniería Privilegios Hay 2 tipos de privilegios: • System: Habilita al usuario a ejecutar acciones particulares en la base de datos • Object: habilita al usuario a accesar y manipular un objeto específico Privilegios Un privilegio es un derecho a ejecutar un tipo de sentencia SQL en particular o acceder a objetos de otro usuario. Oracle posee un fino detalle de privilegios que permiten o no a un usuario ejecutar acciones en una base de datos. Los privilegios se dividen en 2 catagerias: • Privilegios de Sistema. Cada privilegio de sistema permite a un usuario ejecutar una operación en particular en la base de datos o operaciones sobre clases de base de datos; por ejemplo, el privilegio de crear tablespace es un privilegio de sistema. Los privilegios de sistema pueden ser otorgados por el DBA o por alguien que explicitamente tenga el permiso de administrador. Hay sobre 100 privilegios de sistema disponibles. • Privilegios de Objetos. Estos permiten a un usuario ejecutar una acción particular sobre un objeto, tal como tabla, vista, secuencia, procedure, función o package. Sin permisos específicos, los usuarios pueden accesar solo a sus objetos (los creados por ellos mismos). Los privilegios de objetos puede ser otorgados por el dueño del objeto, por el DBA o por alguien que explicítamente se le otorgó privilegio sobre el objeto. 13 Instituto Profesional DuocUC Escuela de Ingeniería Privilegios de Sistema Privilegios de Sistema Para otorgar Privilegios de Sistema, haga click sobre Systems Privileges, seleccione el privilegio apropiado desde la lista disponible y muevalo a caja Selected System Privileges haciendo click en Move arrow. Otorgar un privilegio con la cláusula ANY significa que el privilegio cruza esquemas. Por ejemplo, el privilegio CREATE TABLE permite al usuario crear una tabla, pero solo dentro de su propio esquema. El privilegio SELECT ANY TABLE permite a un usuario hacer select sobre tablas propiedad de otros usuarios. Seleccionado el checkbox Admin Option permite al usuario administrar el privilegio y otorgar privilegios de sistema a otros usuarios. Sea cuidadoso al considerar requerimientos de seguridad antes de otorgar permisos de sistema. Algunos privilegios de sistema son usualmente otorgados solo a administradores: • RESTRICTED SESSION: Este privilegio permite al usuario logearse aún si la base de datos ha sido abierta en modo restringuido. 14 Privilegios de Sistema (continuación) • SYSDBA y SYSOPER: Esos privilegios permiten al usuario bajar, subir, ejecutar recuperación y otras labores administrativas en la base de datos. • DROP ANY object: El privilegio DROP ANY permite al usuario borrar objetos de los cuales no es dueño. • CREATE, MANAGE, DROP, ALTER TABLESPACE: Usuarios no administradores NO DEBEN tener control sobre tablespaces. • CREATE ANY DIRECTORY: Oracle permite a desarrolladores llamar a código externo (por ejemplo, una librería C) desde un PL/SQL. Como medida de seguridad, el directorio del sistema operativo donde reside el código debe estar ligado a un directorio virtual de objetos Oracle. Con el privilegio CREATE ANY DIRECTORY, un usuario puede potencialmente llamar objetos de código inseguro. • EXEMPT ACCESS POLICY: Este privilegio permite a un usuario bypasear funciones de seguridad colocadas en tablas o vistas. • GRANT ANY OBJECT PRIVILEGE: Este privilegio permite al usuario otorgar permisos a objetos sobre objetos de los cuales no es dueño. • ALTER DATABASE and ALTER SYSTEM: Usuarios no administradores, no deben tener permisos para cambiar la base de datos o instancia. 15 Instituto Profesional DuocUC Escuela de Ingeniería Privilegios de Objetos Para otorgar privilegios de objetos: • Seleccionar el tipo de objeto • Seleccionar los objetos • Seleccionar privilegios Privilegios de Objetos Para otorgar privilegios de objetos, hacer click en el link Object Privileges, seleccionar el tipo de objeto que tu deseas otorgar privilegios y hacer click en el boton ADD. Elija los objetos a los que desea otorgar privilegios entrando el username.object name o seleccionándolos desde el listado. Luego, seleccione el privilegio apropiedo del listbox Available Privileges y haga click en el botón Move. Seleccione Grant del checkbox de la lista de privilegios de objetos para permitir al usuario conceder a otros usuarios el mismo acceso. 16 Instituto Profesional DuocUC Escuela de Ingeniería Asignando Cuotas a Usuarios Usuarios que no tienen el privilegio de sistema UNLIMITED TABLESPACE deben tener una cuota antes que ellos puedan crear objetos sobre dicho tablespace. Cuotas puede ser: • Unlimited (ilimitadas) • Un valor específico en megabytes o kilobytes Asignando cuotas a usuarios Cuota es un espacio asignado a un tablespace. Por defeault, un usuario no tiene cuota en ningun tablespace. Usted tiene tres opciones para proveer cuotas a un usuario sobre un tablespace. • Unlimited: Permite al usuario que use espacio sobre el tablespace sin restricción. • Value: Es un valor en kilobytes o megabytes que el usuario puede usar. Esto no garantiza que el espacio esta disponible para el usuario. Este valor puede ser mayor o menor, que el espacio actual disponible en el tablespace. • UNLIMITED TABLESPACE system privilege: Este privilegio de sistema elimina todas las cuotas individuales sobre el tablespace y da al usuario cuota ilimitadas sobre todos los tablespaces, incluyendo a SYSTEM y SYSAUX. Este privilegio debe ser otorgado con precaución. Usted no debe otorgar cuota sobre tablespace a los usuarios SYSTEM o SYSAUX. Normalmente, solo los usuarios SYS y SYSTEM deben ser los habilitados para crear objetos en el tablespace SYSTEM o SYSAUX. Los usuarios no necesitan tener cuota sobre su tablespace temporal o cualquier tablespace de undo. 17 Instituto Profesional DuocUC Escuela de Ingeniería Asignando Roles a Usuarios Asignando roles a usuarios Un rol es un conjunto de privilegios que pueden ser otorgados a usuarios o otros roles. Usted puede utilizar roles para administrar privilegios de bases de datos. Se pueden agregar privilegios a un rol y entonces otorgarlos a un usuario. El usuario puede permitir habilitar el rol y ejecutar los privilegios otorgados por el rol. Un rol contiene todos los privilegios otorgados al rol y todos los privilegios de otros roles asignados a este. Por defecto, Enterprise Manager automáticamente otorga el rol CONNECT a los nuevos usuarios. Esto permite a los usuarios conectarse a la base de datos y crear objetos en su propio esquema. 18 Instituto Profesional DuocUC Escuela de Ingeniería Roles Usuarios Michelle Roles Privilegios HR_MGR Delete empleado Ricardo Augusto HR_VENDEDOR Select empleado Update empleado Insert empleado Roles En la mayoría de los sistemas concede privilegios individuales a cada usuario es una actividad muy consumidora de tiempo y existe una alta probabilidad de error. Oracle provee mecanismos para administrar privilegios a través de roles. Los roles son grupos nombrados de privilegios relacionados que están otorgados a usuarios y a otros roles. Están diseñados para facilidad la administración de privilegios y por ende, mejoran la seguridad. Características de los roles • Privilegios se otorgar y revocan a roles, como si el rol fuese un usuario. • Los roles pueden ser otorgados o revocados de usuario o de otros roles como si fuesen privilegios de sistema. • Un rol puede consistir de ambos, privilegios de sistema y objetos. • Un rol puede ser habilitado o deshabilitado para cada usuario que se le otorgue un rol. • Un rol puede requerir una password para ser habilitado. • Los roles no son propiedad de nadie y no están en ningún esquema. En el ejemplo de la figura, el rol HR_VENDEDOR se le ha asignado privilegio de SELECT y UPDATE sobre la tabla empleado. El rol HR_MGR (Administrador) se le ha asignado privilegios de DELETE e INSERT sobre la tabla empleado y el rol de HR_VENDEDOR. El administrador tiene otorgado el rol HR_MGR y puede ahora, realizar select, delete, insert, y update a la tabla empleado. 19 Instituto Profesional DuocUC Escuela de Ingeniería Beneficios de usar Roles • • • • Facilidad de administracion de Privilegios Administración dinámica de privilegios Disponibilidad selectiva de privilegios Pueden ser otorgados a través del Sistema Operativo Beneficios de usar roles Facilidad de administración de privilegios Usar roles simplifica la administración de privilegios. Concediendo el mismo conjunto de privilegios a varios usuarios a la vez, se puede otorgar un nuevo privilegio a un rol y el rol otorgárselo a cada usuario. Administración dinámica de privilegios. Si el privilegio asociado con un rol es modificado, todos los usuarios a quien se les otorgo dicho rol adquieren los privilegios modificados automática e inmediatamente. Disponibilidad Selectiva de Privilegios Los roles pueden ser habilitados o deshabilitados ajustando privilegios temporalmente. Habilitar un rol se puede usar para verificar que el usuario tiene otorgado dicho rol. Otorgados a través del Sistema Operativo Comando del sistema operativo o utilitarios se pueden utilizar para asignar roles de usuarios en la base de datos. 20 Instituto Profesional DuocUC Escuela de Ingeniería Roles Predefinidos CONNECT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SYNONYM, CREATE SEQUENCE, CREATE DATABASE LINK, CREATE CLUSTER, ALTER SESSION RESOURCE CREATE TABLE, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER, CREATE TYPE, CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR SCHEDULER_ ADMIN CREATE ANY JOB, CREATE JOB, EXECUTE ANY CLASS, EXECUTE ANY PROGRAM, MANAGE SCHEDULER DBA Varios privilegios de sistema, varios otros roles. No otorgados a No Administradores SELECT_ CATALOG_ ROLE Ningun privilegio de sistemas pero sobre 1600 privilegios de objetos sobre el diccionario de datos Roles Predefinidos Hay varios roles definidos automáticamente por Oracle cuando se corre el script de creación de la base de datos. CONNECT es otorgado automáticamente a cualquier usuario creado con Enterprise Manager. SELECT_CATALOG_ROLE es otorgado para accesar vistas de diccionario de datos y packages (este rol esta desaprobado en favor del privilegio de sistema SELECT_ANY_DICTIONARY). El rol de DBA incluye casi todos los roles y no se debe otorgar a usuarios NO ADMINISTRADORES. Funcionalidad de Roles Otros roles que permiten administrar funciones espaciales son creados cuando esa funcionalidad se instala. Por ejemplo, XDBADIM contiene privilegios requeridos para administrar una base de datos XML si la característica esta instalada. El AQ_ADMINISTRATOR_ROLE provee privilegios para la administración avanzada de colas. El HS_ADMIN_ROLE incluye privilegios necesarios para administrar servicios heterogenos. NO se deben alterar los privilegios otorgados a estos roles funcionales sin asistencias de Soporte Oracle porque puede inhabilitar alguna funcionalidad necesaria. 21 Instituto Profesional DuocUC Escuela de Ingeniería Seguridad de Roles Roles pueden ser no por defecto. SET ROLE vacationdba; Roles pueden ser protegidos a través de autetificación. Roles pueden ser securidados programáticamente. CREATE ROLE secure_application_role IDENTIFIED USING <security_procedure_name>; Seguridad de Roles Los roles generalmente esta habilitados por defecto, lo que significa que si un rol es otorgado a un usuario, ese usuario puede ejecutar los privilegios dados a ese rol sin restricciones adicionales. Es posible: • Hacer un rol nondefault. Cuando un rol es otorgado a un usuario, el check box DEFAULT esta limpio. Ahora el usuario debe explícitamente permitir el rol antes que los privilegios de sistema sean ejecutados. • Tener un rol que requiere autentificación adicional. La autentificación por default para un rol es NONE, pero es posible tener un rol que requiera autentificación adicional antes se poder ser seteado. • Crear una aplicación segura de roles, que los habilite solo ejecutando exitósamente un procedimiento PL/SQL. El procedimiento PL/SQL puede comprobar cosas como la dirección de red del usuario, cuál programa esta corriendo, hora del día o cualquier cosa que necesite asegurar propiciamente un grupo de permisos antes de otorgar el rol y por ende, los privilegios asociados a el. 22 Ejemplos de otorgamientos de Privilegios Otorgar privilegios de select, insert, delete y update sobre la tables clientes, al usuario sales_manager. GRANT SELECT, INSERT, DELETE, UPDATE ON CLIENTES TO SALES_MANAGER; Si se otorga el privilegio especial al usuario PUBLIC; significa que todo los usuarios actuales y futuros tienen disponible dicho privilegio. Ejemplo, otorgar privilegio de SELECT a todos los usuarios de la base de datos para la tabla CLIENTES. GRANT SELECT ON CLIENTES TO PUBLIC; Ejemplos de revocación de Privilegios Eliminar el privilegio de DELETE sobre la tabla CLIENTES al usuario sales_manager REVOKE SELECT ON CLIENTES TO SALES_MANAGER; Modificar una password de un usuario ALTER USER usuario IDENTIFIED BY password; Desbloquear una cuenta de usuario ALTER USER usuario ACCOUNT UNLOCK; Se recomienda a los alumnos, investigar sobre los comandos: •CREATE USER, CREATE PROFILE, CREATE ROLE, ALTER USER, ALTER PROFILE, ALTER ROLE Mayores informaciones sobre usuarios es posible encontrarlas en las vistas del diccionario de datos: DBA_USERS y DBA_TS_QUOTAS. Mayores informaciones sobre privilegios es posible encontralas en las vistas del diccionario de datos: DBA_SYS_PRIVS, SESSION_PRIVS, DBA_TAB_PRIVS y DBA_COL_PRIVS. DBA_SYS_PRIVS: Lista privilegios del sistema otorgados a usuarios y roles SESSION_PRIVS: Lista los privilegios que estan actualmente disponibles para el usuario DBA_TAB_PRIVS: Lista todos los grant de todos los objetos de la base ed datos DBA_COL_PRIVS: Usuarios a los que han sido otorgados privilegios sobre columnas de tablas 23 TAREA INVESTIGACION Analice y comente los siguientes comandos asociados a la lección. a) CREATE USER aaron IDENTIFIED BY soccer DEFAULT TABLESPACE data TEMPORARY TABLESPACE temp QUOTA 15M ON data PASSWORD EXPIRE; b) CREATE USER aaron IDENTIFIED BY EXTERNALLY DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 15M ON data PASSWORD EXPIRE; c) ALTER USER aaron QUOTA 0 ON USERS; d) DROP USER aaron; e) DROP USER aaron CASCADE; f) GRANT CREATE SESSION TO marcela; e) GRANT CREATE SESSION TO marcela WITH CHECK OPTION; h) REVOKE CREATE TABLE FROM marcela; 24 Instituto Profesional DuocUC Escuela de Ingeniería Fin de la Lección Jaime Amigo P. © 2006, Santiago - Chile