200924998
Tarea 4
Grant
Esta sentencia sirve para dar permisos (o privilegios) a un usuario o a un rol.
Un permiso, en oracle, es un derecho a ejecutar un sentencia (system privileges) o a
acceder a un objeto de otro usuario (object privileges).
El conjunto de permisos es fijo, esto quiere decir que no se pueden crear nuevos tipos
de permisos.
Si un permiso se asigna a rol especial PUBLIC significa que puede ser ejecutado por
todos los usuarios.
Permisos para acceder a la base de datos (permiso de sistema):
GRANT CREATE SESSION TO miusuario;
Permisos para usuario de modificacin de datos (permiso sobre objeto):
GRANT SELECT, INSERT, UPDATE, DELETE ON T_PEDIDOS TO miusuario;
Permisos de solo lectura para todos:
GRANT SELECT ON T_PEDIDOS TO PUBLIC;
Permisos de sistema
Los permisos de sistema mas importantes son CREATE SESSION, CREATE
TABLE, CREATE VIEW,CREATE USER, ...
Sintaxis:
GRANT system_priv(s) TO {user, | role, |PUBLIC}
[IDENTIFIED BY password] [WITH ADMIN OPTION]
GRANT role TO {user, | role, |PUBLIC}
[IDENTIFIED BY password] [WITH ADMIN OPTION]
GRANT ALL PRIVILEGES TO {user, | role, |PUBLIC}
[IDENTIFIED BY password] [WITH ADMIN OPTION]
Podemos obtener la lista de permisos del sistema asi:
select * from system_privilege_map;
Los permisos de sistema son auditables.
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 programador;
Permisos de sobre objetos (object privileges)
Los permisos sobre objetos mas importantes son: SELECT, UPDATE, INSERT, DELETE,
ALTER, DEBUG,EXECUTE, INDEX, REFERENCES
GRANT object_priv [(column, column,...)]
ON [schema.]object
TO {user, | role, |PUBLIC} [WITH GRANT OPTION] [WITH HIERARCHY OPTION]
GRANT ALL PRIVILEGES [(column, column,...)]
ON [schema.]object
TO {user, | role, |PUBLIC} [WITH GRANT OPTION] [WITH HIERARCHY OPTION]
GRANT object_priv [(column, column,...)]
ON DIRECTORY directory_name
TO {user, | role, |PUBLIC} [WITH GRANT OPTION] [WITH HIERARCHY OPTION]
GRANT object_priv [(column, column,...)]
ON JAVA [RE]SOURCE [schema.]object
TO {user, | role, |PUBLIC} [WITH GRANT OPTION] [WITH HIERARCHY OPTION]
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 opcin WITH GRANT OPTION damos permiso para que el que los recibe los
pueda a su vez asignar a otros usuarios y roles.
La opcin "GRANT ALL PRIVILEGES..." se puede escribir tambien como "GRANT ALL..."
Podemos obtener la lista de permisos de las tablas asi:
select * from all_tab_privs_made;
Revoke (quitar permisos)
Esta sentencia sirve para quitar permisos (o privilegios) a un usuario o a un rol.
No dejamos nada:
REVOKE ALL PRIVILEGES FROM miusuario;
Quitamos todo:
REVOKE ALL ON T_PEDIDOS FROM miusuario;
Sintaxis, quitar un rol asignado:
REVOKE role FROM {user, | role, |PUBLIC}
Quitar un permiso de sistema:
REVOKE system_priv(s) FROM {user, | role, |PUBLIC}
REVOKE ALL FROM {user, | role, |PUBLIC}
system_privs
ALTER ANY INDEX, BECOME USER, CREATE TABLE, DROP ANY VIEW
RESTRICTED SESSION, UNLIMITED TABLESPACE, UPDATE ANY TABLE
y mas...
Quitar un permiso de objeto:
REVOKE object_priv [(column1, column2..)] ON [schema.]object
FROM {user, | role, |PUBLIC} [CASCADE CONSTRAINTS] [FORCE]
REVOKE object_priv [(column1, column2..)] ON [schema.]object
FROM {user, | role, |PUBLIC} [CASCADE CONSTRAINTS] [FORCE]
REVOKE object_priv [(column1, column2..)] ON DIRECTORY directory_name
FROM {user, | role, |PUBLIC} [CASCADE CONSTRAINTS] [FORCE]
REVOKE object_priv [(column1, column2..)] ON JAVA [RE]SOURCE [schema.]object
FROM {user, | role, |PUBLIC} [CASCADE CONSTRAINTS] [FORCE]
opciones:
object_privs
ALTER, DELETE, EXECUTE, INDEX, INSERT,
REFERENCES, SELECT, UPDATE, ALL PRIVILEGES
La opcin FORCE, quita todos los privilegios y descompila todos sus objetos.
roles standard de Oracle:
SYSDBA, SYSOPER, OSDBA, OSOPER, EXP_FULL_DATABASE, IMP_FULL_DATABASE
mas todos los roles definidos en la base de datos