Cómo clasificar datos sensibles en SQL Server
Saber dónde están tus datos sensibles es el primer paso de cualquier estrategia de gobernanza de datos. SQL Server permite clasificar datos sensibles directamente en el motor de la base de datos, sin herramientas externas, mediante el comando ADD SENSITIVITY CLASSIFICATION. Al etiquetar las columnas que guardan información personal o confidencial, obtienes un inventario fiable de lo que necesita protección y una base sólida para auditar quién accede a esos datos.
Requisitos previos
- SQL Server 2019 o superior, o una base de datos en Azure SQL Database (donde está disponible la función Data Discovery & Classification).
- SQL Server Management Studio (SSMS) o Azure Data Studio para ejecutar los comandos.
- El permiso
ALTER ANY SENSITIVITY CLASSIFICATION, que también concede el permisoCONTROLsobre la base de datos. - Una base de datos de prueba donde puedas crear tablas sin afectar a producción.
Paso 1: Crear una tabla de ejemplo
Para practicar la clasificación de datos sensibles en SQL Server, empieza por crear una tabla sencilla con columnas que representan información personal, como email, teléfono y número de identificación fiscal.
CREATE TABLE dbo.Customers
(
CustomerID INT IDENTITY PRIMARY KEY,
FullName NVARCHAR(100),
Email NVARCHAR(255),
Phone NVARCHAR(20),
TaxId CHAR(9)
);
Esta tabla será el objetivo de las etiquetas de sensibilidad en los próximos pasos.
Paso 2: Clasificar una columna con ADD SENSITIVITY CLASSIFICATION
El comando ADD SENSITIVITY CLASSIFICATION aplica tres atributos a una columna: una etiqueta (LABEL) para el nivel de confidencialidad; un tipo de información (INFORMATION_TYPE) que describe la naturaleza de los datos; y un nivel de riesgo (RANK). Vamos a clasificar la columna del email.
ADD SENSITIVITY CLASSIFICATION TO
dbo.Customers.Email
WITH (
LABEL = 'Confidential',
INFORMATION_TYPE = 'Contact Info',
RANK = MEDIUM
);
El parámetro RANK acepta los valores NONE, LOW, MEDIUM, HIGH y CRITICAL. Es útil porque servicios como Advanced Threat Protection usan este nivel para detectar accesos anómalos a los datos más críticos.
Los valores de LABEL e INFORMATION_TYPE son texto libre, así que puedes usar el esquema de clasificación de tu organización; aun así, es buena práctica reutilizar nombres coherentes (por ejemplo, Public, General, Confidential y Highly Confidential) para facilitar los informes.
Paso 3: Clasificar varias columnas a la vez
Puedes clasificar varias columnas en un solo comando separando los objetos con comas. Todas las columnas indicadas reciben la misma clasificación, lo que resulta práctico para agrupar columnas con el mismo grado de sensibilidad.
ADD SENSITIVITY CLASSIFICATION TO
dbo.Customers.Phone,
dbo.Customers.TaxId
WITH (
LABEL = 'Highly Confidential',
INFORMATION_TYPE = 'Personal Data',
RANK = HIGH
);
Ten en cuenta una regla importante: cada columna solo puede tener una clasificación. Si vuelves a ejecutar el comando sobre una columna ya clasificada, la nueva etiqueta sustituye a la anterior sin generar ningún error.
Verificar el resultado
Para confirmar que las clasificaciones se aplicaron, consulta la vista de sistema sys.sensitivity_classifications. Como esta vista solo guarda los identificadores de las columnas, únela con sys.columns para ver los nombres legibles.
SELECT
OBJECT_NAME(sc.major_id) AS TableName,
c.name AS ColumnName,
sc.label,
sc.information_type,
sc.rank_desc
FROM sys.sensitivity_classifications AS sc
JOIN sys.columns AS c
ON c.object_id = sc.major_id
AND c.column_id = sc.minor_id;
Deberías obtener tres filas — Email, Phone y TaxId — cada una con la etiqueta, el tipo de información y el nivel de riesgo que definiste. Como alternativa, en SSMS puedes hacer clic derecho en la base de datos y elegir Tasks > Data Discovery and Classification para abrir un informe visual con la misma información.
Consejo: para eliminar una clasificación, usa DROP SENSITIVITY CLASSIFICATION FROM dbo.Customers.Email;
Conclusión
Clasificar datos sensibles en SQL Server te da un mapa claro de la información que necesita protección y prepara el terreno para las auditorías: cuando activas SQL Server Audit, los registros empiezan a mostrar qué datos clasificados se consultaron y quién lo hizo. El siguiente paso es combinar estas etiquetas con Dynamic Data Masking o Row-Level Security para proteger de verdad las columnas más críticas. Mira tu tabla: ¿qué columnas, como FullName, siguen sin clasificar?