miércoles, 20 de febrero de 2008

Grant (permisos)

Da permisos a un usuario o a un rol. Permiso del sistema:

GRANT system_priv(s) TO grantee
[IDENTIFIED BY password] [WITH ADMIN OPTION]

GRANT role TO grantee
[IDENTIFIED BY password] [WITH ADMIN OPTION]

GRANT ALL PRIVILEGES TO grantee
[IDENTIFIED BY password] [WITH ADMIN OPTION]

Permisos sobre objetos:

GRANT object_priv [(column, column,...)]
ON [schema.]object
TO grantee [WITH GRANT OPTION] [WITH HIERARCHY OPTION]

GRANT ALL PRIVILEGES [(column, column,...)]
ON [schema.]object
TO grantee [WITH GRANT OPTION] [WITH HIERARCHY OPTION]

GRANT object_priv [(column, column,...)]
ON DIRECTORY directory_name
TO grantee [WITH GRANT OPTION] [WITH HIERARCHY OPTION]

GRANT object_priv [(column, column,...)]
ON JAVA [RE]SOURCE [schema.]object
TO grantee [WITH GRANT OPTION] [WITH HIERARCHY OPTION]

grantee:

user
role
PUBLIC

system_privs, permisos del sistema:

CREATE SESSION - Permite conectar a la base de datos
UNLIMITED TABLESPACE - Uso de espacio ilimitado del tablespace.
SELECT ANY TABLE - Consultas en tables, views, or mviews en cualquier esquema
UPDATE ANY TABLE - Actualizar filas en tables and views en cualquier esquema
INSERT ANY TABLE - Insertar filas en tables and views en cualquier esquema

Permisos de administrador para CREATE, ALTER o DROP:
cluster, context, database, link, dimension, directory, index,
materialized view, operator, outline, procedure, profile, role,
rollback segment, sequence, session, synonym, table, tablespace,
trigger, type, user, view.

object_privs, permisos sobre objetos:

SELECT, UPDATE, INSERT, DELETE, ALTER, DEBUG, EXECUTE, INDEX, REFERENCES

roles:

SYSDBA, SYSOPER, OSDBA, OSOPER, EXP_FULL_DATABASE, IMP_FULL_DATABASE
SELECT_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, DELETE_CATALOG_ROLE
AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE - manejo de la cola
SNMPAGENT - Agente inteligente.
RECOVERY_CATALOG_OWNER - rman
HS_ADMIN_ROLE - servicios heterogeneos

mas cualquier rol de usuario que halla disponible

Notes: Es posible asignar varios Object_Privs en un solo comando GRANT.

GRANT SELECT (empno), UPDATE (sal) ON scott.emp TO emma

Con la opcion WITH HIERARCHY OPTION damos permisos sobre todos los subojetos, incluso sobre los que se creen despues de ejecutar el GRANT. Con la opción WITH GRANT OPTION damos permiso para que el que los recibe los pueda a su vez asignar a otros usuarios y roles. La opción "GRANT ALL PRIVILEGES..." se puede escribir tambien como "GRANT ALL..." Permisos del rol SYSDBA:

CREATE DATABASE
CREATE SPFILE
STARTUP and SHUTDOWN
ALTER DATABASE: open, mount, back up, or change character set
ARCHIVELOG and RECOVERY
Includes the RESTRICTED SESSION privilege

Permisos del rol SYSOPER:

CREATE SPFILE
STARTUP and SHUTDOWN
ALTER DATABASE: open, mount, back up
ARCHIVELOG and RECOVERY
Includes the RESTRICTED SESSION privilege

Los roles CONNECT, RESOURCE y DBA ya no deben usarse (aunque estan soportados). La forma correcta de trabajar es: -Crear un Role -Dar permisos de objeto y sistema al rol -Dar el rol a los usuarios Esta forma de trabajar tiene varias ventajas: -La asignación de recursos es mas rapida. -Nuevos permisos asignados a un rol estaran inmediatamente disponibles a los ujsuarios coenctados. -Sin embargo los nuevos permisos asigandos a un usuario necesitan de reconexión. Excepciones: El permiso de UNLIMITED TABLESPACE debe ser directo. Permisos a usuarios que ejecutan trabajos en segundo plano (dbms_job.submit) deben ser directos, cuando el trabajo comienza no hay roles activos.

GRANT CREATE session, CREATE table, CREATE view,
CREATE procedure,CREATE synonym,
ALTER table, ALTER view, ALTER procedure,ALTER synonym,
DROP table, DROP view, DROP procedure,DROP synonym,
TO MyRole;