Árvore de páginas

Versões comparadas

Chave

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

Atualmente, a proteção de dados e segurança da informação têm sido enfatizadas como itens extremamente importantes, se não cruciais, ao se lidar com dados de terceiros. 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 de terceiros à base de dados pode ser necessário por diversos motivos, sejam referentes à troubleshooting para encontrar a causa de alguma inconsistência, à criação de queries e rotinas customizadas, manutenções ou quaisquer 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
titleAtenção

O data masking é uma ferramenta nativa do banco de dados SQL Server, e pode impactar o funcionamento do produto Protheus. Leia este documento atentamente antes de realizar quaisquer alterações em seu banco de dados, e caso opte por aplicar a feature, o faça com o apoio de uma pessoa que seja DBA.

Índice

Configuração da feature

Expandir
titleConfira aqui as versões do SQL Server que possuem esta feature disponível.
Aviso
titleVersões homologadas

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

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, e não possuirá permissão de visualização total, é essencial para o uso da feature. O Protheus precisa de acesso aos dados no banco de dados para correto funcionamento, portanto, não recomendamos que o novo usuário seja utilizado com o Protheus. 

ExpandirtitleCriação de

Informações
titleResumo do procedimento

Este procedimento criará um novo usuário no banco de dados que não possui visualização aos dados que devem ser mascarados. Para o Protheus, isto significa que seria necessária a criação de um novo ambiente no DBAccess. Não é recomendada a criação de dois ambientes que apontem para a mesma base de dados, pois isto pode gerar erros decorrentes de acessos concorrentes ao mesmo registro. 

Caso opte por prosseguir com a configuração para o Protheus, certifique-se que este ambiente (mascarado) não será acessado junto ao ambiente padrão. Não é recomendada a criação de um novo ambiente no DBAccess que aponta para a mesma base de dados, dada a possibilidade de comprometimento do ambiente. A totalidade do impacto no funcionamento da aplicação não foi medida, já que a todo instante o produto Protheus passa por atualizações.  

Aviso
titleCompatibilidade com o Protheus e segurança

Por questões de compatibilidade, certos tipos de dados do Protheus são armazenados como outros tipos, e são convertidos ao serem armazenados no banco de dados/carregados para os programas. Exemplos comuns são os tipos de dados DATE, que são armazenados como CARACTERE no banco de dados. Ao acessar o Protheus com um usuário que não visualiza dados mascarados, os campos do tipo DATE não serão convertidos corretamente por conta da máscara, e consequentemente ocorrerão erros ao abrir alguma rotina que traz esta informação. 

O mascaramento não impede que usuários mal-intencionados tentem obter informações diretamente do banco de dados por meio de consultas com WHERE ou com técnicas de bruteforce. Seja do fornecedor de banco de dados ou da própria TOTVS, não utilize um único método para proteger as informações retidas em seus sistemas.  


Criação do usuário no banco de dados

Neste exemplo, serão criados dois usuários: TPPRD, que possui permissão total de acesso aos dados e deve ser criado conforme grants mínimos para o funcionamento do DBAccess; e

P12133MASK

TPPRDMASK, que visualizará apenas a máscara em dados sigilosos.

Usuário TPPRD - Usuário padrão padrão

Permissões selecionadas visualizadas pelo management studio:

Image AddedImage Added 

As permissões padrão, que devem ser aplicadas, são: db_owner

,

e public. Além destas, aplique também as permissões VIEW SERVER STATE, ALTER ANY CONNECTION e SELECT ON sys.dm_tran_locks:

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

Usuário TPPRDMASK - Usuário sem visualização à dados

sensíveis

protegidos

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

Image AddedImage AddedImage Added

Bloco de código
languagesql
USE master
GO
GRANT VIEW SERVER STATE to 
P12133MASK
TPPRDMASK;
GO
GRANT ALTER ANY CONNECTION to 
P12133MASK
TPPRDMASK;
GO
GRANT SELECT ON sys.dm_tran_locks to 
P12133MASK
TPPRDMASK;
GO
Bloco de código
languagesql
USE TPPRD
GO
grant execute to 
P12133MASK
TPPRDMASK;
GO
REVOKE UNMASK TO 
P12133MASK
TPPRDMASK;
 
 
GO
da
Expandir
titleClique aqui para visualizar o método de criação da conexão para uso com o Protheus

