Introducción
A partir de la versión Oracle Database 18c, es posible crear schemas que no puedan autenticarse dentro de la base datos debido a que carecen de algún tipo de autentificación definido (password, externa o global).
En el desarrollo de aplicaciones, todos los objetos (tablas, índices, programas PL/SQL, etc.) desplegados pertenecen a un schema, el cual tiene un método de autenticación y por ende es utilizado en la cadena de conexión hacia la base de datos en la gran mayoría de casos. Hoy esto puede ser eliminado al no tener una autenticación, obligando a los desarrolladores a crear un usuario específicamente para la cadena de conexión de la aplicación y asignarle los privilegios correctos a los objetos que requieran ser accedidos.
Existen algunas consideraciones a tener presente:
- Dentro de una instancia +ASM no pueden crearse schema only accounts.
- Puede asignarse cualquier privilegio de objeto, sistema y roles; a excepción de: SYSDBA, SYSOPER, SYSBACKUP, SYSKM, SYSASM, SYSRAC y SYSDG.
- Restringido a ser conectado vía un DBLINK.
- Disponible para base de datos CDB y NOCDB.
Esta nueva funcionalidad también es utilizada por Oracle para proveer algunos de sus esquemas internos.
Implementación
A. Creación del Schema Only Account
Sintaxis: CREATE USER <nombre_usuario> NO AUTHENTICATION
Ejemplo:
Validamos en la vista DBA_USERS la creación del schema only account:
B. Asignación de Privilegios y Creación de Objetos
La asignación de privilegios y creación de objetos es como tradicionalmente se ha venido trabajando en versiones anteriores, ejemplo:
Se valida la creación de los objetos:
Una vez creado el schema only account el cual es el owner de los objetos de negocio, debe crearse un diseño de seguridad para asignar los correctos privilegios a los usuarios que serán utilizados en la cadena de conexión de las aplicaciones.
Como en todas las versiones de base de datos Oracle, también es posible cambiar el actual schema que tenemos, ejemplo:
C. Proxy Authenticated Connection
Es posible realizar una conexión a la base de datos a través de Proxy Authenticated Connection mediante un usuario y tener la sesión del Schema Only Account. Esto nos permite crear objetos de manera más sencilla y es una opción más completa que el ejemplo anterior.
Ejemplo:
D. Conversión de Schema a Schema Only Account y Viceversa.
Se puede realizar cualquier conversión a través de la sentencia: ALTER USER.
Es importante recordar que si la conversión será hacia Schema Only Account se debe cumplir las consideraciones previamente presentadas.
Ejemplo:
Sobre el mismo ejemplo, si no cumplimos con las consideraciones presentadas se conseguirá el siguiente error:
En caso se desee realizar la conversión debe retirársele al usuario todos los privilegios no permitidos.
Conclusión
Esta nueva funcionalidad que nos provee Oracle Database 18c permite crear schemas sin autenticación reforzando nuestros niveles de seguridad en la base de datos al no permitir que las aplicaciones utilicen el usuario (dueño de los objetos de negocio) en la cadena de conexión o manipular los objetos directamente desde alguna herramienta.
Francisco Riccio, actualmente se desempeña como Arquitecto de Soluciones en Oracle Perú y es instructor de cursos oficiales de certificación Oracle. Es un Oracle Certified Professional en productos de Oracle Application, Base de Datos, Cloud & Virtualización.Este artículo ha sido revisado por el equipo de productos Oracle y se encuentra en cumplimiento de las normas y prácticas para el uso de los productos Oracle.