You are on page 1of 7

Administracin de Oracle 9i

Gestin de Privilegios y Roles Existen dos tipos de privilegios ?? Sistema: poder conectarse a la BBD, poder crear objetos, modificarlos, eliminarlos,... ?? Objeto: acceder a una tabla, poder modificar registros, poder ejecutar un procedimiento,... Privilegios de Sistema Existen alrededor de 126 privilegios del sistema, a continuacin vemos los ms destacados Categora Ejemplo CREATE SESSION ALTER SESSION RESTRICTED SESSION

SESSION

TABLESPACE

CREATE / ALTER / DROP TABLESPACE UNLIMITED TABLESPACE

TABLE

CREATE TABLE CREATE / ALTER / DROP ANY TABLE SELECT / INSERT / UPDATE / DELETE ANY TABLE

INDEX

CREATE / ALTER / DROP ANY INDEX

Consideraciones ?? No existe el privilegio CREATE INDEX, el usuario que pueda crear una tabla, podr crear un ndice (en su esquema) ?? CREATE TABLE ya incluye CREATE INDEX y ANALYZE ?? Si puedes crear una tabla, un procedimiento, etc... tambin puedes borrarlos ?? Los usuarios con el privilegio ANY podrn manipular los objetos en cualquier esquema. Es decir, si un usuario recibe el privilegio CREATE ANY TABLE, podr crear una tabla en el esquema de cualquier usuario ?? UNLIMITED TABLESPACE no se puede otorgar a un rol

- 118 -

Administracin de Oracle 9i Otorgar privilegios de sistema Para conceder privilegios utilizamos el comando GRANT GRANT system_priv TO { user | role | PUBLIC } [ WITH ADMIN OPTION ]

En la Sintaxis: system_priv user role PUBLIC WITH ADMIN OPTION especifica el privilegio a otorgar especifica el usuario que lo recibe existe la posibilidad de asignar el privilegio a un role especifica que el rol se otorga a todos los usuarios de la BBDD permite a la persona que recibe el privilegio otorgarlo a otros usuarios o roles

Consideraciones ?? Para que un usuario pueda otorgar un privilegio de sistema, ha tenido que recibirlo con la opcin WITH ADMIN OPTION ?? El usuario que goce del privilegio GRANT ANY ROLE podr otorgar cualquier rol en una BBDD ?? El usuario que reciba un privilegio con la opcin WITH ADMIN OPTION podr otorgarlo y revocarlo de cualquier usuario o rol de la BBDD

Privilegios SYSDBA y SYSOPER Los usuarios que gocen de estos privilegios de sistema sern los usuarios que puedan, entre otras cosas, arrancar y parar una BBDD (si los usuarios se autentican mediante el fichero de contraseas).

Categora SYSOPER

Acciones posibles STARTUP SHUTDOWN ALTER DATABASE MOUNT | OPEN ALTER DATABASE BACKUP CONTROLFILE TO TRACE ALTER TABLESPACE BEGIN / END BACKUP RECOVER DATABASE ALTER DATABASE ARCHIVELOG RESTRICTED SESSION

SYSDBA

Privilegios de SYSOPER WITH ADMIN OPTION CREATE DATABASE RECOVER DATABASE UNTIL

- 119 -

Administracin de Oracle 9i Ejemplo de asignacin de privilegios SYSDBA y SYSOPER al usuario SYSTEM:

SQL> GRANT SYSDBA, SYSOPER TO SYSTEM;

Desde este momento, el usuario SYSTEM podr bajar la BBDD (entre otras cosas) siempre y cuando se conecte de la siguiente manera: SQL> connect SYSTEM/MANAGER as sysdba;

Consideraciones ?? En esta asignacin no es posible aadir la clusula WITH ADMIN.OPTION ?? Estos privilegios no se pueden asignar a roles ?? En la vista V$PWFILE_USERS podemos ver qu usuarios gozan de estos privilegios ?? Para que la autenticacin se realice mediante el fichero de passwords, hemos de definir con el valor EXCLUSIVE el parmetro REMOTE_LOGIN_PASSWORDFILE del init.ora para permitir conexiones remotas

Revocar Privilegios Para revocar los privilegios otorgados a un usuario o rol utilizamos la sentencia REVOKE REVOKE system_priv [ , system_priv ] FROM { user | role | PUBLIC }

Consideraciones ?? Slo se podrn revocar aquellos privilegios otorgados directamente con un comando GRANT ?? No se producen revocaciones en cascada. Es decir, user1 otorg privilegios a user2 y, a su vez, user2 los otorg a user3, si user1 revoca los privilegios a user2, user3 no los pierde

- 120 -

