Tema 8

8. Autorización, roles, permisos granulares y control de acceso

Autenticar correctamente a un usuario o servicio es solo el primer paso. El siguiente desafío es definir con precisión qué puede hacer esa identidad, sobre qué objetos, en qué contexto y con qué límites operativos.

Objetivo Diseñar permisos consistentes y acotados
Enfoque Roles, privilegios y alcance de acceso
Resultado Reducir abuso y limitar el impacto de incidentes

8.1 Introducción

Una vez que el sistema sabe quién es una identidad, debe decidir qué está autorizada a hacer. Ese proceso es la autorización. En bases de datos, una autorización deficiente suele ser tan peligrosa como una autenticación débil, porque permite que usuarios o servicios legítimos operen por encima de lo que realmente necesitan.

Los problemas de autorización aparecen de muchas formas: aplicaciones con privilegios administrativos, analistas que acceden a tablas completas cuando solo necesitan vistas parciales, cuentas técnicas reutilizadas para múltiples funciones y roles heredados que acumulan permisos con el tiempo. En todos esos casos, el daño potencial de un error o una intrusión se multiplica.

Diseñar un buen modelo de autorización no consiste solo en negar accesos. Consiste en alinear privilegios con funciones reales, mantener control sobre el alcance de cada cuenta y conservar una estructura que siga siendo entendible y gobernable cuando el sistema crece.

8.2 Qué es la autorización en una base de datos

La autorización es el conjunto de reglas que determinan qué operaciones puede realizar una identidad autenticada sobre determinados objetos o recursos del motor. Estas reglas pueden aplicarse a nivel global, de base, de esquema, de tabla, de vista, de columna, de fila, de procedimiento o de capacidad administrativa.

En términos prácticos, la autorización responde preguntas como estas:

  • Puede esta cuenta conectarse a la base?
  • Puede leer, insertar, modificar o borrar datos?
  • Puede ejecutar procedimientos o funciones específicas?
  • Puede crear estructuras, gestionar usuarios o cambiar configuraciones?
  • Puede acceder a todos los registros o solo a un subconjunto?
Una autorización segura no se basa en "confiar" en el usuario autenticado, sino en traducir su necesidad real en permisos concretos, limitados y verificables.

8.3 Privilegios directos y roles

Los motores de base de datos suelen permitir otorgar permisos directamente a una cuenta o hacerlo a través de roles. Aunque ambos caminos son técnicamente válidos, su impacto en gobernanza es muy diferente.

  • Permiso directo: se asigna un privilegio puntual a una identidad específica.
  • Rol: se define un conjunto reutilizable de permisos y luego se asigna ese rol a múltiples identidades.

Los permisos directos pueden ser útiles para casos excepcionales, pero si se vuelven la norma generan desorden, acumulación y poca trazabilidad. Los roles, en cambio, permiten estructurar el acceso por función y revisar más fácilmente si la política general sigue teniendo sentido.

8.4 Ventajas de un modelo basado en roles

Un modelo de autorización basado en roles suele ser más sostenible y auditable que uno apoyado en permisos distribuidos de manera informal.

Aspecto Permisos directos dispersos Modelo basado en roles
Gobernanza Difícil de entender y revisar Más claro y estructurado
Escalabilidad Se vuelve caótico al crecer Permite reutilización y consistencia
Auditoría Más compleja y fragmentada Más simple de interpretar
Altas y bajas Requiere ajustes puntuales frecuentes Facilita asignación y revocación por función
Riesgo de acumulación Muy alto Menor si los roles se revisan periódicamente

8.5 Permisos granulares: por qué importan

Los permisos granulares permiten limitar el acceso no solo por identidad, sino también por tipo de acción y por objeto concreto. Esto es esencial en seguridad de bases de datos porque no todas las identidades necesitan el mismo nivel de operación ni sobre el mismo conjunto de datos.

