- Uso de sentencias SQL fundamentales como CREATE, ALTER y DROP USER para la gestión del ciclo de vida de las identidades.
- Implementación de una estructura de seguridad basada en privilegios de sistema, privilegios de objeto y roles agrupadores.
- Control de consumo de recursos y políticas de seguridad de acceso mediante la configuración de perfiles de usuario.
- Gestión moderna en entornos autónomos utilizando interfaces gráficas y autenticación externa basada en secretos de nube.
Cuando te metes en el mundo de Oracle Database, lo primero que te das cuenta es que el control de quién entra y qué puede tocar es la columna vertebral de la seguridad. No se trata solo de soltar un usuario y una contraseña, sino de gestionar un ecosistema de identidades que permita que la base de datos funcione como un reloj suizo sin dejar la puerta abierta a cualquier descuido.
Administrar usuarios puede parecer un quebradero de cabeza al principio, especialmente si te encuentras con errores de privilegios insuficientes, pero una vez que entiendes cómo se entrelazan los roles, los perfiles y los permisos, la cosa se vuelve mucho más sencilla. Vamos a desgranar paso a paso cómo montar esto, desde la consola hasta las opciones más modernas de la nube.
Cuentas administrativas y el corazón del sistema

Nada más instalar Oracle, el sistema nos deja unas cuantas cuentas con superpoderes. La más potente es SYS, que es básicamente el dueño del diccionario de datos; es vital no usarla para crear tablas comunes, ya que su rol es puramente administrativo. Luego tenemos a SYSTEM, que también tiene privilegios de DBA y se usa para tareas de gestión más cotidianas. Además, existen cuentas como SYSMAN y DBSMNP, diseñadas específicamente para la monitorización y el uso de Enterprise Manager.
En cuanto a los privilegios de alto nivel, destacan SYSDBA y SYSOPER. Mientras que el primero puede hacer prácticamente cualquier cosa, incluyendo crear o borrar la base de datos y recuperarla, el segundo es un poco más limitado y no permite ciertas operaciones de recuperación total o creación desde cero. Para echar un ojo a quién tiene estos poderes, la vista V$PWFILE_USERS es la herramienta ideal.
Cómo dar de alta y gestionar usuarios

Para crear un usuario desde la línea de comandos, la sentencia estrella es CREATE USER. No basta con poner un nombre y una clave; podemos definir el tablespace por defecto y asignar una cuota de almacenamiento específica para que el usuario no se coma todo el disco. Por ejemplo, si queremos que alguien tenga solo 15MB, se lo indicamos en la misma instrucción. También podemos dejar la cuenta bloqueada desde el inicio o marcar la contraseña como caducada para obligar al usuario a cambiarla en su primer acceso.
Si necesitamos hacer cambios sobre la marcha, usamos ALTER USER, que nos permite modificar desde la contraseña hasta el perfil asociado. Y si llega el momento de borrar a alguien, DROP USER es la opción, aunque si el usuario ha creado cosas, habrá que añadir la cláusula CASCADE para que Oracle limpie todo el esquema antes de eliminar la cuenta. Para ver la lista completa de usuarios y su estado, la vista DBA_USERS es la fuente de verdad.
El laberinto de los privilegios y los roles

Aquí es donde la cosa se pone interesante. Un privilegio es, básicamente, un permiso para hacer algo. Tenemos los privilegios de sistema, que afectan a toda la base de datos (como CREATE SESSION para poder entrar o CREATE TABLE para crear tablas), y los privilegios de objeto, que son permisos quirúrgicos sobre una tabla o vista concreta, como hacer un SELECT o un UPDATE en una tabla específica de otro esquema.
Para no volvernos locos asignando permisos uno a uno, Oracle usa los roles. Un rol es como un paquete de privilegios. Creamos el rol con CREATE ROLE, le metemos todos los permisos necesarios mediante GRANT y luego le asignamos ese rol al usuario. Es mucho más limpio y fácil de mantener. Hay roles predefinidos muy comunes como CONNECT (para entrar), RESOURCE (para crear objetos) y DBA (poder total).
Para quitar permisos, usamos la instrucción REVOKE. Es importante saber que revocar un privilegio no deshace lo que el usuario ya haya hecho con él, simplemente le quita la capacidad de seguir haciéndolo. Para auditar quién tiene qué, podemos consultar vistas como DBA_SYS_PRIVS o DBA_TAB_PRIVS.
Control de recursos mediante perfiles
Si no quieres que un usuario sature el servidor con sesiones infinitas o que use la CPU sin control, necesitas los perfiles. Primero hay que activar la limitación de recursos con ALTER SYSTEM SET RESOURCE_LIMIT=TRUE. A partir de ahí, podemos crear perfiles con CREATE PROFILE que limiten, por ejemplo, el número de intentos fallidos de login antes de bloquear la cuenta o el tiempo máximo de inactividad de una sesión.
Los perfiles también gestionan la política de contraseñas, definiendo cada cuánto tiempo deben caducar o cuántos días deben pasar antes de que se pueda reutilizar una clave antigua. Cada usuario puede tener asignado un único perfil, el cual se define al crear la cuenta o se cambia posteriormente con ALTER USER.
Gestión en entornos Autonomous AI Database

En las versiones más modernas y autónomas, la gestión se ha simplificado mucho gracias a Database Actions. Desde la interfaz web, como usuario ADMIN, puedes crear usuarios, asignarles roles como DWROLE y definir sus cuotas en el tablespace DATA sin tocar una sola línea de código. Además, estas bases de datos exigen contraseñas robustas (entre 12 y 30 caracteres, con mayúsculas, minúsculas y números).
Una funcionalidad avanzada es la autenticación basada en secretos. En lugar de guardar la clave en la base de datos, Oracle puede leerla de un almacén externo como OCI Vault o AWS Secrets Manager. Esto es una pasada para la seguridad, ya que permite rotar claves sin afectar a las aplicaciones. Para implementarlo, se crea una credencial con DBMS_CLOUD.CREATE_CREDENTIAL y luego se crea el usuario referenciando dicha credencial.
La administración de la cuenta ADMIN en estos entornos es crucial. Si la cuenta se bloquea, se puede desbloquear desde la consola de Oracle Cloud actualizando la contraseña. También es posible usar el Vault de OCI para definir la contraseña del administrador mediante APIs, evitando que la clave quede escrita en scripts de configuración.
El control de acceso en Oracle Database es un proceso integral que abarca desde la creación técnica del usuario y la asignación de cuotas de almacenamiento, hasta la implementación de capas de seguridad mediante roles y perfiles de recursos. Ya sea gestionando una instalación local con sentencias SQL tradicionales o utilizando las capacidades automatizadas de la nube con autenticación basada en secretos, el objetivo siempre es garantizar que cada identidad tenga estrictamente los permisos necesarios para operar, manteniendo la integridad del diccionario de datos y el rendimiento global del sistema.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.
