Mascaramento dinâmico de dados no Fabric Data Warehouse

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

O mascaramento dinâmico de dados é uma funcionalidade de proteção de dados que limita a exposição de dados sensíveis ao mascará-los a utilizadores não privilegiados. Simplifica o desenho e a codificação da segurança na sua aplicação.

O mascaramento dinâmico de dados ajuda a prevenir a visualização não autorizada de dados sensíveis. Os administradores especificam quantos dados sensíveis devem revelar, com impacto mínimo na camada de aplicação. Pode configurar mascaramento dinâmico de dados em campos designados para a base de dados para ocultar dados sensíveis nos conjuntos de resultados de consultas. Os dados na base de dados não são alterados, pelo que as aplicações existentes podem continuar a funcionar sem modificações porque as regras de mascaramento são aplicadas aos resultados das consultas. Muitos aplicativos podem mascarar dados confidenciais sem modificar consultas existentes.

O mascaramento dinâmico de dados oferece as seguintes capacidades:

  • Uma política central de mascaramento de dados atua diretamente em campos confidenciais no banco de dados.
  • Utilizadores ou papéis privilegiados podem ser designados para aceder a dados sensíveis.
  • Tens opções de mascaramento à escolha: mascaramento completo e funções de mascaramento parcial, e uma máscara aleatória para dados numéricos.
  • Comandos Transact-SQL simples definem e gerenciam máscaras.

O mascaramento dinâmico de dados não impede que os utilizadores da base de dados se conectem diretamente à base de dados e executem consultas exaustivas que expõem partes dos dados sensíveis. Use o mascaramento dinâmico de dados juntamente com outras funcionalidades de segurança Fabric, como segurança ao nível de coluna e segurança ao nível de linha, para proteger dados sensíveis na base de dados.

Funções dinâmicas de mascaramento de dados

Defina uma regra de mascaramento numa coluna de uma tabela para ofuscar os dados dessa coluna. Estão disponíveis quatro tipos de máscaras.

Função Descrição Exemplos
Predefinido 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 1900-01-01 00:00:00.0000000 (date, datetime2, datetime, datetimeoffset, smalldatetime, time).

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 da sintaxe ALTER: ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()')
Email 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 alterada: ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
Cadeia de caracteres personalizada Método de mascaragem que expõe a primeira e a última letra e adiciona uma sequência 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 Fabric Data Warehouse.

Permissões para mascaramento dinâmico de dados

No Fabric Data Warehouse, os utilizadores veem dados mascarados quando consultam colunas mascaradas se não forem membros das funções de Administrador, Membro ou Contribuidor no espaço de trabalho, ou não tenham permissões elevadas no Warehouse.

A tabela seguinte lista as permissões necessárias para cada operação dinâmica de mascaramento de dados:

Operation Permissão necessária
Crie uma tabela com colunas mascaradas CREATE TABLE e ALTER no esquema
Adicionar, substituir ou remover uma máscara numa coluna ALTER ANY MASK e ALTER em cima da mesa
Visualizar dados mascarados SELECT em cima da mesa
Ver dados desmascarados UNMASK na coluna ou CONTROL na base de dados

Conceda ALTER ANY MASK a um responsável de segurança. Conceda UNMASK a um utilizador que permita a esse utilizador recuperar dados desmascarados de colunas mascaradas.

A permissão CONTROL na base de dados inclui tanto ALTER ANY MASK como UNMASK, pelo que os utilizadores que tenham CONTROL podem ver dados sem máscara. Os utilizadores administrativos ou papéis como Administrador, Membro ou Contribuinte têm, de forma intencional, permissão CONTROL na base de dados e podem, por defeito, ver dados não mascarados. As permissões elevadas no Warehouse incluem a permissão CONTROL.

Consideração de segurança: contornar o mascaramento através de técnicas de inferência ou força bruta

O mascaramento dinâmico de dados simplifica o desenvolvimento de aplicações ao limitar a exposição de dados num conjunto de consultas pré-definidas que a aplicação utiliza. Embora o mascaramento dinâmico de dados também possa ajudar a prevenir a exposição acidental de dados sensíveis ao aceder diretamente aos dados, utilizadores não privilegiados com permissões de consulta podem usar técnicas para inferir os dados reais.

Por exemplo, um utilizador que tem permissão para executar consultas no armazém pode adivinhar valores para inferir dados mascarados. Assuma que defines uma máscara na [Employee].[Salary] coluna. O utilizador liga-se diretamente à base de dados e começa a adivinhar valores, acabando por inferir o [Salary] valor na Employees tabela. Eles executam uma consulta por intervalo contra a Employees tabela:

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

A consulta devolve:

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

Embora a Salary coluna esteja mascarada (os valores aparecem como 0), a WHERE cláusula confirma que ambos os funcionários têm um salário entre $99.999 e $100.001. Não use apenas mascaramento dinâmico de dados para proteger totalmente dados sensíveis de utilizadores com acesso a consultas ao Warehouse ou ao endpoint de análise SQL. O mascaramento dinâmico de dados é adequado para prevenir a exposição acidental de dados sensíveis, mas não protege contra intenções maliciosas de inferir os dados subjacentes.

Gerir corretamente a segurança ao nível do objeto com permissões SQL granulares e seguir sempre o princípio do privilégio mínimo.

Próximo passo