La granularidad puede expresarse de distintas maneras:

  • Lectura sin escritura.
  • Inserción sin borrado.
  • Acceso a ciertas tablas pero no a otras.
  • Ejecución de procedimientos específicos sin acceso directo a datos base.
  • Visibilidad restringida a determinadas columnas o filas.

Cuanto más precisa sea la definición del acceso, menor será el daño potencial de un error, una mala práctica o un compromiso de credenciales.

8.6 Niveles habituales de autorización

En una plataforma de datos, la autorización puede definirse en distintos niveles simultáneamente. Comprender esos niveles ayuda a diseñar un modelo coherente.

  1. Nivel del servidor o instancia: administración global, creación de bases, configuración general.
  2. Nivel de base o esquema: acceso a conjuntos lógicos de objetos.
  3. Nivel de objeto: tablas, vistas, procedimientos, funciones, secuencias.
  4. Nivel de dato: columnas específicas o subconjuntos de filas.
  5. Nivel operativo: exportación, respaldo, monitoreo o auditoría.

El error frecuente es otorgar permisos de un nivel superior cuando en realidad el caso de uso solo requería acceso en uno mucho más limitado.

8.7 Control de acceso por función

Una forma efectiva de diseñar autorización es partir de funciones reales del negocio y de la operación técnica. En lugar de pensar primero en usuarios individuales, conviene pensar en perfiles de acceso.

Ejemplos típicos de funciones pueden ser:

  • Aplicación que consulta catálogo o datos de lectura.
  • Servicio que inserta transacciones, pero no modifica históricos.
  • Analista con acceso a reportes o vistas agregadas.
  • DBA con administración operativa, pero no necesariamente con consulta libre a todos los datos sensibles.
  • Auditor con visibilidad sobre trazas y configuraciones, sin capacidad de alterar datos.
El mejor modelo de autorización no es el que más permisos contempla, sino el que mejor refleja funciones reales y necesidades concretas sin introducir privilegios sobrantes.

8.8 Riesgos del sobredimensionamiento de permisos

El sobredimensionamiento ocurre cuando una identidad recibe más privilegios de los que necesita. Es uno de los problemas más comunes y dañinos en entornos de bases de datos.

Entre sus consecuencias se encuentran:

  • Mayor impacto si la cuenta es comprometida.
  • Más posibilidades de fuga o manipulación accidental.
  • Dificultad para auditar si una acción era realmente esperable.
  • Dependencia de cuentas excesivamente poderosas para tareas rutinarias.
  • Mayor propagación del riesgo entre aplicaciones y procesos.

Muchas veces el sobredimensionamiento nace por pragmatismo: "dar permisos de más para que funcione". El problema es que ese atajo suele volverse permanente.

8.9 Herencia, acumulación y deriva de privilegios

Con el tiempo, los modelos de acceso tienden a degradarse si no se revisan. Aparecen permisos heredados, excepciones antiguas, cuentas con múltiples roles superpuestos y privilegios otorgados para resolver incidentes urgentes que nunca se retiran.

Este fenómeno se conoce a veces como deriva de privilegios. Sus señales típicas incluyen:

  • Usuarios con acceso que nadie recuerda haber aprobado.
  • Roles históricos que ya no reflejan funciones actuales.
  • Aplicaciones que conservan permisos de etapas anteriores del sistema.
  • Excepciones temporales que permanecen indefinidamente.

Sin revisiones periódicas, incluso un modelo inicialmente bien diseñado puede terminar siendo inconsistente y riesgoso.

8.10 Permisos administrativos versus permisos de datos

No debe confundirse la administración del motor con el acceso al contenido de los datos. En algunos entornos, quien administra la plataforma necesita capacidades técnicas elevadas, pero no necesariamente requiere consultar información sensible en forma libre.

Separar ambos planos ayuda a reducir riesgo:

  • Permisos administrativos para operar la base, mantener disponibilidad y gestionar configuraciones.
  • Permisos de datos para leer o modificar información funcional.

