BASES DE DATOS I CONTROL DE ACCESO curso 2008 Control de Acceso Seguridad: proteger los datos contra usuarios no autorizados Comandos usados por el BDA o el propietario para conceder/revocar permisos de acceso a los objetos de la BD • Conceder Privilegios (Grant) • Revocar Privilegios (Revoke) a • Usuarios • Roles 22/10/2008 Bases de Datos I Usuarios Oracle permite acceder a la base de datos, crear un esquema y manipular datos a través de usuarios CREATE USER nombre_usuario IDENTIFIED {BY password} [DEFAULT TABLESPACE tablespace_defecto] [QUOTA {integer [K|M]| UNLIMITED} ON tablespace]; DROP USER nombre_usuario [ CASCADE ]; 22/10/2008 Bases de Datos I Roles Grupos de privilegios relacionados que se otorgan a usuarios CREATE ROLE nombre_rol[ IDENTIFIED BY password ]; Oracle cuenta con roles predefinidos: • CONNECT: permite conexión a BD y consulta de los datos de mis esquemas • RESOURCE: permite la gestión de objetos de mi esquema (creación, modificación, borrado de vistas, tablas, ...) • DBA: permite la administración de la BD DROP ROLE nombre_rol; 22/10/2008 Bases de Datos I Privilegios sobre objetos: DELETE: borrar objeto o parte de él INDEX: crear un índice sobre el objeto INSERT: añadir registros en tablas o vistas SELECT: seleccionar registros en tablas, vistas REFERENCES: crear claves ajenas a una tabla UPDATE: actualizar registros de tablas o vistas ALTER: modificar la estructura de una tabla o secuencia 22/10/2008 Bases de Datos I Privilegios (2) de sistema: ALTER ANY INDEX ALTER ANY SECUENCE CREATE ANY TABLE CREATE TABLE CREATE USER INSERT ANY TABLE SELECT ANY TABLE GRANT ANY PRIVILEGE DROP ANY VIEW ... 22/10/2008 Bases de Datos I GRANT: Concesión de privilegios Se utiliza para otorgar privilegios del sistema, roles o un privilegio sobre un objeto a usuarios y/o roles GRANT {grant_system_privileges | grant_object_privileges} ; grant_system_privileges: {system_privilege| role | ALL PRIVILEGES} TO {user | role| PUBLIC}... [IDENTIFIED BY password] [WITH ADMIN OPTION] 22/10/2008 Bases de Datos I GRANT: Concesión de privilegios (2) grant_object_privileges: { object_privilege | ALL [PRIVILEGES] } [( column [, column]... )] ... ON schema . object TO {user | role| PUBLIC} ... [WITH GRANT OPTION] [WITH HIERARCHY OPTION] 22/10/2008 Bases de Datos I REVOKE: Eliminación de privilegios Se utiliza para revocar privilegios del sistema, roles o un privilegio sobre un objeto de usuarios y/o roles, REVOKE {revoke_system_privileges | revoke_object_privileges} ; revoke_system_privileges: {system_privilege| role | ALL PRIVILEGES} FROM {user | role | PUBLIC} 22/10/2008 Bases de Datos I REVOKE: Eliminación de privilegios (2) revoke_object_privileges: { object_privilege | ALL [PRIVILEGES] } [( column [, column]... )] ... ON schema . object FROM {user | role| PUBLIC} ... [CASCADE CONSTRAINTS] 22/10/2008 Bases de Datos I Ejemplo: Consola usuario admin: CONNECT admin/adminpwd; CREATE ROLE ventas; GRANT ALL ON facturas TO ventas; CREATE USER emp1 IDENTIFIED BY emp1pwd; GRANT CONNECT TO emp1; GRANT ventas TO emp1; 22/10/2008 Bases de Datos I Ejemplo (2) Consola usuario emp1: CONNECT emp1/emp1pwd; SELECT * FROM facturas WHERE ... Ok UPDATE facturas SET state=‘P’ WHERE ... Ok GRANT ventas TO emp2; ERROR… ORA-01031: insufficient privileges UPDATE facturas SET total=100 WHERE ... Ok 22/10/2008 Bases de Datos I Ejemplo (3) Consola usuario admin: CONNECT admin/adminpwd; REVOKE UPDATE ON facturas FROM ventas; GRANT UPDATE(state) ON facturas TO ventas; COMMIT; Consola usuario emp1: ... UPDATE facturas SET total=100 WHERE ... ERROR… ORA-01031: insufficient privileges 22/10/2008 Bases de Datos I Ejemplo (4) create role conectarse; grant connect,resource to conectarse; grant conectarse to scott; 22/10/2008 Bases de Datos I Roles SYSDBA y SYSOPER SYSDBA: Usualmente asignado a las cuentas DBA. SYSOPER: Generalmente dado a las cuentas de los operadores de la base de datos. 22/10/2008 Bases de Datos I Rol SYSOPER SYSOPER: Un usuario con este privilegio puede: • STARTUP, SHUTDOWN. • ALTER DATABASE OPEN|MOUNT. • ALTER DATABASE BACKUP CONTROLFILE. • RECOVER DATABASE. • ALTER DATABASE ARCHIVELOG. 22/10/2008 Bases de Datos I Rol SYSDBA SYSDBA: Un usuario con este privilegio puede: • Recibir todos los privilegios de SYSOPER. • CREATE DATABASE. • ALTER DATABASE [BEGIN|END] BACKUP. • RESTRICTED SESSION. • RECOVER DATABASE. 22/10/2008 Bases de Datos I