Enmascaramiento Dinámico de Datos (DDM)

El enmascaramiento dinámico de datos (DDM) es una funcionalidad de seguridad que protege datos confidenciales en tiempo real, mostrando versiones enmascaradas a usuarios sin privilegios. Ventajas principales:

  1. Enmascaramiento en tiempo real: No expone los datos reales.
  2. Facilidad de implementación: No requiere codificación compleja.
  3. Datos intactos: No modifica los datos almacenados; solo enmascara los resultados de las consultas.

Tipos de enmascaramiento y usos

  • Valor predeterminado: Oculta completamente los datos (función: default()).
  • Correo electrónico: Muestra la primera letra del correo y un sufijo “.com” (función: email()).
  • Texto personalizado: Expone caracteres iniciales/finales y oculta el resto con una cadena definida (función: partial()).
  • Aleatorio: Genera valores aleatorios para datos numéricos o binarios (función: random()).

Ejemplo de configuración



Resultado:

  • Email: j*****@contoso.com
  • PhoneNumber: XXX-XXX-7890
  • CreditCardNumber: XXXX-XXXX-XXXX-3456

Seguridad a Nivel de Fila (RLS)

La seguridad a nivel de fila (RLS) restringe el acceso a filas específicas en función de roles o condiciones definidas.

Componentes principales:

  1. Predicados de filtro: Función que evalúa si una fila debe ser visible para el usuario.
  2. Directivas de seguridad: Asociadas a las tablas para aplicar los predicados de filtro.

Ejemplo de implementación RLS



  • Los usuarios ven únicamente filas asignadas a su TenantName.
  • El administrador (Admin) tiene acceso a todas las filas.

Casos de uso

  • Restringir acceso a datos de departamentos.
  • Permitir a clientes ver solo sus datos.
  • Cumplir con regulaciones de privacidad.

Seguridad a Nivel de Columna (CLS)

La seguridad a nivel de columna (CLS) permite restringir el acceso a columnas específicas para proteger datos sensibles.

Ejemplo en un entorno médico:

  • Tabla: Patients con columnas como Name, Address, y MedicalHistory.
  • Reglas de acceso:
    • Roles Doctor y Nurse tienen acceso total.
    • Roles Receptionist y Patient no pueden ver MedicalHistory.

     

    Ventajas frente a vistas:

    Aspecto CLS Vistas
    Granularidad Control directo en columnas. Requiere múltiples vistas.
    Rendimiento Más eficiente. Menor en tablas grandes.
    Mantenimiento Permisos atados a columnas. Actualizaciones manuales.

     


    Configuración de Permisos Detallados

    Permisos fundamentales en SQL:

  • SELECT: Ver datos.
  • INSERT: Agregar datos.
  • UPDATE: Modificar datos.
  • DELETE: Eliminar datos.

Ejemplo de gestión de permisos:


SQL Dinámico

El SQL dinámico permite construir consultas de forma programada para adaptarse a diversos escenarios.

Ejemplo básico:

 

 Uso de QUOTENAME evita ataques de inyección de SQL.


Recomendaciones Generales

  1. Principio del mínimo privilegio:

    • Conceder solo permisos necesarios para completar tareas.
    • Ejemplo: Aplicaciones que usan procedimientos almacenados no necesitan acceso directo a tablas.
  2. Seguridad combinada:

    • Combinar CLS, RLS y DDM para proteger datos a niveles múltiples.
    • Implementar monitoreo constante y pruebas en entornos seguros.
  3. Evitar ataques de canal lateral:

    • Asegurarse de que las reglas de seguridad no sean vulnerables a consultas que intenten deducir datos a través de excepciones.