Implementar controles de conformidade para dados confidenciais
A implementação de controles de conformidade após a migração do banco de dados é importante para garantir que seus dados permaneçam seguros e em conformidade com as regulamentações relevantes. A migração para um novo ambiente, como o Azure SQL, introduz novos recursos e capacidades de segurança.
Explore a auditoria de servidores e bancos de dados
A auditoria SQL do Azure rastreia eventos de banco de dados, registrando-os em um log de auditoria armazenado em sua conta de Armazenamento do Azure, espaço de trabalho do Log Analytics ou Hubs de Eventos. Além disso, facilita a manutenção da conformidade regulamentar, a análise de padrões de atividade e a deteção de desvios que possam indicar violações de segurança.
Você pode definir políticas no nível do servidor e no nível do banco de dados. As políticas de servidor abrangem automaticamente bancos de dados novos e existentes no Azure.
- Habilitar a auditoria do servidor aciona a auditoria para o banco de dados, independentemente de suas configurações de auditoria individuais.
- Você pode habilitar a auditoria no nível do banco de dados, permitindo que as políticas de servidor e banco de dados coexistam simultaneamente.
- A auditoria em réplicas só de leitura é ativada automaticamente.
É melhor não habilitar a auditoria de servidor e a auditoria de banco de dados juntas, exceto nos cenários a seguir.
Você precisa de uma conta de armazenamento distinta, período de retenção ou espaço de trabalho do Log Analytics para um banco de dados específico.
Uma auditoria é necessária para um banco de dados específico com tipos de eventos exclusivos ou categorias distintas dos outros no servidor.
Em todos os outros casos, recomendamos que você habilite apenas a auditoria no nível do servidor e mantenha a auditoria no nível do banco de dados desabilitada para todos os bancos de dados.
A política de auditoria padrão para o Banco de dados SQL inclui o seguinte conjunto de grupos de ações:
Grupo de ações | Definição |
---|---|
BATCH_COMPLETED_GROUP | Audita todas as consultas e procedimentos armazenados executados no banco de dados. |
SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP | Isso indica que uma entidade de segurança consegue fazer logon no banco de dados. |
FAILED_DATABASE_AUTHENTICATION_GROUP | Isso indica que uma entidade de segurança falhou ao fazer logon no banco de dados. |
Para habilitar a auditoria para todos os bancos de dados em um servidor SQL do Azure, selecione Auditoria na seção Segurança da folha principal do servidor.
A página Auditoria permite definir o destino do log de auditoria e também escolher se deseja acompanhar as operações do engenheiro de suporte da Microsoft no mesmo destino de log da Auditoria SQL do Azure ou selecionar um diferente.
Você pode revisar os logs de auditoria das operações de Suporte da Microsoft em seu espaço de trabalho do Log Analytics executando a seguinte consulta:
AzureDiagnostics
| where Category == "DevOpsOperationsAudit"
Importante
O Banco de Dados SQL do Azure e os serviços de auditoria da Instância Gerenciada SQL do Azure foram ajustados para obter disponibilidade e desempenho ideais. No entanto, vale a pena notar que, em condições de atividade excepcionalmente alta ou congestionamento significativo da rede, certos eventos auditados podem não ser registrados.
Auditar rótulos sensíveis
Quando combinado com a classificação de dados, você também pode monitorar o acesso a dados confidenciais. A Auditoria SQL do Azure foi aprimorada para incluir um novo campo no log de auditoria chamado data_sensitivity_information
.
Ao registrar os rótulos de sensibilidade dos dados retornados por uma consulta, esse campo fornece uma maneira mais fácil de rastrear o acesso a colunas classificadas.
A auditoria consiste em controlar e registrar eventos que ocorrem no mecanismo de banco de dados. A auditoria SQL do Azure simplifica as etapas de configuração necessárias para habilitá-la, facilitando o controle das atividades do banco de dados para o Banco de Dados SQL e a Instância Gerenciada do SQL.
Máscara de dados dinâmica
O mascaramento dinâmico de dados funciona ofuscando os dados para limitar sua exposição. Ele permite que os usuários que não precisam de acesso a informações confidenciais vejam a coluna, mas não os dados reais. O mascaramento dinâmico de dados funciona na camada de apresentação e os dados desmascarados permanecem visíveis para usuários altamente privilegiados.
O mascaramento dinâmico de dados oferece a vantagem de exigir modificações mínimas em seu aplicativo ou banco de dados. Você pode configurá-lo convenientemente através do portal do Azure ou usando T-SQL.
As colunas PhoneNumber e EmailAddress estão ocultas do usuário DDMDemo, que só tem SELECT
permissão na tabela. O usuário tem permissão para ver os últimos quatro dígitos do número de telefone, pois ele é mascarado usando uma função parcial que substitui todos, exceto os últimos quatro dígitos na coluna. Este mascaramento é considerado uma função personalizada. Além do T-SQL, se você estiver usando o Banco de Dados SQL do Azure, poderá criar regras de mascaramento dinâmico no portal do Azure.
Para adicionar uma regra de mascaramento, navegue até seu banco de dados no portal do Azure e selecione Mascaramento de Dados Dinâmicos na seção Segurança da folha principal do seu banco de dados.
O mascaramento dinâmico de dados suporta os seguintes padrões de mascaramento que podem ser usados:
Função de mascaramento | Definição | Exemplo de T-SQL |
---|---|---|
Predefinição | Mascara os dados na coluna sem expor qualquer parte dos valores ao usuário. O usuário veria XXXX para valores de cadeia de caracteres, 0 para números e 01.01.1900 para valores de data. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'default()') |
Cartão de crédito | Mascara todos, exceto os quatro caracteres finais, permitindo que os usuários visualizem os quatro dígitos finais. Esse mascaramento pode ser útil para agentes de atendimento ao cliente que precisam visualizar os últimos quatro dígitos de um número de cartão de crédito, mas que não precisam ver o número inteiro. Os dados são mostrados no formato habitual de um número de cartão de crédito XXXX-XXXX-XXXX-1234. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)') |
Apenas a primeira letra e o sufixo de domínio à direita não são mascarados; por exemplo, "aXXX@XXXXXXX.com" | ALTER TABLE [Customer] ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()') |
|
Número | Este formato de mascaramento deve ser usado em colunas numéricas. Ele mostra um número aleatório como o valor mascarado em vez do valor real. A cada consulta, um número diferente é exibido. | ALTER TABLE [Customer] ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)') |
Cadeia de caracteres personalizada | Essa opção permite que o texto seja mascarado com qualquer valor e exiba um número personalizado de caracteres em cada extremidade do valor mascarado. Se o comprimento do valor que está sendo mascarado for igual ou menor que o número de caracteres, que a máscara especifica que devem ser exibidos, somente os caracteres mascarados serão exibidos. | ALTER TABLE [Customer] ALTER COLUMN [PhoneNumber] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)') |
Para permitir que os usuários recuperem dados não mascarados das colunas para as quais o mascaramento está definido, você precisa conceder explicitamente a UNMASK
permissão.
Nota
É possível identificar dados mascarados usando inferência baseada nos resultados. Se você estiver usando mascaramento de dados, também deverá limitar a capacidade do usuário de executar consultas ad hoc.
Por esse motivo, recomendamos combinar o mascaramento dinâmico de dados com outros recursos de segurança, como auditoria, criptografia e segurança em nível de linha para melhorar a proteção de dados confidenciais.
Caso de utilização
O mascaramento de dados é um recurso simples e leve, e é ideal para muitos cenários, incluindo:
Mascare dados de usuários do aplicativo que não têm acesso direto ao banco de dados.
Restringir informações privadas para um grupo de usuários.
Forneça dados mascarados a fornecedores externos, onde você precisa proteger informações confidenciais e, ao mesmo tempo, preservar as relações entre os itens nos dados.
Exporte uma cópia do banco de dados de produção para um ambiente inferior para fins de desenvolvimento, usando um usuário sem
UNMASK
permissão. Os dados exportados estão em um formato mascarado.
Importar e exportar dados
Copiar dados de uma coluna mascarada para outra tabela usando SELECT INTO
ou INSERT INTO
resulta em dados mascarados na tabela de destino.
Quando um usuário sem UNMASK
privilégio executa o SQL Server Import and Export, o arquivo de dados exportado contém dados mascarados e o banco de dados importado conterá dados mascarados inativamente.