Mascarar dados no SQL Server


Mascarar dados no SQL Server é uma prática importante para proteger informações sensíveis, especialmente em conformidade com a Lei Geral de Proteção de Dados (LGPD) no Brasil. A máscara de dados do SQL Server permite ocultar os dados reais de usuários não autorizados ao fornecer uma versão mascarada dos dados. A seguir, explico como configurar a máscara de dados no SQL Server:

1. Criar um Banco de Dados e uma Tabela de Exemplo
Primeiro, vamos criar um banco de dados e uma tabela de exemplo para aplicar a máscara de dados:

CREATE DATABASE TestDB;
GO

USE TestDB;
GO

CREATE TABLE Customers (
CustomerID INT IDENTITY(1,1) PRIMARY KEY,
FullName NVARCHAR(100),
Email NVARCHAR(100),
Phone NVARCHAR(15),
CreditCardNumber NVARCHAR(20)
);
GO

INSERT INTO Customers (FullName, Email, Phone, CreditCardNumber)
VALUES
(‘John Doe’, ‘[email protected]’, ‘555-1234’, ‘1234-5678-9101-1121’),
(‘Jane Smith’, ‘[email protected]’, ‘555-5678’, ‘1121-9101-5678-1234’);
GO

2. Aplicar a Máscara de Dados
Podemos aplicar máscaras de dados usando o comando ALTER TABLE. Existem diferentes tipos de máscaras disponíveis:

Default Mask: Substitui caracteres alfanuméricos por ‘X’ e números por ‘0’.
Email Mask: Mantém o primeiro caractere e o domínio de email.
Custom String Mask: Define um padrão customizado para a máscara.
Random Mask for Numeric: Gera um número aleatório dentro de um intervalo especificado.

Exemplos:

— Máscara padrão (Default Mask)
ALTER TABLE Customers ALTER COLUMN FullName ADD MASKED WITH (FUNCTION = ‘default()’);

— Máscara de email
ALTER TABLE Customers ALTER COLUMN Email ADD MASKED WITH (FUNCTION = ‘email()’);

— Máscara customizada para string
ALTER TABLE Customers ALTER COLUMN Phone ADD MASKED WITH (FUNCTION = ‘partial(1, “****”, 2)’);

— Máscara de número aleatório
ALTER TABLE Customers ALTER COLUMN CreditCardNumber ADD MASKED WITH (FUNCTION = ‘random(1, 1000)’);
GO

3. Verificar a Máscara de Dados
Para verificar como os dados são apresentados a usuários não autorizados, podemos criar um usuário com permissões limitadas:

CREATE USER TestUser WITHOUT LOGIN;
GRANT SELECT ON Customers TO TestUser;
GO

EXECUTE AS USER = ‘TestUser’;
SELECT * FROM Customers;
REVERT;
GO

4. Gerenciar Permissões
Para que usuários específicos vejam os dados reais, é necessário conceder a permissão UNMASK:

GRANT UNMASK TO [UserWithUnmaskPermission];
GO

Informações adicionais: https://learn.microsoft.com/en-us/sql/relational-databases/security/dynamic-data-masking?view=sql-server-ver16

Considerações Finais:

  • Desempenho: A máscara de dados é aplicada dinamicamente durante as consultas, podendo ter impacto no desempenho, dependendo do volume de dados.
  • Segurança: Máscaras de dados ajudam a proteger informações sensíveis, mas não substituem outras práticas de segurança, como criptografia e controle de acesso rigoroso.
  • Implementar a máscara de dados ajuda a cumprir os requisitos da LGPD, garantindo que dados sensíveis estejam protegidos contra acessos não autorizados.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.