Criação

de conexão ODBC

Observação: Da mesma forma que foi criado a conexão ODBC do usuário (TPPRD) 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.

Informações
titleObservação

A criação da conexão ODBC do usuário TPPRDMASK deve ser feita da mesma maneira que a criação da conexão ODBC do usuário TPPRD, e as únicas alterações serão no nome da fonte de dados e no usuário para conexão. 

Abra o ODBC Data Source Administrator (administrador de fonte de dados ODBC), clique em Add... (Adicionar...) e selecione o driver ODBC para SQL Server. Em seguida, insira o nome da fonte de dados, uma descrição caso desejado, e o IP do servidor onde a base de dados está localizada. Em seguida, clique em Next.

Image Added

Insira o usuário de conexão à base de dados. Clique em Next.

Image Added

Selecione a opção para alterar a database padrão para a base do Protheus. Clique em Next.

Image Added

Não é necessário qualquer alteração na tela seguinte. Clique em Finish, e faça o teste do data source para validar se a conexão está ok.

Image Added

Nota
titleAtenção

Realize também a criação do ODBC para o usuário sem permissão de visualização.

Criação da conexão DBAccess

Configure a conexão DBAccess para ambos os usuários.

A

Expandir
titleCriação da conexão DBAccess

ATENÇÃO: a configuração dos usuários precisa estar no mesmo DBAccess. Caso deseje utilizar o usuário com máscara de dados, NÃO coloque os dois usuários em DBAccess separados , (exceto se estiver usando o DBAccess em modelo distribuído, ) pois isso pode gerar DeadLocks no banco de dados.

Exemplo de configuração para o usuário com permissão de visualização:

Image Added

Exemplo de configuração para o usuário sem permissão de visualização:

Image Added


Relação de campos sugeridos para mascaramento
Expandir
titleCuidados a serem tomados e exemplo de uso
title

Atenção à possíveis erros

Aviso
titleErros e validação da feature

Caso utilize a feature com o Protheus, não

Não

aplique a máscara de dados à colunas sequenciais

.Não utilize colunas sequenciais com máscara. As colunas sequenciais podem

, pois isto pode 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.

utiliza. 

Teste e valide a aplicação da máscara de dados pelo Protheus caso queira prosseguir com o uso da feature. Sempre valide uma nova feature em um ambiente de homologação antes de implementá-la no ambiente de produção.

Exemplo de erro ao configurar uma coluna sequencial com mascaramento: TC_Bof - NO CONNECTION

Image Added

Neste caso, foi mascarada

Exemplo de erro

Neste caso, foi utilizada a coluna B1_COD da tabela SB1990:

Bloco de código
languagesql
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 configurada . Para remover a máscara de dados.Para remover a Máscara de Dados, realizamos , utilize o seguinte comando:

Bloco de código
languagesql
titleRemoção da máscara de dados da coluna B1_COD
ALTER TABLE dbo.SB1990
ALTER COLUMN B1_COD DROP MASKED; 
Expandir
title

Exemplo de uso

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

Bloco de código
languagesql
titleCriação da máscara de dados
ALTER TABLE dbo.SA1990  

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

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

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

Image RemovedImage Added

Para remover a Máscara máscara de Dadosdados, realizamos execute o seguinte comando:

Bloco de código
languagesql
titleRemoção da máscara de dados
ALTER TABLE dbo.SA1990

ALTER COLUMN A1_NOME DROP MASKED; 
Expandir
Aviso
titleAtenção

Os campos e tabelas aqui descritos são sugestões por, possivelmente, conterem dados

sensíveis

que devam ser protegidos, 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

de utilizar o usuário sem permissão de visualização na base de produção, para garantir que os dados necessários serão mascarados e não haverão outras consequências.