Restricción de un usuario para acceder solo a sus propias tablas en Oracle SQL Developer

0

Estoy confundido en el permiso, privilegios en el SQL Oracle Developer. El usuario creado puede acceder a todas las tablas de esquema / usuario. Quiero restringir el acceso de usuarios específicos en la base de datos (ALTER, DROP, UPDATE, etc.) a sus propias tablas solamente. ¿Alguien puede especificarme cómo realizar esta tarea?

Me refiero a qué privilegios elegir entre los privilegios del sistema para que el usuario acceda solo a sus propias tablas. Gracias

AbdulAziz
fuente
Intenté una respuesta básica (ver más abajo), pero sugeriría dos cosas: 1) obtener algunos buenos tutoriales (hay algunas cosas "básicas de dba"), y 2) verifique con la sucursal de DBA las preguntas pertinentes, ya que hay son las personas más familiarizadas con estas cosas;)
Izzy

Respuestas:

4

Mientras no otorgue explícitamente un permiso, el usuario no lo tendrá. Solo usemos un pequeño excursus:

CREATE USER dummy IDENTIFIED BY password;

Ahora ese usuario existe, pero ni siquiera puede iniciar sesión en la base de datos. Todavía no tiene permisos. Solo después

GRANT CREATE SESSION TO dummy;

ese usuario puede iniciar sesión, pero no más. Para poder hacer cosas dentro de su propio esquema, generalmente se conceden cosas como

GRANT CREATE TABLE, CREATE VIEW, ALTER TABLE, DROP TABLE TO dummy;

Ahora puede hacer cosas, pero solo en su propio esquema. También puede insertar, actualizar, eliminar, pero aún está restringido a sus propios objetos. Para manipular (o incluso ver) los datos de otros usuarios, el otro usuario debe otorgar esto explícitamente:

GRANT SELECT ON some_table TO dummy;

o el DBA le otorga permisos globales:

GRANT SELECT ANY TABLE TO dummy;

Por lo tanto, tendrá que verificar qué permisos tiene el usuario. Como hay muchos permisos posibles, mi respuesta puede ser demasiado larga, pero especialmente tenga cuidado con los permisos, incluida la ANYpalabra clave (como en mi último ejemplo). Compruebe también los posibles roles otorgados a ese usuario, que pueden incluir dichos permisos. Al iniciar sesión como sysdba, puede verificarlos, por ejemplo, con la siguiente consulta:

SELECT granted_role
  FROM dba_role_privs
 WHERE grantee='DUMMY';

(tenga en cuenta el nombre de usuario MAYÚSCULAS aquí - que es cómo Oracle almacena internamente, y es sensible a mayúsculas). Para los primeros privilegios (directos) mencionados, esto sería:

SELECT privilege
  FROM dba_sys_privs
 WHERE grantee='DUMMY';

Una vez que haya descubierto los privilegios / roles otorgados a ese usuario especial que no debería tener, puede quitárselos, por ejemplo:

REVOKE SELECT ANY TABLE FROM dummy;
Izzy
fuente