Como classificar dados sensíveis no SQL Server
Saber onde estão os dados sensíveis é o primeiro passo de qualquer estratégia de governança de dados. O SQL Server permite classificar dados sensíveis diretamente no motor da base de dados, sem ferramentas externas, através do comando ADD SENSITIVITY CLASSIFICATION. Ao etiquetar as colunas que guardam informação pessoal ou confidencial, ficas com um inventário fiável do que precisa de proteção e com uma base sólida para auditar quem acede a esses dados.
Pré-requisitos
- SQL Server 2019 ou superior, ou uma base de dados no Azure SQL Database (onde a funcionalidade Data Discovery & Classification está disponível).
- SQL Server Management Studio (SSMS) ou Azure Data Studio para executar os comandos.
- A permissão
ALTER ANY SENSITIVITY CLASSIFICATION, que também é concedida pela permissãoCONTROLna base de dados. - Uma base de dados de teste onde possas criar tabelas sem afetar produção.
Passo 1: Criar uma tabela de exemplo
Para praticares a classificação de dados sensíveis no SQL Server, começa por criar uma tabela simples com colunas que representam informação pessoal, como email, telefone e número de contribuinte.
CREATE TABLE dbo.Customers
(
CustomerID INT IDENTITY PRIMARY KEY,
FullName NVARCHAR(100),
Email NVARCHAR(255),
Phone NVARCHAR(20),
TaxId CHAR(9)
);
Esta tabela vai servir de alvo para as etiquetas de sensibilidade nos próximos passos.
Passo 2: Classificar uma coluna com ADD SENSITIVITY CLASSIFICATION
O comando ADD SENSITIVITY CLASSIFICATION aplica três atributos a uma coluna: uma etiqueta (LABEL), que indica o nível de confidencialidade; um tipo de informação (INFORMATION_TYPE), que descreve a natureza dos dados; e um nível de risco (RANK). Vamos classificar a coluna do email.
ADD SENSITIVITY CLASSIFICATION TO
dbo.Customers.Email
WITH (
LABEL = 'Confidential',
INFORMATION_TYPE = 'Contact Info',
RANK = MEDIUM
);
O parâmetro RANK aceita os valores NONE, LOW, MEDIUM, HIGH e CRITICAL. É útil porque serviços como o Advanced Threat Protection usam este nível para detetar acessos anómalos a dados mais críticos.
Os valores de LABEL e INFORMATION_TYPE são texto livre, por isso podes usar o esquema de classificação da tua organização; ainda assim, é boa prática reutilizar nomes consistentes (por exemplo, Public, General, Confidential e Highly Confidential) para facilitar os relatórios.
Passo 3: Classificar várias colunas ao mesmo tempo
Podes classificar várias colunas num único comando, separando os objetos por vírgulas. Todas as colunas indicadas recebem a mesma classificação, o que é prático para agrupar colunas com o mesmo grau de sensibilidade.
ADD SENSITIVITY CLASSIFICATION TO
dbo.Customers.Phone,
dbo.Customers.TaxId
WITH (
LABEL = 'Highly Confidential',
INFORMATION_TYPE = 'Personal Data',
RANK = HIGH
);
Tem em conta uma regra importante: cada coluna só pode ter uma classificação. Se voltares a executar o comando sobre uma coluna já classificada, a nova etiqueta substitui a anterior sem gerar erro.
Verificar o resultado
Para confirmar que as classificações foram aplicadas, consulta a vista de sistema sys.sensitivity_classifications. Como esta vista guarda apenas os identificadores das colunas, junta-a a sys.columns para veres os nomes legíveis.
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;
Deves obter três linhas — Email, Phone e TaxId — cada uma com a etiqueta, o tipo de informação e o nível de risco que definiste. Em alternativa, no SSMS podes clicar com o botão direito na base de dados e escolher Tasks > Data Discovery and Classification para abrir um relatório visual com as mesmas informações.
Dica: para remover uma classificação, usa DROP SENSITIVITY CLASSIFICATION FROM dbo.Customers.Email;
Conclusão
Classificar dados sensíveis no SQL Server dá-te um mapa claro da informação que precisa de proteção e prepara o terreno para auditorias: quando ativas o SQL Server Audit, os registos passam a indicar que dados classificados foram acedidos e por quem. O passo seguinte é combinar estas etiquetas com Dynamic Data Masking ou Row-Level Security para proteger na prática as colunas mais críticas. Olha para a tua tabela: que colunas, como a FullName, ainda estão por classificar?