¿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?
fuente
Respuestas:
En los días en que trabajaba en una tienda de Oracle, teníamos un servidor 'dev' (desarrollo) específico, que tenía diferentes restricciones de seguridad que el servidor 'prod' (producción). Los desarrolladores podían hacer lo que necesitaran, y luego entregaríamos los scripts necesarios al DBA para aplicarlos al servidor de producción.
En el caso de nuestros sistemas críticos (SCT Banner, para el seguimiento de clases y estudiantes, y Oracle Financials), también había servidores de 'prueba' y 'semilla'. La prueba fue para la prueba de aceptación del usuario antes de que las cosas migraran de dev a prod; 'seed' era una instalación estándar del software, por lo que si encontramos un error, podríamos verificar si fue algo que habíamos introducido o provenido de SCT o del software de Oracle.
fuente
Use roles para asociar colecciones de objetos, luego otorgue acceso a los roles
La declaración GRANT permite que el DBA:
Como se pueden otorgar privilegios de objeto a un rol, es relativamente fácil otorgar acceso a un rol a todas las tablas de un esquema:
Esto, combinado con el problema
GRANT CREATE TABLE
emitido por el usuario de esquema apropiado para el rol, significa que los desarrolladores pueden seleccionar y crear tablas. No es perfecto, ya que una tabla creada requiere que el script se ejecute nuevamente, peroWITH GRANT OPTION
sugiere que cada desarrollador puede otorgar acceso a la tabla que creó para el rol apropiado.Esto sugiere que puede crear activadores de nivel DDL que puedan ejecutar el proceso de concesión apropiado, aunque obviamente serán necesarias cantidades significativas de pruebas, debería ser posible hacer que la declaración de creación de tabla otorgue automáticamente los permisos apropiados a los roles apropiados.
Editar -
Según GRANT , el
CREATE TABLE
privilegio:Por lo tanto, al darles la tabla de creación, la tabla de alteración, etc. del usuario correcto, deberían poder acceder al esquema de ese usuario como si fueran el usuario apropiado.
fuente