Partilhar via


Mascaramento dinâmico de dados no data warehousing da malha

Aplica-se a: ponto de extremidade de análise SQL e Warehouse no Microsoft Fabric

O mascaramento dinâmico de dados limita a exposição de dados confidenciais, mascarando-os para usuários sem privilégios. Pode ser utilizado para simplificar muito o design e a codificação de segurança na sua aplicação.

O mascaramento dinâmico de dados ajuda a impedir a visualização não autorizada de dados confidenciais, permitindo que os administradores especifiquem a quantidade de dados confidenciais a serem revelados, com efeito mínimo na camada do aplicativo. O mascaramento de dados dinâmicos pode ser configurado em campos de banco de dados designados para ocultar dados confidenciais nos conjuntos de resultados de consultas. Com o mascaramento dinâmico de dados, os dados no banco de dados não são alterados, portanto, podem ser usados com aplicativos existentes, uma vez que as regras de mascaramento são aplicadas aos resultados da consulta. Muitos aplicativos podem mascarar dados confidenciais sem modificar consultas existentes.

  • Uma política central de mascaramento de dados atua diretamente em campos confidenciais no banco de dados.
  • Designe usuários ou funções privilegiadas que tenham acesso aos dados confidenciais.
  • O mascaramento dinâmico de dados apresenta funções de mascaramento completo e parcial, além de uma máscara aleatória para dados numéricos.
  • Comandos Transact-SQL simples definem e gerenciam máscaras.

O objetivo do mascaramento dinâmico de dados é limitar a exposição de dados confidenciais, impedindo que usuários que não deveriam ter acesso aos dados os visualizem. O mascaramento dinâmico de dados não visa impedir que os usuários do banco de dados se conectem diretamente ao banco de dados e executem consultas exaustivas que expõem partes dos dados confidenciais.

O mascaramento dinâmico de dados é complementar a outros recursos de segurança do Fabric, como segurança em nível de coluna e segurança em nível de linha. É altamente recomendável usar esses recursos de proteção de dados juntos para proteger os dados confidenciais no banco de dados.

Definir uma máscara de dados dinâmica

Uma regra de mascaramento pode ser definida em uma coluna de uma tabela, a fim de ofuscar os dados nessa coluna. Estão disponíveis cinco tipos de máscaras.

Function Description Exemplos
Predefinição Mascaramento completo de acordo com os tipos de dados dos campos designados.

Para tipos de dados de cadeia de caracteres, use XXXX (ou menos) se o tamanho do campo for inferior a 4 caracteres (char, nchar, varchar, nvarchar, text, ntext).

Para tipos de dados numéricos use um valor zero (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real).

Para tipos de dados de data e hora, use (date, datetime2, datetime, datetimeoffset, smalldatetime, time).1900-01-01 00:00:00.0000000

Para tipos de dados binários, use um único byte de valor ASCII 0 (binário, varbinário, imagem).
Exemplo de sintaxe de definição de coluna: Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULL

Exemplo de sintaxe de alteração: ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()')
Correio Eletrónico Método de mascaramento que expõe a primeira letra de um endereço de e-mail e o sufixo constante ".com", na forma de um endereço de e-mail. aXXX@XXXX.com. Exemplo de sintaxe de definição: Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL

Exemplo de sintaxe de alteração: ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
Aleatório Uma função de mascaramento aleatório para uso em qualquer tipo numérico para mascarar o valor original com um valor aleatório dentro de um intervalo especificado. Exemplo de sintaxe de definição: Account_Number bigint MASKED WITH (FUNCTION = 'random([start range], [end range])')

Exemplo de sintaxe de alteração: ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
String personalizada Método de mascaramento que expõe a primeira e a última letras e adiciona uma cadeia de caracteres de preenchimento personalizada no meio. prefix,[padding],suffix

Se o valor original for muito curto para completar a máscara inteira, parte do prefixo ou sufixo não será exposta.
Exemplo de sintaxe de definição: FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(prefix,[padding],suffix)') NULL

Exemplo de sintaxe de alteração: ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)')

Isso transforma um número de telefone como 555.123.1234 em 5XXXXXXX.

Exemplo adicional:

ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(5,"XXXXXXX",0)')

Isso transforma um número de telefone como 555.123.1234 em 555.1XXXXXXX.

Para obter mais exemplos, consulte Como implementar o mascaramento dinâmico de dados no Synapse Data Warehouse.

Permissões

Os usuários sem os direitos de Administrador, Membro ou Colaborador no espaço de trabalho e sem permissões elevadas no Depósito verão dados mascarados.

Você não precisa de nenhuma permissão especial para criar uma tabela com uma máscara de dados dinâmica, apenas as permissões padrão CREATE TABLE e ALTER no esquema.

Adicionar, substituir ou remover a máscara de uma coluna requer a permissão e ALTER a ALTER ANY MASK permissão na tabela. É apropriado conceder ALTER ANY MASK a um agente de segurança.

Os usuários com SELECT permissão em uma tabela podem exibir os dados da tabela. As colunas definidas como mascaradas exibirão dados mascarados. Conceda a permissão a UNMASK um usuário para permitir que ele recupere dados não mascarados das colunas para as quais o mascaramento está definido.

A CONTROL permissão no banco de dados inclui a ALTER ANY MASK permissão e UNMASK que permite ao usuário exibir dados não mascarados. Usuários ou funções administrativas, como Administrador, Membro ou Colaborador, têm permissão CONTROL no banco de dados por design e podem exibir dados não mascarados por padrão. As permissões elevadas no Armazém incluem CONTROL permissão.

Consideração de segurança: ignorar o mascaramento usando técnicas de inferência ou força bruta

O mascaramento dinâmico de dados foi projetado para simplificar o desenvolvimento de aplicativos, limitando a exposição de dados em um conjunto de consultas predefinidas usadas pelo aplicativo. Embora o mascaramento dinâmico de dados também possa ser útil para evitar a exposição acidental de dados confidenciais ao acessar dados diretamente, é importante observar que usuários sem privilégios com permissões de consulta podem aplicar técnicas para obter acesso aos dados reais.

Como exemplo, considere um usuário que tenha privilégios suficientes para executar consultas no Armazém e tente "adivinhar" os dados subjacentes e, finalmente, inferir os valores reais. Suponha que temos uma máscara definida na coluna, e esse usuário se conecta diretamente ao banco de dados e começa a adivinhar valores, eventualmente inferindo o [Salary]Employees valor na [Employee].[Salary] tabela:

SELECT ID, Name, Salary FROM Employees
WHERE Salary > 99999 and Salary < 100001;

Resultados em:

ID Nome Salário
62543 Joana Doe 0
91245 John Smith 0

Isso demonstra que o mascaramento de dados dinâmicos não deve ser usado sozinho para proteger totalmente dados confidenciais de usuários com acesso de consulta ao ponto de extremidade de análise SQL ou Warehouse. É apropriado para evitar a exposição de dados confidenciais, mas não protege contra a intenção maliciosa de inferir os dados subjacentes.

É importante gerenciar adequadamente a segurança no nível do objeto com permissões granulares do SQL e sempre seguir o princípio de permissões mínimas necessárias.

Próximo passo