Skip to main content

Command Palette

Search for a command to run...

Proxy users y schema only users en Oracle

Updated
3 min read
Proxy users y schema only users en Oracle
C

Mi nombre es Carla y me defino como una apasionada de conocer, compartir ideas, divertirme y aprender todo lo relacionado con Oracle.

Alegre y creativa, con un alto grado de autoexigencia, que busca, incluso sin querer, una forma diferente de ver un mismo problema o solución. Defensora del trabajo en equipo en todas las facetas de la vida y de disfrutar todo lo que haces, siempre con humildad.

Actualmente cuento con más de 15 años de experiencia como administradora de Oracle, habiendo ocupado previamente posiciones como desarrolladora en la rama de Inteligencia de Negocios. Fue en ese momento que me di cuenta de que no quería centrarme en el desarrollo, sino participar en todas las capas que involucraban los datos, desde el despliegue de la base de datos hasta su explotación final.

Siempre estoy dispuesta a ayudar y compartir conocimientos. Creo firmemente que con la tecnología hay que divertirse y no verla como una competencia. La persona con la que tienes que ser el mejor es contigo mismo.

Un "proxy user" es una funcionalidad que permite a un usuario acceder a la base de datos a través de otro usuario, con el objetivo de realizar operaciones con los privilegios del usuario original.

Esta técnica se utiliza principalmente para facilitar la administración y mejorar la seguridad.

Ventajas

  1. Delegación de Acceso: Un usuario puede delegar a otro usuario (el proxy) la capacidad de conectarse en su nombre, sin compartir su contraseña.

  2. Auditoría y Seguimiento: Las conexiones y operaciones realizadas a través del proxy pueden ser auditadas y rastreadas, diferenciando entre el usuario proxy y el usuario original.

  3. Control de Privilegios: Permite restringir los privilegios del proxy user, limitando lo que puede hacer en nombre del usuario proxied.

Un Schema only user en Oracle implica definir un usuario que no tenga privilegios de inicio de sesión pero que pueda poseer objetos en la base de datos.

Este tipo de usuario se utiliza para separar la propiedad de los objetos de base de datos (como tablas, vistas, procedimientos, etc.) de los permisos de acceso y ejecución, mejorando la seguridad y la gestión de roles y privilegios.

Consideraciones de Seguridad

  • Limitación de Privilegios: Es importante definir claramente qué privilegios tiene el usuario proxy.

  • Auditoría: Implementar auditoría para registrar las acciones realizadas a través del proxy user.

Configuración del Proxy User

Supongamos que tenemos dos usuarios en la base de datos Oracle:

  • schema_user: esquema contenedor de objetos del modelo.

  • app_user: un usuario de aplicación con permisos limitados.

Queremos permitir que app_user pueda operar con los objetos del schema sin otorgarle todos los privilegios de schema_user.

Para esto, configuramos app_user como un proxy user para schema_user.

En nuestra BBDD ya existe un "schema only user", el cual es un usuario que se crea únicamente para poseer un esquema en la base de datos, sin permisos para iniciar sesión directamente.

create user schema_user no authentication quota unlimited on users;
grant create session, create table, create sequence, create view to schema_owner;CREATE USER app_user IDENTIFIED BY app_password;

Podemos ver nuestros usuarios schema only de la siguiente manera:

column username format a30
column account_status format a20

select username,
       account_status,
       authentication_type
from   dba_users
where  authentication_type ='NONE';

Ahora configuramos app_user como proxy user para schema_user:

CREATE USER app_user IDENTIFIED BY app_password;
ALTER USER schema_user GRANT CONNECT THROUGH app_user;

En este caso app_user operaría sin restricción sobre los objetos del esquema como si se tratase de éste usuario. Pero y si los queremos rentringir?

--Limitar privilegios para un ROL específico.
alter user schema_owner grant connect through app_user with role rol_aplicación;

-- Deshabilitar un rol en específico.
alter user schema_owner grant connect through app_user with role all except rol_modificacion;

-- Deshabilitar todos los roles.
alter user schema_owner grant connect through app_user with no roles;

-- Forzar autenticación para authenticated roles.
alter user schema_owner grant connect through app_user with role rol_aplicación authentication required;

Ahora app_user puede conectarse a la base de datos como si fuera schema_user utilizando una sintaxis especial.

sqlplus app_user[schema_user]/app_password@database

En esta conexión:

  • app_user es el proxy user.

  • schema_user es el usuario proxied.

  • app_password es la contraseña de app_user.

Verificación de la Configuración

Para verificar la configuración del proxy user, se puede ejecutar la siguiente consulta en Oracle:

SELECT * FROM DBA_PROXIES WHERE PROXY = 'APP_USER';
SELECT * from proxy_users;

En resumen, los proxy users en Oracle son una herramienta muy potente para la gestión de permisos y la seguridad.

More from this blog

Carla Muñoz López

64 posts

Soy DBA senior de bases de datos Oracle y me defino como una persona alegre y creativa. Apasionada por conocer, compartir ideas, divertirme y seguir aprendiendo todo lo relacionado con Oracle.