TDE y Always Encrypted

Compara TDE, Always Encrypted, TLS y Private Link para proteger datos en reposo, en tránsito y frente a amenazas internas en Azure SQL.

La sección de protección de datos del examen DP-300 pregunta qué característica defiende contra qué amenaza. El cifrado en reposo, el cifrado en tránsito, el cifrado del lado del cliente y el aislamiento de red abordan vectores de ataque distintos. La administración de claves y la visibilidad del DBA varían entre estas funciones, y el examen explora esas diferencias a través de escenarios concretos. Comprender qué capa protege cada tecnología facilita la selección de la herramienta correcta frente a un escenario determinado.

TDE — Guardar los datos bajo llave

Imagine que un atacante irrumpe físicamente en la sala de servidores y se lleva un disco duro. Si lo conecta a otra máquina, ¿podrá leer los archivos de datos? Transparent Data Encryption (TDE) existe precisamente para impedir ese escenario.

TDE cifra automáticamente los archivos de datos, los archivos de registro y los archivos de copia de seguridad a nivel de página dentro de Azure SQL Database. No se requieren cambios en el código de la aplicación y el impacto en el rendimiento es mínimo. En Azure SQL Database, TDE está habilitado de forma predeterminada. En la configuración predeterminada, Azure administra la clave de cifrado mediante un Service-Managed Key. Si los requisitos de cumplimiento o auditoría exigen que su equipo controle la clave, puede almacenar su propia clave en Azure Key Vault, un enfoque denominado Customer-Managed Key (CMK) o Bring Your Own Key (BYOK). Con CMK, el equipo de operaciones controla la rotación y la revocación de la clave. Si se elimina la clave, el acceso a la base de datos queda bloqueado de inmediato, lo que convierte a CMK en una palanca muy eficaz para el cumplimiento normativo, aunque también traslada al equipo la responsabilidad sobre la disponibilidad de la clave.

 

Always Encrypted — Un sobre sellado

Ahora suponga que la amenaza no proviene de un atacante externo, sino de alguien que ha comprometido una cuenta de DBA. TDE impide que alguien se lleve un disco físico, pero no evita que una consulta legítima devuelva datos en texto claro a un usuario privilegiado. Always Encrypted cubre ese hueco.

Con Always Encrypted, el controlador del cliente cifra los datos antes de enviarlos al servidor. Azure SQL Database almacena y consulta únicamente los valores cifrados; la clave de descifrado nunca abandona el lado del cliente. Aunque un DBA ejecute un SELECT directo, solo verá bytes cifrados.

Existen dos tipos de cifrado disponibles. Deterministic significa que el mismo texto en claro siempre produce el mismo texto cifrado: las comparaciones de igualdad (), GROUP BY y JOIN funcionan correctamente, pero los ataques de análisis de frecuencia son posibles porque valores idénticos producen texto cifrado idéntico. Randomized significa que el mismo texto en claro produce texto cifrado diferente en cada ocasión, lo que ofrece una seguridad mucho mayor, aunque la columna no puede buscarse ni ordenarse.

Always Encrypted with Secure Enclaves ejecuta el descifrado dentro de un entorno de ejecución de confianza (TEE) en el lado del servidor, lo que permite consultas de rango (, ) incluso en columnas Randomized, manteniendo el texto en claro fuera del alcance de los administradores de base de datos.

 

Cifrado en tránsito — TLS y cadenas de conexión

Así como no desearía que alguien leyera su PIN bancario por encima de su hombro, el tráfico entre un cliente y un servidor de base de datos debe cifrarse para protegerlo frente a las escuchas en la red.

Azure SQL Database aplica TLS 1.2 o superior de forma predeterminada. Al establecer en la cadena de conexión, todos los datos viajan a través de un canal cifrado. Mantener — el valor predeterminado — significa que el cliente valida el certificado del servidor, lo que protege frente a ataques de intermediario. Algunos desarrolladores cambian este valor a cuando usan certificados autofirmados en entornos locales, pero ese hábito nunca debe llegar a producción, ya que deshabilita por completo la validación del certificado y deja la conexión expuesta a posibles interceptaciones.

 

Aislamiento de red — Private Link y Private Endpoint

Si el objetivo es bloquear todo el acceso enrutado a través de la red pública, el cifrado por sí solo no es suficiente. Un edificio con una entrada vigilada y puertas de acceso controladas por tarjeta es intrínsecamente más seguro que uno en el que cualquiera puede entrar al vestíbulo sin identificarse.

