Variables Globales y restricción de accesos

Como se manejan las variables globales en oracle y restringir accesos
Quiero hacer lo siguiente : Quiero crear una vase de datos, con restricciones de usuarios pero que solo tenga tres usuarios, para lo cual he pensado en crear una tabla con usuarios, leerla con el usuario que proporciona Oacle para solo consultas y luego asignar los permisos usando los tres usuarios por defecto.
Para lo cual quiero obligar a los tres usuarios a tirar de select, updates e insert a partir de una select especifica
los usuarios serán de tienda, de área geográfica y totales
Como puedo obligar o limitar el acceso a las tablas mediante select
¿Cómo puedo guardar en los registros el usuario que modifica los datos si quiero guardar el usuario que tengo creado en la tabla no el :user que se conecta a la base de datos?
1

1 respuesta

Respuesta
1
Yo no desarrollo sino que soy administrador, por lo que te doy la solución que yo vería.
Crearía tres esquemas con las tablas de la base de datos.
Crearía usuarios que no fueran propietarios de esas tablas que serían los que ejecutan la aplicación (nunca los propietarios de las tablas).
Crearía unos roles con los permisos sobre los objetos que necesita cada uno de los usuarios sobre tablas y solo sobre las tablas que necesite.
Asignaría esos roles a los usuarios que corresponda.
Con esto, el usuario solo tiene acceso a lo que tenga en el rol, jamás a otro objeto.
Para hacer esa solución haría que las tablas se dividiesen en tres Tablespaces y una dibision de datos.
Busco una solucion usando solamente Select sobre select
Así consigo dar permisos sobre una tabla en concreto pero no sobre los elementos de una tabla, me explicaré
tentgo tres usuraios :
Global, territorial y tienda
Tienda solo tiene que tener acceso a los clientes, artículos y facturas de su tienda
territoria tiene acceso a la tabla tiendas, a los clientes, artículos y facturas de las tiendas que petencen a ese territorio
global tine acceso a todos los datos
Y con tu solución no puedo hacer esta dibision
No hace falta que los dividas en tablespaces, lo único que tienes que hacer es dar permisos sobre tablas a cada usuario.
Ejemplo:
tabla j,k,l en ts wq.
Role Ayoze, Raico.
User pepe, juan
GRant select on j,k to Ayoze.
grant select, update on l to Raico.
Y así todas las combinaciones que se te ocurran, sobre los mismos objetos. Cuando tienes loa roles, se los asignas a los usuarios.
Grant ayoze to pepe.
Grant raico to juan.
En este caso juan puede acceder a l pero no a j y k.
Ahora si te entiendo.
Lo que puedes hacer es crear vistas filtrando los elementos que quieres y dar permisos sobre las vistas (de la misma forma que de las tablas) a estos usuarios, es decir, creas una vista sobre la tabla filtrando por tienda, y al usuario tienda le das todos los permisos sobre la vista.
Eso si, ten en cuenta que tipo de vista debes crear, si es solo para select o tambien insert y update.
Desde el punto de vista de administración no se me ocurre mejor manera (además creo que es la más elegante), otra cosa sería hacerlo desde programación, lo cuál implicaría que el código dependiera de los datos (mal rollo)

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas