¿Cómo maneja la falta de privilegios de nivel de esquema en Oracle? La arquitectura de seguridad de Oracle funciona bien para aplicaciones que solo necesitan privilegios a nivel de objeto y funciona bien para DBA que necesitan pocas restricciones. Sin embargo, parece haber un gran vacío en la arquitectura para los programadores que realizan desarrollo con una aplicación front-end y PL / SQL en múltiples esquemas. Estas son algunas de mis opciones con sus desventajas:
Haga que cada programador desarrolle en su propio esquema. El DBA otorgará privilegios a nivel de objeto a los programadores que los necesiten. Cualquier desarrollo de paquetes debe ser realizado por un DBA. El principal inconveniente es que los programadores usarán la base de datos como un cubo de bits en detrimento del rendimiento de la base de datos. Quiero que los programadores se desarrollen en la base de datos, pero este método lo desalentaría enormemente.
Dé a cada programador el nombre de usuario / contraseña para la docena de esquemas que necesitan para desarrollar. Otorgue permiso a estos esquemas de aplicación para crear procedimientos, tablas, etc. Algunas de las desventajas de este enfoque son que los programadores tienen que mantener múltiples inicios de sesión y son rara vez iniciaron sesión como ellos mismos. El desarrollo de esquemas cruzados también es difícil.
Otorgue a los programadores privilegios de autenticación de proxy en cada esquema para el que necesiten desarrollar. Esto los mantiene conectados como ellos mismos sin tener que otorgarles privilegios distintos del privilegio proxy. Las desventajas incluyen que los programadores tienen que mantener conexiones separadas para cada esquema que utilizan como proxy, el desarrollo de esquemas cruzados es más engorroso ya que las conexiones tienen que cambiar constantemente y los paquetes que usan enlaces de bases de datos públicas con autenticación aprobada no se compilarán dentro de las conexiones proxy.
Otorgue a cada programador privilegios de DBA. - La desventaja aquí es la seguridad. Ningún programador de esquemas puede mantenerse fuera de ningún esquema y cualquier programador puede hacerse pasar por otro programador (DBA).
Parece que falta una opción para otorgar a cada programador SELECT / INSERT / CREATE / etc. privilegios sobre el esquema en el que necesitan desarrollar. Se conectan como ellos mismos para hacer su trabajo usando una conexión. Los nuevos objetos en el esquema al que tienen acceso están disponibles de inmediato.
¿Me estoy perdiendo de algo? ¿Cómo manejan los programadores de aplicaciones que realizan desarrollo PL / SQL?