Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics (somente pools de SQL dedicados)
Banco de Dados SQL no Fabric
O Banco de Dados SQL do Azure, o Banco de Dados SQL no Microsoft Fabric, a Instância Gerenciada de SQL do Azure e o Azure Synapse Analytics dão suporte à Máscara Dinâmica de Dados (DDM). O mascaramento dinâmico de dados limita a exposição de dados confidenciais por meio do mascaramento para usuários sem privilégios.
O mascaramento dinâmico de dados ajuda a impedir o acesso não autorizado a dados confidenciais, permitindo que os clientes identifiquem a quantidade de dados confidenciais a serem revelados com impacto mínimo na camada do 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 não 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
Para o Banco de Dados SQL do Azure, você pode configurar uma política de máscara dinâmica de dados no portal do Azure selecionando o painel máscara Dinâmica de Dados na guia Segurança do painel de configuração do seu Banco de Dados SQL.
Esse recurso não pode ser configurado usando o portal do Azure para a Instância Gerenciada de SQL ou o Banco de Dados SQL no Fabric. Em vez disso, use Transact-SQL (T-SQL), como no exemplo de permissão granular neste artigo. Para obter mais informações, consulte Mascaramento de dados dinâmicos.
Política de mascaramento de dados dinâmico
Usuários do SQL excluídos do mascaramento: Um conjunto de usuários do SQL, que pode incluir identidades do Microsoft Entra ID, que obtêm dados desmascarados nos resultados da consulta SQL. Usuários com direitos administrativos, como administrador de servidor, administrador do Microsoft Entra e função db_owner, podem exibir os dados originais sem máscara. (Observação: isso também se aplica à função de sysadmin no SQL Server)
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
UseXXXX(ou menos) se o tamanho do campo for menor que 4 caracteres para tipos de dados de cadeia de caracteres (nchar, ntext, nvarchar).
Use um valor zero para tipos de dados numéricos (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real).
Use1900-01-01para tipos de dados de data/hora (date, 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 (carimbo de data/hora, tabela, HierarchyID, uniqueidentifier, binário, imagem, varbinary e tipos espaciais).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-1234Email 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.comNú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.
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. prefix[padding]suffix
Datetime Habilita o mascaramento granular para colunas de data/hora, ou seja, datetime, datetime2, data, hora, datetimeoffset e smalldatetime. Você pode mascarar componentes específicos, como ano ( datetime("Y")), mês (datetime("M")), dia (datetime("D")), hora (datetime("h")), minuto (datetime("m")) ou segundo (datetime("s")). Você aplica essa função usando T-SQL.
Por exemplo:
- Ano da máscara:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("Y")').
- Mês da Máscara:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("M")').
- Minuto da máscara:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("m")').
Campos recomendados para mascarar
O mecanismo de recomendações DDM sinaliza determinados campos do banco de dados como potencialmente confidenciais, que podem ser bons candidatos para mascaramento. No painel Máscara Dinâmica de Dados no portal, você verá as colunas recomendadas para seu banco de dados. Selecione Adicionar Máscara para uma ou mais colunas, selecione a função de mascaramento Salvar para aplicar a máscara a esses campos.
Gerenciar o mascaramento de dados dinâmicos usando T-SQL
- Para criar uma máscara de dados dinâmicos, consulteCriando uma máscara de dados dinâmicos.
- Para adicionar ou editar uma máscara em uma coluna existente, consulte Adicionando ou editando uma máscara em uma coluna existente.
- Para conceder permissões para exibir dados sem máscara, consulte Concedendo permissões para exibir dados sem máscara.
- Para remover uma máscara de dados dinâmicos, consulteDescartando uma máscara de dados dinâmicos.
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
- Get-AzSqlDatabaseDataMaskingRule
- New-AzSqlDatabaseDataMaskingRule
- Remove-AzSqlDatabaseDataMaskingRule
- Set-AzSqlDatabaseDataMaskingRule
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
- Criar ou Atualizar: Cria ou atualiza uma regra de mascaramento de dados de banco de dados.
- Listar por banco de dados: Obtém uma lista de regras de mascaramento de dados do banco de dados.
Permissões
Você pode configurar o mascaramento de dados dinâmicos com as seguintes funções internas:
Estas são as ações necessárias para usar o mascaramento de dados dinâmicos:
Leitura/Gravação:
Microsoft.Sql/servers/databases/dataMaskingPolicies/*
Ler:
Microsoft.Sql/servers/databases/dataMaskingPolicies/read
Gravação:
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 UNMASK permissões no nível do banco de dados, no nível do esquema, no nível da tabela ou no nível da coluna para qualquer usuário ou função de banco de dados. Combinadas com a autenticação do Microsoft Entra, as permissões UNMASK podem ser gerenciadas para usuários, grupos e aplicativos mantidos em seu ambiente do Azure. A UNMASK permissão fornece uma maneira granular de controlar e limitar o acesso não autorizado aos dados armazenados no banco de dados e melhorar o gerenciamento de segurança de dados.
Criar esquema para conter tabelas de usuário:
CREATE SCHEMA Data; GOCriar tabela com colunas mascaradas:
CREATE TABLE Data.Membership ( MemberID INT IDENTITY (1, 1) NOT NULL, 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 );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');Criar esquema para conter tabelas de serviço:
CREATE SCHEMA Service; GOCriar tabela de serviço com colunas mascaradas:
CREATE TABLE Service.Feedback ( MemberID INT IDENTITY (1, 1) NOT NULL, Feedback VARCHAR (100) MASKED WITH (FUNCTION = 'default()') NULL, Rating INT MASKED WITH (FUNCTION = 'default()'), Received_On DATETIME );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');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; GOConceder 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;Conceda permissões diferentes
UNMASKaos usuários:Conceda permissão de nível
UNMASKde coluna paraServiceAttendant:GRANT UNMASK ON Data.Membership (FirstName) TO ServiceAttendant;Conceda permissão de nível
UNMASKde tabela paraServiceLead:GRANT UNMASK ON Data.Membership TO ServiceLead;Conceda permissão de nível
UNMASKde esquema paraServiceManager:GRANT UNMASK ON SCHEMA::Data TO ServiceManager; GRANT UNMASK ON SCHEMA::Service TO ServiceManager;Conceder permissão no nível de banco de dados
UNMASKaServiceHead;GRANT UNMASK TO ServiceHead;
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;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;Consultar os dados no contexto do usuário
ServiceManager:EXECUTE AS USER = 'ServiceManager'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Consultar os dados no contexto do usuário
ServiceHeadEXECUTE AS USER = 'ServiceHead'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Para revogar
UNMASKpermissões, 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;