Exercício – Classificação de dados, máscara dinâmica de dados e auditoria do SQL

Concluído

Neste exercício, você usará os seus aprendizados do módulo para percorrer um cenário. Você aprenderá como adicionar novas classificações de dados e máscaras de dados dinâmicos e, em seguida, verá vários métodos para auditar usuários que tentam exibir colunas que foram marcadas para classificação de dados. Este exercício combina vários dos conceitos que você já aprendeu no módulo sobre como gerenciar a segurança.

Configurar o mascaramento e a classificação de dados

  1. No portal do Azure, acesse a instância do Banco de Dados SQL do Azure (não o servidor lógico).

    Portal do Azure

  2. No painel à esquerda, em Segurança, selecione Descoberta e Classificação de Dados.

  3. Selecione a guia Classificação e, em seguida, selecione Adicionar classificação.

    Screenshot of how to add a new classification.

    Em um exercício anterior, você adicionou todas as classificações de coluna recomendadas. Nesta etapa, você adiciona manualmente uma coluna potencialmente confidencial à lista de colunas confidenciais.

  4. Na tabela Cliente SalesLT, a Descoberta e Classificação de Dados identificou FirstName e LastName a serem classificados, mas não MiddleName. Use as listas suspensas para adicioná-la agora e, em seguida, selecione Adicionar classificação.

    Screenshot of how to add a name-related classification for MiddleName.

  5. Selecione Salvar.

  6. Confirme se a adição da classificação foi bem-sucedida exibindo a guia Visão geral e confirmando se agora MiddleName é exibido na lista de colunas classificadas no esquema SalesLT.

  7. No painel à esquerda, selecione Visão geral para voltar para a visão geral do seu banco de dados.

    A DDM (Máscara Dinâmica de Dados) está disponível tanto no SQL do Azure quanto no SQL Server. A DDM limita a exposição de dados mascarando dados confidenciais para usuários sem privilégios no nível do SQL Server, em vez de no nível do aplicativo, no qual você precisa codificar esses tipos de regras. O SQL do Azure recomenda itens a serem mascarados ou você pode adicionar as máscaras manualmente.

    Nas próximas etapas, serão mascaradas as colunas FirstName, MiddleName e LastName que foram examinadas na etapa anterior.

  8. No portal do Azure, acesse o Banco de Dados SQL do Azure. No painel esquerdo, em Segurança, selecione Máscara Dinâmica de Dados e, em seguida, selecione Adicionar máscara.

  9. Nas listas suspensas, selecione o esquema SalesLT, a tabela Cliente e a coluna FirstName. Você pode examinar as opções de mascaramento, mas a opção padrão pode ser usada nesse cenário. Selecione Adicionar para adicionar a regra de mascaramento.

    Screenshot of how to add First Name mask.

  10. Repita a etapa anterior para MiddleName e LastName nessa tabela.

    Agora, você deve ter três regras de mascaramento semelhantes às mostradas abaixo:

    Screenshot of how to review all masking rules.

  11. Selecione Salvar.

  12. No painel à esquerda, selecione Visão geral para voltar para a visão geral do seu banco de dados.

Recuperar dados que são confidenciais e mascarados