Private Link y Private Endpoint otorgan a Azure SQL Database una dirección IP privada dentro de una VNet. Es posible deshabilitar el endpoint público por completo, y todo el tráfico circula únicamente por la red troncal de Microsoft, sin tocar jamás la red pública. Tras configurar un Private Endpoint, basta con establecer la regla de firewall para denegar el acceso a la red pública y la base de datos quedará inaccesible desde fuera de la VNet.

Azure SQL Managed Instance se integra con una VNet de forma predeterminada, lo que significa que no tiene endpoint público desde el principio. Esto convierte a Managed Instance en una opción robusta cuando el aislamiento de red es un requisito estricto desde el primer día del proyecto.

 

TDE frente a Always Encrypted — Cuál es la diferencia real

Ambas funciones se denominan cifrado, pero defienden contra amenazas distintas y operan en capas diferentes.

| Dimensión | TDE | Always Encrypted | |:--|:--|:--| | Dónde ocurre el cifrado | Servidor (capa de almacenamiento) | Controlador del cliente | | Propietario de la clave | Azure o equipo de operaciones (CMK) | Equipo de aplicación | | Visibilidad del DBA | Puede consultar texto en claro | Solo ve texto cifrado | | Capacidad de consulta | Sin restricciones | Solo consultas de igualdad con Deterministic | | Amenaza principal | Robo de medios físicos, filtración de copias de seguridad | Amenaza interna de usuarios privilegiados |

Estas dos funciones no son excluyentes entre sí. Una configuración típica de producción aplica TDE para la protección general de datos en reposo y luego añade Always Encrypted en las columnas más sensibles, como números de identificación nacional o de tarjeta, donde incluso un administrador de confianza no debería ver el texto en claro.

!TDE vs Always Encrypted

Alcance del cifrado y gestión de claves — Cómo elegir

Cerrar toda la casa con llave y guardar los objetos valiosos en una caja fuerte personal son dos niveles de protección diferentes. TDE es como cerrar toda la casa; Always Encrypted es la caja fuerte personal que hay dentro. Usar ambos significa que ni un atacante externo ni un administrador interno podrán leer los datos más sensibles sin cifrar.

En cuanto a la gestión de claves, el Customer-Managed Key de TDE se integra con Azure Key Vault y otorga al equipo de operaciones el control total sobre el ciclo de vida de la clave, incluidas la rotación y la revocación. La clave maestra de columna de Always Encrypted reside en un almacén de certificados del lado del cliente o en Azure Key Vault, y la posee el equipo de aplicación, no el equipo de administración de bases de datos. Esta separación en la propiedad de las claves define con claridad las responsabilidades de cada equipo cuando ambas funciones se despliegan conjuntamente.

 

Escenarios trampa — Lo que el examen suele preguntar

"El DBA no debe poder leer los valores de columna ni con una consulta directa." — La respuesta es Always Encrypted, no TDE. TDE no restringe el acceso de los usuarios autenticados que realizan consultas a través del motor de base de datos.

"La política de la empresa exige que el equipo gestione sus propias claves de cifrado." — Use TDE con Customer-Managed Key (BYOK) respaldado por Azure Key Vault. El Service-Managed Key no satisface este requisito.

"Un archivo de copia de seguridad fue filtrado y no debe exponer datos." — TDE cifra los archivos de copia de seguridad, por lo que la respuesta correcta es TDE. Always Encrypted no protege directamente los archivos de copia de seguridad.

"Bloquear todo enrutamiento público al servidor de base de datos." — Use Private Endpoint o Azure SQL Managed Instance. TLS protege el canal pero no elimina la ruta pública; Private Link la elimina por completo.

 

Resumen para el Examen

"Cifrar datos en reposo, sin cambios en el código" -- TDE "Archivos de copia de seguridad y registro cifrados automáticamente" -- TDE "Clave autogestionada, integración con Azure Key Vault" -- Customer-Managed Key (BYOK) "El DBA no puede leer texto en claro, cifrado del lado del cliente" -- Always Encrypted "Comparación de igualdad posible, riesgo de análisis de frecuencia" -- cifrado Deterministic "No se puede buscar, seguridad máxima" -- cifrado Randomized "Consultas de rango y LIKE en columnas Randomized" -- Always Encrypted with Secure Enclaves "Cifrado en tránsito, validación de certificado" -- TLS 1.2+, Encrypt=true "Bloquear endpoint público, dirección IP privada" -- Private Link / Private Endpoint "Integración con VNet por defecto, sin endpoint público" -- Azure SQL Managed Instance "Defensa contra robo de medios físicos" -- TDE "Defensa contra amenazas internas privilegiadas" -- Always Encrypted

TDE = bloqueo en la capa de almacenamiento, Always Encrypted = sellado del lado del cliente, TLS = protección del canal de tránsito, Private Link = eliminación del acceso público.

Volver a la lista del blog