Tema 9

9. Seguridad a nivel de esquema, tablas, vistas, columnas y filas

No todo control de acceso debe resolverse a nivel global. En bases de datos maduras, la protección se acerca al dato y se aplica con mayor precisión sobre estructuras lógicas, objetos concretos y subconjuntos específicos de información.

Objetivo Aplicar controles finos directamente sobre los datos
Enfoque Capas lógicas y restricción contextual
Resultado Reducir exposición sin perder funcionalidad

9.1 Introducción

En muchos sistemas, otorgar acceso a una base completa o a una tabla entera resulta excesivo. Las necesidades reales suelen ser más específicas: ciertos usuarios solo deben consultar parte de un esquema, algunas aplicaciones solo necesitan determinadas columnas y ciertos perfiles solo deberían ver filas relacionadas con su área, cliente o región.

Por eso, una parte importante de la seguridad en bases de datos consiste en refinar el control de acceso hasta acercarlo al dato. Esta aproximación reduce exposición, mejora cumplimiento y permite responder con más precisión a necesidades funcionales diversas sin recurrir a cuentas excesivamente poderosas.

La seguridad a nivel de esquema, tablas, vistas, columnas y filas es una evolución natural del modelo de autorización general. No lo reemplaza, sino que lo profundiza y lo vuelve más expresivo.

9.2 Por qué el control fino es necesario

Cuando el acceso se define con poca granularidad, aparecen dos problemas opuestos. O bien se bloquea demasiado y la operación se vuelve rígida, o bien se otorgan permisos amplios para resolver necesidades concretas y se expone información innecesaria.

El control fino es útil porque permite:

  • Limitar el acceso exactamente a los datos necesarios.
  • Separar información sensible de datos operativos más generales.
  • Reducir el impacto de una credencial comprometida.
  • Apoyar requisitos regulatorios y de privacidad.
  • Construir interfaces de acceso más seguras para aplicaciones y usuarios.
Cuanto más cerca del dato se aplica el control, más preciso puede ser el equilibrio entre necesidad operativa y reducción de riesgo.

9.3 Seguridad a nivel de esquema

El esquema es una agrupación lógica de objetos dentro de la base de datos. Organizar objetos por esquemas con criterio de seguridad permite separar dominios funcionales, responsabilidades y niveles de sensibilidad.

Por ejemplo, una base puede distinguir:

  • Esquemas de aplicación.
  • Esquemas administrativos.
  • Esquemas de auditoría.
  • Esquemas con datos sensibles o regulados.
  • Esquemas de integración o staging.

Cuando se agrupan correctamente los objetos, es más sencillo asignar permisos por dominio y evitar que una identidad acceda a áreas enteras de la plataforma que no necesita conocer. Si todo convive en un único espacio lógico, el control posterior se vuelve más difícil y propenso a errores.

9.4 Seguridad a nivel de tabla

La tabla es uno de los objetos más habituales sobre los que se aplican permisos. Definir acceso a nivel de tabla permite separar claramente qué conjuntos de datos pueden ser leídos, modificados o administrados por cada rol.

Escenario Permiso adecuado Riesgo si se sobredimensiona
Aplicación de consulta Lectura sobre tablas específicas Exposición o modificación de otros dominios
Proceso de carga Inserción en tablas destino concretas Borrado o alteración de estructuras ajenas
Equipo analítico Lectura de tablas controladas o derivadas Acceso innecesario a datos crudos sensibles
Soporte operativo Consulta limitada de tablas relevantes Acceso excesivo a información funcional crítica

Un error frecuente es otorgar acceso a todas las tablas de un esquema por comodidad, cuando en realidad el caso de uso involucraba solo unas pocas.

9.5 Vistas como mecanismo de seguridad

Las vistas son un recurso muy valioso para la seguridad porque permiten ofrecer una representación controlada de los datos sin exponer directamente las tablas base. Bien diseñadas, ayudan a ocultar complejidad, reducir superficie y limitar acceso a columnas o registros específicos.

