Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Mesmo com proteções na camada de aplicação, uma vez que um usuário tenha acesso direto ao banco de dados, informações sigilosas podem ser acessadas. O acesso pode ser necessário por diversos motivos, sejam referentes à troubleshooting para encontrar a causa de alguma inconsistência ou outras razões que tornem isto necessário.

Nesta situação, o Data Masking (Mascaramento de dados) para o SQL Server mostra-se como uma ferramenta viável para proteger dados que não devem ser expostos, ao limitar a exposição destes para usuários sem os privilégios necessários. 

Aviso
titleVersões homologadas

Não são suportadas as versões limitadas e tipicamente classificadas como "Express".

Disponibilidade da feature
SQL Server 2019 Standard, Enterprise
SQL Server 2017 Standard, Enterprise
SQL Server 2016 Standard, Enterprise

Configuração da feature

Não é necessário realizar instalações à parte, já que esta feature está disponível nativamente nas versões supracitadas.

Para fins de comparação, dois usuários serão criados, sendo um com permissão para visualização dos dados e outro sem permissão. A criação de um segundo usuário que visualizará apenas os dados necessários é essencial para o uso da feature

Expandir
titleCriação de usuário no banco de dados

Neste exemplo, serão criados dois usuários: P12133, que possui permissão total de acesso aos dados e deve ser criado conforme grants mínimos para o funcionamento do DBAccess; e P12133MASK, que visualizará apenas a máscara em dados sigilosos.

Usuário P12133 - Usuário padrão 

Estas são as permissões padrão: db_owner, public. Além destas, aplique também as permissões abaixo:

Bloco de código
languagesql
USE master
GO
GRANT VIEW SERVER STATE to P12133;
GO
GRANT ALTER ANY CONNECTION to P12133;
GO
GRANT SELECT ON sys.dm_tran_locks to P12133;
GO

Usuário P12133MASK - Usuário sem visualização à dados sensíveis

Image Removed

Image Added

Image Added

Image Added


Além das permissões acima, aplicar os seguintes grants:


Bloco de código
languagesql
USE master

GO

GRANT VIEW SERVER STATE to P12133MASK;

GO

GRANT ALTER ANY CONNECTION to P12133MASK;

GO

GRANT SELECT ON sys.dm_tran_locks to P12133MASK;

GO


 


Bloco de código
languagesql
USE P12133

GO

grant execute to P12133MASK;

GO

REVOKE UNMASK TO P12133MASK; 

GO
Expandir
titleCriação da conexão ODBC

Observação: Da mesma forma que foi criado a conexão ODBC do usuário (P12133) do banco de dados com todos acessos, realizar a criação da conexão ODBC do usuário (P12133MASK) de banco de dados com acesso restrito aos dados.

Expandir
titleCriação da conexão DBAccess


ATENÇÃO: a configuração dos usuários precisa estar no mesmo DBAccess. NÃO colocar os dois usuários em DBAccess separados, exceto se estiver usando o DBAccess em modelo distribuído. Isso pode gerar DeadLocks no banco de dados.

Expandir
titleCuidados a serem tomados


Não utilizar colunas sequenciais com máscara, as colunas sequenciais podem travar a rotina que a utilizam. É necessário testar e validar na aplicação todas colunas com máscara, para validar na camada da aplicação o resultado dessa máscara de dados.

Exemplo de erro?

Vamos usar como exemplo a coluna B1_COD da tabela: SB1990:

ALTER TABLE dbo.SB1990 

ALTER COLUMN B1_COD ADD MASKED WITH (FUNCTION = 'partial(2,"xxxx",0)'); 

Como essa tabela é sequencial, gerou o seguinte erro quando foi incluso a Máscara:

 

Para remover a Máscara de Dados, realizamos o seguinte comando:

ALTER TABLE dbo.SB1990

ALTER COLUMN B1_COD DROP MASKED; 

Expandir
titleExemplo de uso

Criamos a máscara de dados na coluna: ‘A1_NOME’ na tabela SA1990:

ALTER TABLE dbo.SA1990  

ALTER COLUMN A1_NOME ADD MASKED WITH (FUNCTION = 'partial(2,"xxxx",0)');

O usuário SEM acesso aos dados, visualiza da seguinte forma os dados:


O usuário COM acesso aos dados, visualiza da seguinte forma os dados:

Para remover a Máscara de Dados, realizamos o seguinte comando:

ALTER TABLE dbo.SA1990

ALTER COLUMN A1_NOME DROP MASKED; 

Expandir
titleRelação de campos sugeridos para mascaramento
Aviso
titleAtenção

Os campos e tabelas aqui descritos são sugestões por, possivelmente, conterem dados sensíveis que possam comprometer a privacidade dos usuários, clientes ou outros atores envolvidos. Certifique-se que os campos devem ser ocultados e que o uso desta feature não comprometerá o funcionamento de sua operação. 

Realize a validação dos campos mascarados em um ambiente de homologação antes de efetuar esta alteração na base de produção para garantir que os dados necessários serão mascarados e não haverão outras consequências.