Cuando estos planos se mezclan sin control, un administrador técnico pasa a tener capacidad plena sobre información que quizá no necesita ver para cumplir su tarea.

8.11 Ejemplos prácticos de autorización bien diseñada

La teoría se vuelve más clara cuando se la aplica a situaciones concretas.

  • Una aplicación pública usa un rol que solo puede consultar vistas específicas, sin acceso directo a tablas sensibles.
  • Un proceso de carga nocturna inserta registros en una tabla destino, pero no puede borrarla ni alterar su estructura.
  • Un analista accede a datos agregados y enmascarados, sin ver identificadores completos de clientes.
  • El equipo de soporte consulta estados operativos mediante procedimientos controlados, sin acceso amplio a datos transaccionales.
  • Una cuenta administrativa de emergencia existe, pero se usa de forma excepcional, con fuerte trazabilidad y revisión posterior.

8.12 Relación entre autorización y auditoría

Un buen modelo de autorización mejora la auditoría, porque hace más fácil interpretar la actividad. Si cada rol tiene una función clara, cualquier acción fuera de ese marco se vuelve más visible como anomalía.

Por el contrario, cuando una cuenta tiene permisos demasiado amplios, casi cualquier acción parece posible y por eso resulta más difícil distinguir el uso esperado del abuso.

Autorización y auditoría se refuerzan mutuamente:

  • La autorización acota el universo de acciones esperables.
  • La auditoría verifica si las acciones observadas coinciden con ese universo.

8.13 Revisión periódica del acceso

Los permisos no deben considerarse permanentes por defecto. Cada cambio de rol, de aplicación, de entorno o de arquitectura puede volver obsoleta una autorización previamente razonable.

Una revisión madura del acceso suele contemplar:

  • Revisión periódica de roles y cuentas activas.
  • Validación con dueños funcionales sobre quién necesita qué acceso.
  • Detección de privilegios no utilizados o excesivos.
  • Retiro de excepciones temporales.
  • Comparación entre roles definidos y uso real observado.

Sin este proceso, el control de acceso se convierte lentamente en una colección de permisos heredados difícil de justificar.

8.14 Errores frecuentes en control de acceso

Los fallos más repetidos en autorización suelen ser conceptualmente simples, pero con gran impacto práctico.

  • Asignar privilegios administrativos a cuentas de aplicación.
  • Usar cuentas compartidas en lugar de identidades nominales o específicas.
  • Dar acceso directo a tablas sensibles cuando bastaban vistas o procedimientos.
  • No retirar permisos después de cambios funcionales o técnicos.
  • Construir roles demasiado amplios que agrupan necesidades distintas.
  • Confiar en la red o en la aplicación como sustituto del control de acceso interno al motor.
El problema más común no es la falta total de autorización, sino la autorización mal calibrada: privilegios válidos desde el punto de vista técnico, pero excesivos desde el punto de vista del riesgo.

8.15 Qué debes recordar de este tema

  • La autorización determina qué puede hacer una identidad autenticada dentro del entorno de datos.
  • Los roles permiten estructurar el acceso de forma más clara y sostenible que los permisos directos dispersos.
  • La granularidad de permisos reduce impacto y mejora control sobre objetos, operaciones y datos.
  • El sobredimensionamiento y la deriva de privilegios son riesgos frecuentes en plataformas maduras pero mal revisadas.
  • La revisión periódica del acceso es necesaria para que el modelo siga representando necesidades reales.

8.16 Conclusión

Un buen sistema de autorización transforma identidades verificadas en capacidades concretas, limitadas y alineadas con funciones reales. Cuando el control de acceso está bien diseñado, la base de datos resiste mejor errores, abuso interno y compromiso de credenciales.

En el próximo tema estudiaremos la seguridad a nivel de esquema, tablas, vistas, columnas y filas, donde la autorización se vuelve todavía más fina y cercana al dato concreto.