Las vistas pueden utilizarse para:

  • Mostrar solo ciertos campos de una tabla sensible.
  • Presentar datos ya filtrados por contexto funcional.
  • Ocultar relaciones internas o estructuras complejas.
  • Separar acceso analítico de acceso operativo.
Una vista no es segura por definición. Su valor aparece cuando se usa como capa de exposición controlada y se evita otorgar acceso directo innecesario a las tablas subyacentes.

9.6 Seguridad a nivel de columna

No todos los campos de una tabla tienen la misma sensibilidad. Una misma tabla puede mezclar identificadores, datos operativos, información personal, valores financieros y atributos internos. Si el acceso se define solo a nivel de tabla, se corre el riesgo de exponer columnas que no son necesarias para la función del usuario o del servicio.

La seguridad a nivel de columna permite controlar el acceso a campos concretos, como por ejemplo:

  • Números de documento o identificadores personales.
  • Datos de contacto.
  • Salarios, montos o información bancaria.
  • Claves técnicas, tokens o secretos referenciados.
  • Campos de auditoría o clasificación interna.

Este nivel de control es especialmente útil en escenarios de privacidad, minimización de datos y separación entre áreas funcionales.

9.7 Seguridad a nivel de fila

La seguridad a nivel de fila restringe qué registros puede ver o modificar una identidad según criterios contextuales. Es una forma poderosa de evitar que distintos usuarios con funciones similares accedan a la totalidad de los datos cuando solo deberían operar sobre un subconjunto.

Algunos ejemplos típicos incluyen:

  • Un usuario solo accede a clientes de su región.
  • Un operador consulta pedidos de su sucursal.
  • Un sistema multiempresa separa registros por tenant.
  • Un equipo visualiza únicamente incidentes asignados a su unidad.

Este control puede implementarse dentro del motor o en capas superiores, pero cuanto más crítico sea el dato, más valioso resulta que la restricción exista también a nivel de base.

9.8 Combinación de niveles de control

La práctica más robusta suele combinar varios niveles al mismo tiempo. No se trata de elegir entre esquema, tabla, columna o fila, sino de usarlos en forma complementaria según el riesgo y el caso de uso.

Por ejemplo, una organización puede:

  • Separar datos sensibles en un esquema específico.
  • Dar acceso solo a ciertas vistas, no a tablas base.
  • Ocultar columnas críticas dentro de esas vistas.
  • Aplicar filtros por fila según el contexto del usuario.

Esta combinación responde al principio de defensa en profundidad y reduce la dependencia de un único control para proteger la información.

9.9 Relación con privacidad y minimización de datos

La seguridad a nivel fino se vincula estrechamente con el principio de minimización: cada identidad debería ver solo los datos necesarios para su finalidad. Esto no solo mejora seguridad, sino que también fortalece el cumplimiento de requisitos legales y regulatorios.

En vez de duplicar tablas o crear accesos amplios con acuerdos informales, un modelo bien diseñado puede ofrecer a cada perfil exactamente la porción de información que necesita, sin exponer atributos adicionales por comodidad técnica.

La minimización no busca obstaculizar el trabajo, sino reducir el volumen de información expuesta ante error, abuso o compromiso.

9.10 Ventajas y limitaciones de las vistas y capas lógicas

Las vistas y otras capas lógicas de exposición controlada son herramientas muy útiles, pero no resuelven todo por sí solas.

Aspecto Ventaja Limitación o riesgo
Abstracción Ocultan complejidad y estructuras internas Pueden dar falsa sensación de seguridad si las tablas siguen expuestas
Reducción de datos visibles Permiten mostrar menos columnas o registros Requieren mantenimiento coherente con cambios de esquema
Soporte a analítica Facilitan accesos controlados para reportes Pueden proliferar y perder gobierno si no se estandarizan
Seguridad funcional Acercan el acceso a necesidades reales No reemplazan autenticación, roles ni auditoría

