Máscara de Dados Dinâmicos

Aplica-se a: Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics

O Banco de Dados SQL do Azure, a Instância Gerenciada de SQL do Azure e o Azure Synapse Analytics dão suporte à máscara dinâmica de dados. O mascaramento de dados dinâmicos limita a exposição de dados confidenciais mascarando-os para usuários sem privilégios.

A Máscara de dados dinâmica ajuda a impedir o acesso não autorizado a dados confidenciais, permitindo que os clientes especifiquem qual a quantidade de dados confidenciais revelar, com impacto mínimo sobre a camada de aplicativo. Ele é um recurso de segurança baseado em políticas que oculta os dados confidenciais no conjunto de resultados de uma consulta em relação aos campos do banco de dados designados, sem que os dados no banco de dados sejam alterados.

Por exemplo, um representante de serviço em um call center pode identificar um chamador confirmando vários caracteres de seu endereço de email, mas o endereço de email completo não deve ser revelado para o representante de serviço. Uma regra de mascaramento pode ser definida que mascara todo o endereço de email no conjunto de resultados de qualquer consulta. Como outro exemplo, uma máscara de dados apropriada pode ser definida para proteger os dados pessoais, de forma que um desenvolvedor possa consultar os ambientes de produção para fins de solução de problemas sem violar os regulamentos de conformidade.

Aspectos básicos do mascaramento de dados dinâmicos

É possível configurar uma política de máscara de dados dinâmicos no Portal do Azure selecionando a operação máscara de dados dinâmicos na folha de Segurança do painel de configuração do Banco de Dados SQL. Este recurso não pode ser definido usando o portal para a Instância Gerenciada de SQL. Para obter mais informações, consulte Dynamic Data Masking.

Política de mascaramento de dados dinâmico

  • Usuários SQL excluídos do mascaramento – um conjunto de usuários do SQL ou de identidades do Azure AD que obtém dados não mascarados nos resultados da consulta SQL. Usuários com privilégios de administrador sempre são excluídos do mascaramento e veem os dados originais sem qualquer máscara.
  • Regras de mascaramento – um conjunto de regras que definem os campos designados que serão mascarados e a função de mascaramento que será usada. Os campos correspondentes podem ser definidos usando um nome de esquema de banco de dados, um nome de tabela e um nome da coluna.
  • Funções de mascaramento : um conjunto de métodos que controlam a exposição de dados para cenários diferentes.
Função de mascaramento Lógica de mascaramento
Default Mascaramento completo de acordo com os tipos de dados dos campos designados

• Use XXXX ou menos Xs se o tamanho do campo tiver menos de quatro caracteres para os tipos de dados da cadeia de caracteres (nchar, ntext, nvarchar).
• Use um valor zero para tipos de dados numéricos (bigint, bit, decimal, int, money, numérico, smallint, smallmoney, tinyint, float, real).
• Use 01-01-1900 para os tipos de dados de data/hora (data, datetime2, datetime, datetimeoffset, smalldatetime, time).
• Para SQL variant, o valor padrão do tipo atual é usado.
• Para XML, o documento <masked/> é usado.
• Use um valor vazio para tipos de dados especiais (timestamp table, hierarchyid, GUID, binary, image, varbinary spatial types).
Cartão de crédito Método de mascaramento que expõe os últimos quatro dígitos dos campos designados e adiciona uma cadeia de caracteres constante como um prefixo na forma de um cartão de crédito.

XXXX-XXXX-XXXX-1234
Email Método de mascaramento que expõe a primeira letra e substitui o domínio por XXX.com usando um prefixo da cadeia de caracteres constante na forma de um endereço de email.

aXX@XXXX.com
Número aleatório Método de mascaramento que gera um número aleatório de acordo com os limites selecionados e os tipos de dados reais. Se os limites designados forem iguais, a função de mascaramento será um número constante.

