Office Address

  • 123/A, Miranda City Prikano
  • +0989 7876 9865 9
  • info@example.com

Social List

Configuración de Esquemas Restringidos en Oracle APEX

Lectura: 5 minutos

La seguridad y el control en las aplicaciones web son aspectos fundamentales en el desarrollo de aplicaciones Oracle APEX. Una de las herramientas clave para garantizar la seguridad y el rendimiento de nuestras aplicaciones es la configuración de esquemas restringidos. Este enfoque permite gestionar y limitar el acceso a los esquemas y objetos de base de datos desde las aplicaciones APEX.

En este artículo, exploraremos cómo configurar esquemas restringidos en Oracle APEX, sus ventajas y los pasos necesarios para implementarlos.


¿Qué es un esquema restringido?

En Oracle APEX, un esquema restringido es un esquema de base de datos al que se le limita el acceso directo para ejecutar operaciones como consultas, modificaciones o administración. En su lugar, las aplicaciones interactúan con los objetos del esquema restringido a través de vistas, sinónimos o procedimientos almacenados que actúan como una capa de abstracción y control. Esto mejora la seguridad y el aislamiento de los datos, al mismo tiempo que garantiza que solo se realicen las operaciones permitidas.


Ventajas de los esquemas restringidos

Seguridad Mejorada

  • Restringe el acceso directo a tablas y otros objetos sensibles.
  • Minimiza el riesgo de SQL Injection al canalizar todas las interacciones mediante procedimientos o vistas seguras.

Control de Operaciones

  • Define operaciones específicas mediante procedimientos almacenados, asegurando que los usuarios solo puedan realizar acciones autorizadas.
  • Facilidad de Auditoría Centraliza los puntos de acceso a datos, lo que facilita el seguimiento y registro de las acciones realizadas.

Pasos para configurar esquemas restringidos en Oracle APEX

Para gestionar adecuadamente los datos y objetos relacionados con tu aplicación, es esencial crear un esquema dedicado en tu base de datos. Este esquema funcionará como el espacio principal en el que se organizarán y almacenarán todas las tablas, vistas, índices, procedimientos almacenados, funciones, y cualquier otro objeto que forme parte de tu solución.

En este caso, crearemos un esquema cuyo nombre será representativo del propósito o funcionalidad de la aplicación que estamos desarrollando. Por ejemplo, si la aplicación se llama “Nueva Aplicación”, el esquema también podría denominarse NUEVA_APLICACION. Este nombre ayudará a identificar claramente a qué proyecto o solución pertenece el conjunto de objetos almacenados dentro del esquema.

--como sys o system, creamos un nuevo usuario
CREATE USER NUEVA_APLICACION IDENTIFIED BY "secret";
--otorgamos permisos para conectarse
GRANT CONNECT, RESOURCE TO NUEVA_APLICACION;
--agregamos espacio a nuestro nuevo esquema
ALTER USER NUEVA_APLICACION QUOTA 500M ON USERS;

Crear objetos de base de datos

Una vez que hayas creado el esquema para tu aplicación, el siguiente paso es proceder con la creación de los objetos de base de datos que utilizarás para estructurar, gestionar y manipular los datos. Estos objetos incluyen tablas, vistas, índices, procedimientos, funciones, triggers y otros elementos necesarios para cumplir con los requisitos funcionales y técnicos de tu aplicación.

--en el esquema nuevo vamos a crear una tabla, una vista para poder compartir estos objetos con nuestra aplicación
--crear objetos en el schema nuevo
alter session set current_schema = nueva_aplicacion;

CREATE TABLE USUARIOS (
    ID_USUARIO NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY PRIMARY KEY,
    NOMBRE VARCHAR2(100) NOT NULL,
    APELLIDO VARCHAR2(100) NOT NULL,
    CORREO VARCHAR2(150) UNIQUE NOT NULL,
    FECHA_REGISTRO DATE DEFAULT SYSDATE,
    ACTIVO CHAR(1) CHECK (ACTIVO IN ('S', 'N'))
);

CREATE OR REPLACE VIEW VISTA_USUARIOS AS
SELECT 
    ID_USUARIO,
    NOMBRE,
    APELLIDO,
    FECHA_REGISTRO
