Roles en Oracle
Gestionar la seguridad de la base de datos otorgando privilegios directamente a las cuentas de usuario uno a uno tiene un problema:
- Puede suponer una gran carga de trabajo y pérdida de tiempo para empresas grandes.
- Ejemplo: Cada vez que se de alta un nuevo usuario que pertenezcan a una categoría hay que otorgarle 20 privilegios. Esto requiere un tiempo y llevar un gran control.
Para solucionar este problema existe el concepto de Rol:
- Un Rol es un conjunto de privilegios y recursos, puede ser otorgado o eliminado de igual forma que un privilegio.
- Puede activarse/desactivarse temporalmente dentro de una sesión.
- El nombre de un Rol no puede ser el mismo que el de un privilegio o de un usuario.
- A un Rol se le puede conceder otro Rol.
- En el caso anterior, en vez de otorgar los 20 privilegios a cada usuario, se otorga una única vez los privilegios al Rol y posteriormente se otorga el Rol a los usuarios.
SINTAXIS
Para crear un Rol:
- CREATE ROLE nombre_rol
Para conceder un privilegio a un Rol:
- GRANT privilegio TO nombre_rol [WITH ADMIN OPTION] [WITH GRANT OPTION]
Para conceder un Rol a un Usuario:
- GRANT nombre_rol TO usuario [WITH ADMIN OPTION] [WITH GRANT OPTION]
Para conceder un Rol a un Rol:
- GRANT nombre_rol1 TO nombre_rol2 [WITH ADMIN OPTION] [WITH GRANT OPTION]
La cláusula WITH GRANT OPTION permite al destinatario otorgar o eliminar el privilegio o rol a otros usuarios o roles.
La cláusula WITH ADMIN OPTION permite lo mismo que la cláusula anterior pero además puede modificarlo o borrarlo.
PRINCIPALES ROLES
Hay más de 50 roles en Oracle, las más importantes son:
- CONNECT: Desde Oracle 11g se utiliza el CREATE SESSION.
- RESOURCE: Desde Oracle 11g se utiliza UNLIMITED TABLESPACE.
- DBA: Este Rol posee la mayoría de privilegios de sistema.
Puede gestionar toda la base de datos excepto el arranque y la parada.
SELECT_CATALOG_ROLE: Tiene muchos privilegios del Diccionario de Datos pero no tiene privilegios de sistema ni de datos de usuario. Permite monitorizar la base de datos y generar informes sin permitir ver los datos de los usuarios.
roles