Captura de tela que mostra o método de mascaramento para gerar um número aleatório.
Texto personalizado Método de mascaramento que expõe os primeiros e os últimos caracteres e adiciona uma cadeia de caracteres de preenchimento personalizado no meio. Se a cadeia de caracteres original for menor do que o prefixo e o sufixo expostos, somente a cadeia de caracteres de preenchimento será usada.
prefixo[preenchimento]sufixo

Painel de navegação

O mecanismo de recomendações DDM sinaliza determinados campos do banco de dados como potencialmente confidenciais, que podem ser bons candidatos para mascaramento. Na folha Mascaramento de Dados Dinâmicos no portal, você verá as colunas recomendadas para seu banco de dados. Basta clicar em Adicionar Máscara para uma ou mais colunas e em Salvar para aplicar uma máscara a esses campos.

Gerenciar o mascaramento de dados dinâmicos usando T-SQL

Configurar a máscara de dados dinâmica para o banco de dados usando cmdlets do PowerShell

Políticas de mascaramento de dados

Regras de mascaramento de dados

Configurar a máscara de dados dinâmica para o banco de dados usando a API REST

Você pode usar a API REST para gerenciar programaticamente a política e as regras de mascaramento de dados. A API REST publicada dá suporte às seguintes operações:

Políticas de mascaramento de dados

  • Criar ou Atualizar: cria ou atualiza uma regra de mascaramento de dados de banco de dados.
  • Obter: Obtém uma política de mascaramento de dados de banco de dados.

Regras de mascaramento de dados

Permissões

Essas são as funções internas para configurar o mascaramento de dados dinâmicos:

Estas são as ações necessárias para usar o mascaramento de dados dinâmicos:

Leitura/Gravação:

  • Microsoft.Sql/servers/databases/dataMaskingPolicies/* Read:
  • Microsoft.Sql/servers/databases/dataMaskingPolicies/read Write:
  • Microsoft.Sql/servers/databases/dataMaskingPolicies/write

para saber mais sobre as permissões ao usar a máscara de dados dinâmicos com o comando T-SQL, consulte Permissões

Exemplo de permissão granular

Impeça o acesso não autorizado a dados confidenciais e obtenha controle mascarando-os para um usuário não autorizado em diferentes níveis do banco de dados. Você pode conceder ou revogar a permissão UNMASK no nível do banco de dados, no nível do esquema, no nível da tabela ou no nível da coluna para um usuário. O uso da permissão UNMASK fornece um modo mais granular de controlar e limitar o acesso não autorizado aos dados armazenados no banco de dados, bem como aprimora o gerenciamento de segurança de dados.

  1. Criar esquema para conter tabelas de usuário

    CREATE SCHEMA Data; 
    GO 
    
  2. Criar tabela com colunas mascaradas

    CREATE TABLE Data.Membership (
      MemberID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
      FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(1, "xxxxx", 1)') NULL,
      LastName varchar(100) NOT NULL,
      Phone varchar(12) MASKED WITH (FUNCTION = 'default()') NULL,
      Email varchar(100) MASKED WITH (FUNCTION = 'email()') NOT NULL,
      DiscountCode smallint MASKED WITH (FUNCTION = 'random(1, 100)') NULL,
      BirthDay datetime MASKED WITH (FUNCTION = 'default()') NULL
    ); 
    
  3. Inserir dados de exemplo

    INSERT INTO Data.Membership (FirstName, LastName, Phone, Email, DiscountCode, BirthDay) 
    VALUES    
    ('Roberto', 'Tamburello', '555.123.4567', 'RTamburello@contoso.com', 10, '1985-01-25 03:25:05'),   
    ('Janice', 'Galvin', '555.123.4568', 'JGalvin@contoso.com.co', 5,'1990-05-14 11:30:00'),   
    ('Shakti', 'Menon', '555.123.4570', 'SMenon@contoso.net', 50,'2004-02-29 14:20:10'),   
    ('Zheng', 'Mu', '555.123.4569', 'ZMu@contoso.net', 40,'1990-03-01 06:00:00'); 
    
  4. Criar esquema para conter tabelas de serviço

    CREATE SCHEMA Service; 
    GO 
    
  5. Criar tabela de serviço com colunas mascaradas

    CREATE TABLE Service.Feedback ( 
        MemberID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, 
        Feedback varchar(100) MASKED WITH (FUNCTION = 'default()') NULL, 
        Rating int MASKED WITH (FUNCTION='default()'), 
        Received_On datetime 
        );
    
  6. Inserir dados de exemplo

    INSERT INTO Service.Feedback(Feedback,Rating,Received_On)
    VALUES  
    ('Good',4,'2022-01-25 11:25:05'),   
    ('Excellent', 5, '2021-12-22 08:10:07'),   
    ('Average', 3, '2021-09-15 09:00:00'); 
    
  7. Criar usuários diferentes no banco de dados

    CREATE USER ServiceAttendant WITHOUT LOGIN;  
    GO
    
    CREATE USER ServiceLead WITHOUT LOGIN;  
    GO
    
    CREATE USER ServiceManager WITHOUT LOGIN;  
    GO  
    
    CREATE USER ServiceHead WITHOUT LOGIN;  
    GO
    
  8. Conceder permissões de leitura aos usuários no banco de dados

    ALTER ROLE db_datareader ADD MEMBER ServiceAttendant; 
    
    ALTER ROLE db_datareader ADD MEMBER ServiceLead; 
    
    ALTER ROLE db_datareader ADD MEMBER ServiceManager; 
    
    ALTER ROLE db_datareader ADD MEMBER ServiceHead; 
    
  9. Conceder diferentes permissões UNMASK aos usuários

    --Grant column level UNMASK permission to ServiceAttendant  
    GRANT UNMASK ON Data.Membership(FirstName) TO ServiceAttendant;  
    
    -- Grant table level UNMASK permission to ServiceLead  
    GRANT UNMASK ON Data.Membership TO ServiceLead;  
    
    -- Grant schema level UNMASK permission to ServiceManager  
    GRANT UNMASK ON SCHEMA::Data TO ServiceManager;  
    GRANT UNMASK ON SCHEMA::Service TO ServiceManager;  
    
    --Grant database level UNMASK permission to ServiceHead;  
    GRANT UNMASK TO ServiceHead;
    
  10. Consultar os dados no contexto do usuário ServiceAttendant

    EXECUTE AS USER='ServiceAttendant';  
    SELECT MemberID,FirstName,LastName,Phone,Email,BirthDay FROM Data.   Membership;  
    SELECT MemberID,Feedback,Rating FROM Service.Feedback;  
    REVERT; 
    
  11. Consultar os dados no contexto do usuário ServiceLead

    EXECUTE AS USER='ServiceLead';  
    SELECT MemberID,FirstName,LastName,Phone,Email,BirthDay FROM Data.   Membership;  
    SELECT MemberID,Feedback,Rating FROM Service.Feedback;  
    REVERT; 
    
  12. Consultar os dados no contexto do usuário ServiceManager

    EXECUTE AS USER='ServiceManager';  
    SELECT MemberID,FirstName,LastName,Phone,Email FROM Data.Membership;  
    SELECT MemberID,Feedback,Rating FROM Service.Feedback;  
    REVERT; 
    
  13. Consultar os dados no contexto do usuário ServiceHead

    EXECUTE AS USER='ServiceHead';  
    SELECT MemberID,FirstName,LastName,Phone,Email,BirthDay FROM Data.Membership;  
    SELECT MemberID,Feedback,Rating FROM Service.Feedback;  
    REVERT;  
    
  14. Para revogar permissões UNMASK, use as seguintes instruções T-SQL:

    REVOKE UNMASK ON Data.Membership(FirstName) FROM ServiceAttendant; 
    
    REVOKE UNMASK ON Data.Membership FROM ServiceLead; 
    
    REVOKE UNMASK ON SCHEMA::Data FROM ServiceManager; 
    
    REVOKE UNMASK ON SCHEMA::Service FROM ServiceManager; 
    
    REVOKE UNMASK FROM ServiceHead; 
    

Confira também