FROM USUARIOS
WHERE ACTIVO = 'S';

La concesión de permisos es un aspecto clave en la configuración de tu esquema de base de datos, especialmente en un entorno como Oracle APEX. Para garantizar la seguridad y funcionalidad de tu aplicación, debes otorgar únicamente los permisos estrictamente necesarios para el esquema de trabajo. Esto sigue el principio de mínimo privilegio, que limita el acceso y las acciones de los usuarios o esquemas al mínimo indispensable.

--de vuelta como usuario sys o system le damos permiso al esquema existente para que tenga acceso a la vista, pero no a la tabla. En este caso, el usuario no podrá hacer delete en esta vista

alter session set current_schema = sys;
GRANT SELECT, INSERT, UPDATE ON nueva_aplicacion.vista_usuarios TO aprendiz;


Validar el acceso

Si realizas una prueba desde SQL Commands en Oracle APEX y obtienes el resultado esperado, pero notas que el esquema NUEVA_APLICACION no es visible desde APEX, esto se debe a la forma en que Oracle APEX maneja el acceso a los esquemas y objetos de la base de datos. Oracle APEX opera dentro de un esquema de trabajo específico y no tiene visibilidad directa de otros esquemas a menos que se configure adecuadamente.


Crear sinónimos

Una forma sencilla de hacer que los objetos del esquema NUEVA_APLICACION sean accesibles desde el esquema de trabajo de APEX es mediante la creación de sinónimos públicos. Esto elimina la necesidad de prefijar el nombre del esquema en cada consulta.

--crear objetos en el schema nuevo
alter session set current_schema = sys;
CREATE PUBLIC SYNONYM vista_usuarios FOR NUEVA_APLICACION.vista_usuarios;

Si prefieres un enfoque más restringido, crea sinónimos privados en el esquema de trabajo de APEX:

CREATE SYNONYM APRENDIZ.SYN_VISTA_USUARIOS FOR NUEVA_APLICACION.vista_usuarios;

Cuando ejecutamos la consulta en APEX, el resultado es el siguiente:


Extra

Si quieres que el esquema sea visible, puedes seguir estos pasos desde el Workspace de administración llamado INTERNAL.

En la opción Manage Workspaces damos clic en la opción Manage Workspace to Schema Assigments

Seleccionamos esquema existente

El workspace debe ser el actual, en mi caso mi workspace es APRENDIZ

Debemos seleccionar el esquema nuevo al workspace existente

Confirmamos el cambio

Con esta configuración ya es posible visualizar el nuevo esquema y sus objetos.


Buenas prácticas al trabajar con esquemas restringidos

  • Minimiza los privilegios: Aplica el principio de privilegio mínimo tanto en el esquema como en los usuarios que acceden a él.
  • Utiliza procedimientos almacenados: Prefiere el uso de procedimientos para operaciones complejas en lugar de exponer tablas completas.
  • Audita regularmente: Implementa mecanismos de auditoría para monitorear accesos y operaciones en los objetos del esquema.
  • Versiona tus vistas y procedimientos: Usa un control de versiones para gestionar cambios en las vistas y procedimientos con mayor seguridad.

Conclusión

La configuración de esquemas restringidos en Oracle APEX es una práctica esencial para fortalecer la seguridad de tus aplicaciones y garantizar un control eficiente sobre los datos y operaciones de la base de datos. Al implementar esquemas restringidos, estás construyendo una capa adicional de protección, alineada con las mejores prácticas y los estándares de la industria.

Con los pasos y buenas prácticas descritas en este artículo, puedes asegurarte de que tus aplicaciones APEX interactúen de manera segura y controlada con los datos, sin comprometer el rendimiento ni la funcionalidad.

Si aún no has implementado esta estrategia, no esperes más. Adopta la configuración de esquemas restringidos como una inversión en la integridad y sostenibilidad de tus desarrollos.

¿Tienes dudas o experiencias con este tema? ¡Déjalas en los comentarios! Tu opinión es importante y puede ayudar a otros desarrolladores en la comunidad.

Post a Comment

Your email address will not be published. Required fields are marked *