Em seguida, você simulará alguém consultando as colunas classificadas e explorará a Máscara Dinâmica de Dados em ação.

  1. Acesse o SSMS (SQL Server Management Studio).

  2. Para criar uma nova consulta em seu banco de dados AdventureWorks, clique com o botão direito do mouse no banco de dados e selecione Nova Consulta.

  3. Execute a consulta a seguir para retornar os dados confidenciais e, em alguns casos, as colunas marcados para mascaramento de dados. Selecione Executar para executar a consulta.

    SELECT TOP 10 FirstName, MiddleName, LastName
    FROM SalesLT.Customer;
    

    O seu resultado deve exibir os primeiros dez nomes, sem nenhuma máscara aplicada. Por quê? Porque você é o administrador deste servidor lógico do Banco de Dados SQL do Azure.

    Screenshot of SQL query results with no mask.

  4. Na consulta a seguir, você criará um novo usuário e executará a consulta anterior como esse usuário. Você também usará EXECUTE AS para representar Bob. Quando uma instrução EXECUTE AS é executada, o contexto de execução da sessão é alternado para o logon ou o usuário. Isso significa que as permissões são verificadas com relação ao logon ou usuário em vez da pessoa que está executando o comando EXECUTE AS (nesse caso, você). O REVERT é usado para interromper a representação do logon ou usuário.

    Você pode reconhecer as primeiras partes dos comandos a seguir, pois eles são uma repetição de um exercício anterior. Crie uma nova consulta com os comandos a seguir e selecione Executar para executar a consulta e observar os resultados.

    -- Create a new SQL user and give them a password
    CREATE USER Bob WITH PASSWORD = 'c0mpl3xPassword!';
    
    -- Until you run the following two lines, Bob has no access to read or write data
    ALTER ROLE db_datareader ADD MEMBER Bob;
    ALTER ROLE db_datawriter ADD MEMBER Bob;
    
    -- Execute as our new, low-privilege user, Bob
    EXECUTE AS USER = 'Bob';
    SELECT TOP 10 FirstName, MiddleName, LastName
    FROM SalesLT.Customer;
    REVERT;
    

    Agora, o resultado deve exibir os primeiros dez nomes, mas com a máscara aplicada. Pedro não recebeu acesso ao formato sem máscara desses dados.

    Screenshot of SQL query results with mask.

    E se, por algum motivo, Pedro precisar de acesso aos nomes e obter permissão para tê-los?

    Você pode atualizar os usuários excluídos do mascaramento no portal do Azure acessando o painel Máscara Dinâmica de Dados em Segurança, mas você também pode fazer isso usando o T-SQL.

  5. Clique com o botão direito do mouse no banco de dados AdventureWorks e selecione Nova Consulta e, em seguida, insira a consulta a seguir para permitir que Bob consulte os resultados dos nomes sem mascaramento. Selecione Executar para executar a consulta.

    GRANT UNMASK TO Bob;  
    EXECUTE AS USER = 'Bob';
    SELECT TOP 10 FirstName, MiddleName, LastName
    FROM SalesLT.Customer;
    REVERT;  
    

    Os resultados devem incluir os nomes completos.

    Screenshot of SQL query results with no mask.

  6. Você também pode tirar os privilégios de desmascaramento de um usuário e confirmar essa ação executando os seguintes comandos T-SQL em uma nova consulta:

    -- Remove unmasking privilege
    REVOKE UNMASK TO Bob;  
    
    -- Execute as Bob
    EXECUTE AS USER = 'Bob';
    SELECT TOP 10 FirstName, MiddleName, LastName
    FROM SalesLT.Customer;
    REVERT;  
    

    Os resultados devem incluir os nomes mascarados.

    Screenshot of SQL query results with mask.

Examinar os logs de auditoria no SSMS

Como administrador, convém examinar e auditar quem está acessando os bancos de dados e, especificamente, os dados confidenciais. Em seguida, você poderá examinar os arquivos de auditoria que estão sendo enviados ao armazenamento de Blobs do Azure. A primeira coisa que você precisa fazer é mesclar os arquivos de auditoria, caso os logs abranjam vários arquivos. Você pode fazer isso no SSMS fazendo o seguinte:

  1. Selecione Arquivo>Abrir>Mesclar Arquivos de Auditoria.

    Screenshot of how to open audit files.

  2. Selecione Adicionar.

    Screenshot of how to add a new file.

  3. Selecione Adicionar no Armazenamento de Blobs do Azure e selecione Conectar.

    Screenshot of how to add from Azure Blob storage.

  4. Entre no Azure com a conta que você está usando neste módulo.

    Screenshot of how to sign in to Azure.

  5. Selecione a assinatura, a conta de armazenamento e o contêiner de blob para o qual você configurou a saída dos logs de auditoria. A conta de armazenamento deve começar com sql. O contêiner será chamado sqldbauditlogs. Se não houver nenhum contêiner com esse nome, você criou uma conta de armazenamento diferente para auditoria; use isso em vez disso.

  6. Selecione o servidor lógico do Banco de Dados SQL do Azure e o seu banco de dados AdventureWorks. Verifique se o tempo De é anterior ao momento em que você iniciou os exercícios. Selecione OK.

  7. A janela de confirmação permite que você saiba quantos arquivos estão sendo baixados e mesclados. Selecione OK.

  8. Examine os arquivos e selecione OK uma última vez.

    Todos os logs de auditoria agora são exibidos. Procure o local que você estava testando com o mascaramento com o Pedro. A listagem deve estar próxima à parte inferior.

  9. Selecione a instrução e examine as informações no painel de detalhes. Por exemplo, em uma das consultas em que Pedro tenta exibir dados confidenciais, no campo data_sensitivity_information, você poderá ver os dados que são confidenciais.

  10. Clique duas vezes no valor data_sensitivity_information no painel Detalhes. Uma janela pop-up será aberta para que você possa ler os dados com mais facilidade.

    Aqui está um exemplo do que você pode ver em data_sensitivity_information:

    <sensitivity_attributes max_rank="20" max_rank_desc="Medium"><sensitivity_attribute label="Confidential - GDPR" label_id="bf91e08c-f4f0-478a-b016-23422b2a65ff" information_type="Name" information_type_id="57845286-7598-22f5-3422-15b24aeb125e" rank="20" rank_desc="Medium"/></sensitivity_attributes>
    

    Você pode então exportar o arquivo mesclado para um arquivo XEL, um arquivo CSV ou para uma tabela para análise adicional. Você também pode consultar os arquivos de Eventos Estendidos usando o Azure PowerShell.