Administracin de Oracle 9i Privilegios de Objeto Objeto TABLA Privilegio ALTER TABLE SELECT / INSERT / UPDATE / DELETE

VISTA

SELECT / INSERT / UPDATE / DELETE

SECUENCIA

SELECT / ALTER

PROCEDIMIENTO

EXECUTE

Otorgar privilegios de objeto Para conceder privilegios utilizamos el comando GRANT GRANT { object_priv [ (column_list) ] [, object_priv [ (column_list) ] ] | ALL PRIVILEGES } ON [schema.]object TO { user | role | PUBLIC } [ , { user | role | PUBLIC } ] [ WITH GRANT OPTION ]

En la Sintaxis: object_priv column_list ALL PRIVILEGES object WITH GRANT OPTION especifica el privilegio a otorgar se puede especificar sobre qu columnas se tendr el privilegio otorga todos los privilegios sobre el objeto especifica sobre qu objeto permite a la persona que recibe el privilegio otorgarlo a otros usuarios o roles

Consideraciones ?? Para que un usuario pueda otorgar un privilegio de objeto, este ha de estar en su esquema o bien ha tenido que recibirlo con la opcin WITH ADMIN OPTION ?? Los privilegios de objeto se revocan igual que los de sistema ?? Un usuario slo podr revocar el privilegio a los usuarios que lo hayan recibido directamente por l ?? En los privilegios de objeto s se producen revocaciones en cascada

- 121 -

Administracin de Oracle 9i Roles Un rol es un grupo de privilegios relacionados que se otorgan a usuarios o a otros roles. Caractersticas ?? ?? ?? ?? ?? ?? Los roles no pertenecen a nadie, no estn en ningn esquema Sus caractersticas se almacenan en el diccionario de datos El nombre del rol ha de ser nico en la BBDD Pueden estar formados por privilegios de sistema y privilegios de objeto Se otorgan y se revocan con los mismos comandos que se utilizan para los privilegios Es un mtodo indirecto de asignacin de privilegios

El rol es una capa intermedia entre los privilegios y los usuarios

User2 User1 User3 Usuarios

ROLE

Role

Privilegios

Creacin de Roles Para crear un role utilizamos la sentencia CREATE ROLE CREATE ROLE role [ NOT IDENTIFIED | IDENTIFIED BY password ]

En la Sintaxis: role IDENTIFIED BY es el nombre del rol indica que el rol deber activarse (en el caso que alguien lo haya desactivado) especificando un password

- 122 -

Administracin de Oracle 9i Modificacin de Roles Podemos modificar un rol para cambiar su mtodo de autenticacin mediante el comando ALTER ROLE ALTER ROLE role [ NOT IDENTIFIED | IDENTIFIED BY password ]

En la Sintaxis: role NOT IDENTIFIED IDENTIFIED BY es el nombre del rol especifica que ya no se necesitar un password para activar el rol indica que el rol deber activarse (en el caso que alguien lo haya desactivado) especificando un password

Asignar un role Un rol se puede asignar a un usuario o a otros roles mediante la sentencia GRANT y se puede aadir la clusula WITH ADMIN OPTION para permitir a la persona que recibe el rol pueda otorgarlo a otro usuario. El rol siempre est activado (a no ser que un usuario lo desactive) y se asigna al usuario en el momento de la conexin. GRANT role [, role ]... TO {user | role | PUBLIC } [ WITH ADMIN OPTION ]

Los Roles se activan y se desactivan mediante el comando SET ROLE

SET ROLE { role [ IDENTIFIED BY PASSWORD ] , role [ IDENTIFIED BY PASSWORD ] | ALL [ EXCEPT role [ , role ] ] | NONE }

En la Sintaxis: IDENTIFIED BY ALL especificamos el password para poder activar el rol activa todos los roles otorgados al usuario salvo los que nombremos en la clusula EXCEPT. Esta opcin solo es vlida si los roles no tienen password desactiva todos los roles de la sesin

NONE

- 123 -

Administracin de Oracle 9i Revocar roles Para revocar roles utilizamos el mismo comando que para revocar privilegios.

REVOKE role [ , role ] ... FROM { user | role | PUBLIC } [ , { user | role | PUBLIC } ]

En la Sintaxis: PUBLIC especifica que el privilegio o rol se revoca para todos los usuarios

Eliminar roles Para poder eliminar un rol es necesario que se le haya asignado el rol con la clusula ADMIN OPTION o ha de disponer del privilegio DROP ANY ROLE. Cuando se borra un rol, el servidor lo revoca de todos los usuarios y roles que lo tenan asignado y lo elimina de la BBDD. Para eliminar roles utilizamos la sentencia DROP DROP ROLE role

- 124 -

You might also like