Ver Mensaje Individual
  #12 (permalink)  
Antiguo 28/12/2012, 13:35
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ¿ Procedimientos almacenados ? ¿ Como crearlos ?

Cita:
¿ Y no se podria solucionar simplemente creando una tabla para guardar las relaciones de los roles con los privilegios a las tablas/columnas ?
Se puede hacer, pero con eso lograrás complicar mucho la construcción de las sentencias.
Es decir. Si las sentencias se deben construir de acuerdo al permiso de acceso a nivel programa, tendrás que generar en cada caso la sintaxis dinámicamente para cada usuario en curso. No es que no se pueda, yo lo he hecho en algunas aplicaciones, pero termina siendo excesivamente costoso en tiempo de desarrollo y pruebas.
En realidad en esos contextos lo que te conviene es establecer un conjunto muy bien definido de perfiles, y crear VIEWs en la base para cada perfil, en cada caso que se acceda a ciertas tablas. Como los permisos de lectura como usuario de BBDD se pueden dar para las vistas, podrías de ese modo restringirle también de ese modo la visualización de los datos.
A nivel de administracion de privilegios, al menos en MySQL, no puedes restringir el acceso a columnas específicas de una tabla. Si tienes permisos de SELECT sobre una tabla es sobre toda la tabla. De allí que sea mejor crear una vista por cada perfil en cada tabla que ese perfil use, donde sólo invoques las columnas que el perfil puede ver.

¿Se entiende el problema?

Por eso es más sencillo manejarlo por SP o VIEWs.
Además, los SP son invulnerables al sql-injection, en cambio las vistas no, porque operan del mismo modo que acceder a la tabla, y es allí donde se produce la vulnerabilidad.
Todo sistema con cierto nivel de seguridad, implementa los accesos a la base por SP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)