Examinar os logs de auditoria no portal do Azure

A análise dos logs de auditoria dependerá da sua preferência. Nesta seção, você será exposto à consulta dos logs de segurança no portal do Azure com o Log Analytics.

  1. No portal do Azure, vá até o banco de dados AdventureWorks. No painel esquerdo, em Segurança, selecione Auditoria e, em seguida, selecione o botão Exibir logs de auditoria na barra de tarefas.

    Agora, você deverá ver uma consulta dos registros de eventos, das opções a serem executadas no Editor de Consultas (executar consultas T-SQL por meio do portal), das opções para o Log Analytics, Exibir painel e muito mais.

    Screenshot of how to view audit records.

    Fique à vontade para explorar e entender quais são algumas das opções.

  2. Selecione o Log Analytics. Talvez seja necessário selecionar Atualizar para acessar o botão Log Analytics. Se você vir uma tela Introdução, selecione OK. Isso leva você para um editor de consultas, que não é o editor T-SQL. Nessa exibição, você pode consultar logs usando o KQL (Linguagem de Consulta Kusto), que os profissionais do SQL devem usar e entender facilmente.

    A consulta padrão está consultando a categoria SQLSecurityAuditEvents. Embora você possa usar essa categoria agora para exibir incidentes relacionados à segurança, essa ferramenta também pode ser usada para consultar outros logs e categorias do Azure no Log Analytics. Para esta etapa, você pode procurar as instruções em que o Pedro tentou acessar informações confidenciais. Para obter as mesmas informações que você viu no SSMS, expanda os detalhes da linha selecionando o botão >.

    Pode levar alguns minutos para os resultados serem exibidos. Você pode atualizar a consulta selecionando Executar novamente.

    Essa atividade não vai aprofundar-se na consulta de KQL de logs, mas há muitos recursos nas referências anteriores se você quiser praticar mais no futuro.

    Na próxima etapa, você verá como a Segurança do SQL criou um painel com base no Log Analytics para monitorar e auditar os logs e outras atividades do SQL. Para retornar ao painel Registros de auditoria, feche a janela de consulta Log Analytics selecionando X no canto superior direito.

  3. Selecione Exibir dashboard.

    Screenshot of the log analytics dashboard.

    Um painel de visão geral é exibido.

  4. Selecione SQL do Azure – Acesso a dados Confidenciais para exibir mais detalhes.

    Talvez seja necessário aguardar de três a cinco minutos e selecionar Atualizar para que os itens apareçam aqui.

    Você pode usar essas informações detalhadas para descobrir:

    • Quantas consultas estão acessando dados confidenciais.
    • Quais tipos e níveis de confidencialidade de dados estão sendo acessados.
    • Quais entidades de segurança estão acessando dados confidenciais.
    • Quais IPs estão acessando dados confidenciais.

    Examine o que está disponível aqui e como você pode auditar o uso com essa ferramenta. Você pode até mesmo selecionar cada um deles e ver os logs relacionados no Log Analytics.

  5. Quando terminar, feche o painel SQL do Azure – Acesso aos Dados Confidenciais selecionando o X no canto superior direito.

  6. De volta ao painel de visão geral do painel de auditoria, selecione SQL do Azure – Insights de Segurança.

    Esse painel exibe mais informações de auditoria para ajudar você a entender a atividade de banco de dados e obter insights sobre anomalias. Passe alguns minutos revisando e analisando as opções aqui.

Além de ver esses insights sobre os serviços do SQL do Azure, estar no Azure permite que você use o Microsoft Defender para Nuvem para monitorar, gerenciar e responder a problemas que surgem em todo o seu patrimônio do Azure. Se quiser examinar o que está disponível fora da do Defender para Nuvem do SQL do Azure, pesquise e selecione Microsoft Defender para Nuvem no portal do Azure. O seu acesso pode ser limitado, dependendo do seu nível de assinatura.