SQL Server 2016 – Implementando o Data Masking

Galera,

No vídeo de hoje quero demonstrar como funciona o mascaramento de dados dinâmicos no SQL Server 2016.

Caso tenha interesse em montar o cenário descrito no vídeo, basta utilizar o script abaixo:

[code language=”sql”]
–Criando o banco de dados DBTeste
CREATE DATABASE DBTeste
GO
USE DBTeste
GO
–Funções para mascaramento dos dados
–Default => mascaramento completo de acordo com o tipo de dados utilizado
–Email => aXXX@XXXX.com
–Custom String => libera a primeira e última letra e adiciona uma string
—                customizada no meio
–Random => Utilizar em qualquer tipo de dados numérico para substituir o valor
–original por um randômico dentro de um range válido
CREATE TABLE Cliente
  (CodCli int IDENTITY PRIMARY KEY,
   Nome varchar(100) MASKED WITH (FUNCTION = ‘partial(1,"XXXXXXX",0)’) NULL,
   Sobrenome varchar(100) NOT NULL,
   Telefone varchar(12) MASKED WITH (FUNCTION = ‘default()’) NULL,
   Email varchar(100) MASKED WITH (FUNCTION = ‘email()’) NULL);

INSERT Cliente (Nome, Sobrenome, Telefone, Email) VALUES
(‘Roberto’, ‘Tamburello’, ‘555.123.4567’, ‘RTamburello@contoso.com’),
(‘Janice’, ‘Galvin’, ‘555.123.4568’, ‘JGalvin@contoso.com.co’),
(‘Zheng’, ‘Mu’, ‘555.123.4569’, ‘ZMu@contoso.net’);

SELECT * FROM Cliente;

–Criando usuario para leitura da tabela Cliente
CREATE USER App WITHOUT LOGIN;
GRANT SELECT ON Cliente TO App;

–Leitura dos dados já mascarados
EXECUTE AS USER = ‘App’;
SELECT * FROM Cliente;
REVERT;
SELECT * FROM Cliente

–Informações sobre tabelas e colunas mascaradas
SELECT c.name, tbl.name as table_name, c.is_masked, c.masking_function
FROM sys.masked_columns AS c
JOIN sys.tables AS tbl
    ON c.[object_id] = tbl.[object_id]
WHERE is_masked = 1;

–Incluindo mascaramento em uma coluna já existente
ALTER TABLE Cliente
ALTER COLUMN Sobrenome ADD MASKED WITH (FUNCTION = ‘partial(2,"XXX",0)’);

–Alterando mascaramento em uma coluna já existente
ALTER TABLE Cliente
ALTER COLUMN Sobrenome varchar(100) MASKED WITH (FUNCTION = ‘default()’);

–Permissão para leitura dos dados não mascarados
GRANT UNMASK TO App;
EXECUTE AS USER = ‘App’;
SELECT * FROM Cliente;
REVERT;

— Removendo a permissão UNMASK
REVOKE UNMASK TO App;

–Excluindo o mascaramento de uma coluna
ALTER TABLE Cliente
ALTER COLUMN Sobrenome DROP MASKED;
[/code]

Espero que gostem e não deixem de inscreverem-se no blog, no canal do youtube e no grupo de discussão SQLManiacs.

Grande abraço.

18 pensou em “SQL Server 2016 – Implementando o Data Masking

  1. Pingback: SQL Server 2016 – Implementando o Data Masking | DBA4All

    1. Vitor Fava

      Fala Galvão, tudo bem contigo?
      Muito obrigado pelo seu feedback.
      Também espero que seja mantida e até melhorada no lançamento do SQL Server 2016.

      Responder
  2. marcelodbasantos

    Vitor,
    Bacana essa funcionalidade e muito boa sua explicação.
    Vou falar para você que onde estou hoje precisamos dessa funcionalidade … Vamos aguardar Rsrs

    Responder
    1. Vitor Fava

      Grande Marcelo, tudo bem contigo meu amigo?
      Também achei essa funcionalidade bem interessante.
      Espero que esteja curtindo o material e qualquer necessidade é só me avisar.
      Grande abraço.

      Responder
  3. Heitor Arantes

    Boa Noite!
    Vitor muito bom o vídeo, parabéns pela apresentação e por compartilhar o seu conhecimento com a comunidade.
    Abraços.

    Responder
  4. Pingback: SQL Server 2016 – Implementando o Data Masking – DBA Brasil

  5. Marcel Inowe

    Fava, muito bom seu vídeo. Eu tinha ouvido falar na funcionalidade, mas ainda não tinha parado para testar. Uma dúvida: Você chegou a ver a performance disso na leitura com mascaramento? Será que por ele mascarar fica mais lento?

    Abs

    Responder
    1. Vitor Fava

      Fala grande Marcel, beleza?
      Não cheguei a testar para verificar possíveis problemas de performance, mas é uma ótima ideia para um estudo de caso.
      Farei isso e depois repasso o resultado.
      Grande abraço.

      Responder
  6. Luís Flávio

    Fala Vitor! Muito bom essa abordagem!
    E pode deixar o cara de bolcha ai que é melhor sempre ver o palestrate.

    Eu acho que faltou ter uma funcionalidade melhor para o Data Masking do SQL Server. Que seria ter uma opção (parâmetro) de fazer o mascaramento efetivo dos dados no momento em que é realizado um backup/cópia, pois pelo que vi nessa funcionalidade ela serve apenas para cenários internos, para um cenário extermo.

    Vou citar um exemplo real que se passou onde trabalhava. Precisávamos nós fonecedor ter o banco de dados de um cliente que continha informações extremamente sigilosas com grande frequencia mas eles não liberavam para nós um BAK do banco nem pagando. O que ficava impossivel de reproduzir alguns issues que só aconteciam no ambiente do cliente e sabiamos que estava relacionado os dados no banco. Então descobrimos uma funcionalidade no ORACLE que permitia fazer um mascaramento das informações quando fazia o export do banco e isso foi maravilhoso pois permitia que o cliente poderia enviar o BAK do BD sem problemas pois as informações estão de fato mascaradas permitindo debugar e investigar os problemas que ocorria somente no cliente.

    Vendo essa funcionalidade no SQL Server 2016 ela não serveria neste cenário (externo) que seria o cliente enviar uma cópia do BD para o fornecedor do sistema e ele restaurar em seu ambiente interno pois os dados não estão de fatos mascaradas pois esse processo é feio a nível de acesso de usuário.

    Grande abraço

    Responder
    1. Vitor Fava

      Grande Luis, tudo bem contigo?
      O mascaramento de dados no SQL Server ainda pode ser melhorado com certeza. Se por acaso você tivesse o mascaramento habilitado nas tabelas do seu destino, também poderia fazer o import que as informações seriam salvas e posteriormente mascaradas também.
      Espero ter ajudado.
      Grande abraço e obrigado pelo seu feedback.

      Responder
  7. Jailson Lima

    Interessante esse código SQL muito bom pra quem tem a noção e facio entendelo bons comentários.

    Responder
  8. João Paulo

    Vitor, Bom dia. Vc ministra algum curso on line de administração banco de dados?

    Responder

Deixe uma resposta