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:
- Enmascaramiento en tiempo real: No expone los datos reales.
- Facilidad de implementación: No requiere codificación compleja.
- 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:
- Predicados de filtro: Función que evalúa si una fila debe ser visible para el usuario.
- 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 comoName
,Address
, yMedicalHistory
. - Reglas de acceso:
- Roles
Doctor
yNurse
tienen acceso total. - Roles
Receptionist
yPatient
no pueden verMedicalHistory
.
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:
- Roles
- 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
Principio del mínimo privilegio:
- Conceder solo permisos necesarios para completar tareas.
- Ejemplo: Aplicaciones que usan procedimientos almacenados no necesitan acceso directo a tablas.
Seguridad combinada:
- Combinar CLS, RLS y DDM para proteger datos a niveles múltiples.
- Implementar monitoreo constante y pruebas en entornos seguros.
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.