9.11 Riesgos de una mala implementación

Aplicar seguridad fina sin criterio también puede introducir problemas. Si el modelo se vuelve demasiado complejo o inconsistente, termina siendo difícil de administrar y revisar.

Entre los riesgos frecuentes se encuentran:

  • Crear demasiadas vistas y excepciones sin estándar claro.
  • Dar acceso a vistas y también a tablas base, anulando el control.
  • No revisar el impacto de cambios de esquema sobre permisos existentes.
  • Implementar filtros por fila solo en la aplicación, sin respaldo en la base cuando el riesgo lo exige.
  • Suponer que ocultar columnas equivale a proteger completamente la información.
La granularidad es útil cuando simplifica el acceso seguro al dato. Si se vuelve un laberinto de excepciones, deja de ser una defensa y pasa a ser una fuente de error operativo.

9.12 Casos prácticos de aplicación

Estos controles se entienden mejor en situaciones concretas de negocio y operación.

  • Un call center accede a una vista con datos de contacto, pero no ve campos financieros ni datos internos de auditoría.
  • Un analista consulta un esquema de reporting con información agregada en lugar de tablas transaccionales completas.
  • Un sistema multiempresa usa filtros por fila para que cada cliente solo visualice sus propios registros.
  • El equipo de soporte puede consultar estados de pedidos, pero no modificar montos ni ver datos completos de pago.
  • Un proveedor externo accede temporalmente a un subconjunto de objetos en un esquema técnico aislado.

9.13 Relación con auditoría y monitoreo

Cuando el acceso está bien acotado a nivel de objeto y dato, la auditoría gana claridad. Se vuelve más fácil detectar si una cuenta consultó columnas sensibles que normalmente no debería tocar o si intentó acceder a registros fuera de su alcance funcional.

Además, el monitoreo puede enfocarse mejor en eventos relevantes:

  • Accesos a tablas o vistas sensibles.
  • Lectura de columnas críticas.
  • Consultas masivas que atraviesan filtros habituales.
  • Intentos fallidos de acceso a objetos restringidos.

De este modo, la seguridad fina no solo previene, sino que también mejora la detectabilidad de comportamientos anómalos.

9.14 Errores frecuentes en seguridad a nivel de dato

  • Asumir que el control a nivel de aplicación basta y no reforzar restricciones en la base.
  • Otorgar acceso a tablas completas cuando podían usarse vistas o procedimientos.
  • No distinguir columnas sensibles de columnas operativas comunes.
  • Aplicar filtros por fila inconsistentes entre módulos o servicios.
  • No documentar la lógica de seguridad asociada a vistas, esquemas y objetos derivados.
  • Olvidar revisar permisos después de cambios de estructura o nuevas funcionalidades.

9.15 Qué debes recordar de este tema

  • La seguridad a nivel de esquema, tabla, vista, columna y fila permite acercar el control directamente al dato.
  • Los esquemas ayudan a separar dominios y sensibilidades dentro de la base.
  • Las vistas son útiles para exponer información controlada, siempre que no se mantenga acceso innecesario a tablas base.
  • El control por columna y por fila reduce exposición y fortalece minimización de datos.
  • La granularidad debe ser suficiente para proteger mejor, pero no tan caótica que vuelva inmanejable el modelo de acceso.

9.16 Conclusión

La protección efectiva de bases de datos exige ir más allá del acceso general a una instancia o a una tabla completa. Al aplicar controles más cercanos al dato, la organización gana precisión, reduce exposición innecesaria y mejora tanto la seguridad como el cumplimiento.

En el próximo tema estudiaremos la programación segura sobre bases de datos, incluyendo consultas parametrizadas, procedimientos y validación de entradas, para evitar que la propia lógica de acceso se convierta en un vector de ataque.