Exercício: Gerenciar sua segurança

Concluído

Depois que o Banco de Dados SQL do Azure estiver protegido nos níveis de sistema de rede, autenticação e proteção de dados, a etapa final será entender como você vai gerenciar a segurança de modo contínuo. O gerenciamento de segurança inclui auditoria, monitoramento e classificação de dados.

Auditoria

A auditoria pode ajudar você a manter uma conformidade regulatória, a entender a atividade do banco de dados e a obter informações sobre discrepâncias e anomalias que poderiam indicar potenciais violações de segurança. Nesta atividade, você vai configurar a auditoria no nível do servidor. Ela também está disponível no nível do banco de dados.

Como alternativa à auditoria de SQL Server, o Banco de Dados SQL do Azure tem a Auditoria do SQL do Azure. Ela é da plataforma de auditoria do SQL Server e, assim como no SQL Server, dá suporte às Ações e Grupos de Ações de Auditoria. O recurso de auditoria rastreia eventos de banco de dados e de servidor e grava eventos em um log de auditoria no armazenamento do Azure, na análise de logs ou em Hubs de Eventos do Azure. Se você apontar para uma conta de armazenamento de Blobs do Azure, poderá armazenar e analisar os resultados nos arquivos XEvents. No Log Analytics, você consegue consultar os seus logs com o KQL (Linguagem de Consulta Kusto) e aproveitar os painéis de auditoria do Log Analytics.

Configurar a auditoria

Em um exercício anterior para implantar o Banco de Dados SQL, você configurou a auditoria no nível do servidor. Ela também está disponível no nível do banco de dados. Em um exercício futuro, você verá como obter acesso e utilizar os arquivos que são enviados para o armazenamento de Blobs do Azure, o KQL e os painéis do Log Analytics.

Conclua etapas a seguir para configurar um workspace do Log Analytics:

  1. Na barra de pesquisa do portal do Azure, insira Análise de logs e selecione Workspaces do Log Analytics nos resultados. O painel Workspaces do Log Analytics será exibido.

  2. Selecione Criar. O menu Criar workspace do Log Analytics será exibido.

  3. Na guia Básico, insira os valores a seguir para cada configuração.

    Configuração Valor
    Detalhes do projeto
    Subscription Assinatura do Concierge
    Grupo de recursos No menu suspenso, selecione o [grupo de recursos da área restrita]
    Detalhes da Instância
    Nome Insira azuresql-la
    Região Selecione uma localização mais próxima de você na lista a seguir

    A área restrita gratuita permite criar recursos em um subconjunto das regiões globais do Azure. Selecione uma região na seguinte lista ao criar recursos:

    • Oeste dos EUA 2
    • Centro-Sul dos Estados Unidos
    • Centro dos EUA
    • Leste dos EUA
    • Europa Ocidental
    • Sudeste Asiático
    • Leste do Japão
    • Brazil South
    • Australia Southeast
    • Índia Central
  4. Selecione Examinar + criar, aguarde até que as entradas sejam validadas e selecione Criar. Aguarde até que o recurso seja implantado.

  5. Selecione Ir para o recurso. O painel Visão geral do workspace do Log Analytics é exibido.

  6. No portal do Azure, acesse o banco de dados AdventureWorks.

  7. No menu, em Segurança, selecione Auditoria. Revise as opções.

    Você pode aplicar a auditoria no nível do servidor, que engloba todos os bancos de dados do servidor lógico de Banco de Dados SQL do Azure. Se você também aplicar a auditoria no nível do banco de dados (que fará nesta unidade), ambas as auditorias ocorrerão em paralelo; uma não substitui a outra.

  8. Selecione o controle deslizante para Habilitar a Auditoria de SQL do Azure.

  9. Marque a caixa de seleção Armazenamento e preencha os campos obrigatórios:

    • Para Assinatura, na lista suspensa, selecione a Assinatura do Concierge.
    • Para Conta de Armazenamento, na lista suspensa, selecione a conta que começa com sql seguido de uma cadeia de caracteres aleatória composta por letras e números.
    • Deixe o Tipo de autenticação de armazenamento como a opção padrão Chaves de acesso de armazenamento.

    A conta de armazenamento sql é usada para coletar arquivos de log do XEvent, que são salvos como uma coleção de arquivos de blob dentro de um contêiner chamado sqldbauditlogs. Em uma atividade posterior, você examinará o contêiner para saber como os arquivos de log diferem do Log Analytics.

    Dica

    Se você não vir nenhuma conta de armazenamento, crie uma conta. Talvez seja necessário atualizar sua página após alguns minutos antes de que elas apareçam.

    Se você for auditar seu ambiente de produção, considere a possibilidade de ter uma conta de armazenamento separada para os logs de auditoria.

  10. Selecione Propriedades avançadas para expandir a seção e definir os seguintes itens de configuração:

    • Para Retenção (dias), digite 7
    • Para Chave de acesso de armazenamento, selecione Primária.

    Observação

    Se você não vir as Propriedades avançadas, selecione Salvar na barra de comandos e repita as instruções de configuração desta página.

  11. Marque a caixa de seleção Log Analytics e preencha os campos obrigatórios:

    • Em Assinatura, selecione a Assinatura do Concierge na lista suspensa.
    • Para Log Analytics, selecione o Workspace do Log Analytics criado anteriormente neste exercício (asuresql-la).
  12. Selecione Salvar.

    Pode levar alguns minutos até que a configuração seja processada.

Agora você habilitou a auditoria para uma conta de armazenamento e um Workspace do Azure Log Analytics. Posteriormente, você se aprofundará nas funcionalidades de auditoria no SQL do Azure. Você verá como analisar os logs de auditoria para exibir todas as alterações feitas no módulo, bem como alguns outros casos de uso interessantes.

Razão para um Banco de Dados SQL do Azure

O recurso de razão fornece evidências de adulteração e prova criptográfica de recursos de integridade de dados em seu banco de dados. Essa prova pode ajudar a simplificar o processo de auditoria.

O razão ajuda a proteger dados de qualquer invasor ou de um usuário com privilégios elevados, incluindo DBAs (Administradores de Bancos de Dados), administradores de sistema e de nuvem. Assim como ocorre com um razão tradicional, o recurso preserva os dados históricos. Quando uma transação em uma tabela de razão modifica dados, o evento é convertido criptograficamente em hash SHA-256 usando uma estrutura de dados de árvore de Merkle que cria um hash raiz representando todas as linhas na transação. As transações processadas pelo banco de dados são convertidas em hash SHA-256 usando uma estrutura de dados de árvore Merkle. O resultado é um hash raiz que forma um bloco. O bloco é então criptografado com hash SHA-256 usando o hash raiz do bloco junto com o hash raiz do bloco anterior como entrada para a função de hash. Essa criptografia com hash forma um blockchain. Se uma linha é atualizada no banco de dados, o valor anterior dela é mantido e protegido na tabela de histórico. O razão fornece uma crônica de todas as alterações feitas no banco de dados ao longo do tempo.

A funcionalidade do razão é introduzida em tabelas de duas maneiras:

  • Tabelas de razão atualizáveis, que permitem a atualização e exclusão de linhas nas tabelas
  • Tabelas de razão somente para acréscimo, que permitindo apenas inserções nas tabelas

Tanto as tabelas do razão atualizáveis quanto as tabelas do razão somente de acréscimo fornecem evidências de adulteração e funcionalidades para análise forense digital.

Exercício usando razão para banco de dados SQL do Azure

No exercício para criar o banco de dados SQL do Azure, adicionamos um banco de dados chamado myLedgerDatabase e criamos uma tabela chamada Account.Balance. Neste exercício, vamos inserir dados, realizar atualizações nos dados e consultar a tabela de histórico, assim como as exibições de razão, para observar o acompanhamento que está ocorrendo e compreender a relação entre as tabelas.

  1. Abra o SSMS e conecte-se ao servidor lógico do Banco de Dados SQL do Azure.

  2. Clique com o botão direito do mouse no banco de dados myLedgerDatabase e, em seguida, selecione Nova consulta.

  3. Insira o nome, Nick Jones, como um novo cliente com um saldo de abertura de US$ 50.

    INSERT INTO [Account].[Balance]
    VALUES (1, 'Jones', 'Nick', 50);
    
  4. Insira os novos John Smith, Joe Smith e Mary Michaels como novos clientes com saldos de abertura de US$ 500, US$ 30 e US$ 200, respectivamente.

    INSERT INTO [Account].[Balance]
    VALUES (2, 'Smith', 'John', 500),
    (3, 'Smith', 'Joe', 30),
    (4, 'Michaels', 'Mary', 200);
    
  5. Veja a tabela do razão atualizável [Account].[Balance], e especifique as colunas GENERATED ALWAYS adicionadas à tabela. Selecione Executar para executar sua consulta.

    SELECT [CustomerID]
       ,[LastName]
       ,[FirstName]
       ,[Balance]
       ,[ledger_start_transaction_id]
       ,[ledger_end_transaction_id]
       ,[ledger_start_sequence_number]
       ,[ledger_end_sequence_number]
     FROM [Account].[Balance];  
    

    Na janela de resultados, primeiro, você verá os valores inseridos pelos comandos T-SQL, juntamente com os metadados do sistema usados para fins de linhagem de dados.

    • A coluna ledger_start_transaction_id anota a ID de transação exclusiva associada à transação que inseriu os dados. Como John, Joe, e Mary foram inseridos usando a mesma transação, eles têm a mesma ID de transação.
    • A coluna ledger_start_sequence_number anota a ordem pela qual os valores foram inseridos pela transação.
  6. Atualize o saldo de Nick de 50 para 100.

    UPDATE [Account].[Balance] SET [Balance] = 100
    WHERE [CustomerID] = 1;
    
  7. Exiba o modo de exibição do razão [Account].[Balance] com o modo de exibição do sistema de razão de transação para identificar os usuários que fizeram as alterações. Selecione Executar para executar a consulta.

     SELECT
     t.[commit_time] AS [CommitTime] 
     , t.[principal_name] AS [UserName]
     , l.[CustomerID]
     , l.[LastName]
     , l.[FirstName]
     , l.[Balance]
     , l.[ledger_operation_type_desc] AS Operation
     FROM [Account].[Balance_Ledger] l
     JOIN sys.database_ledger_transactions t
     ON t.transaction_id = l.ledger_transaction_id
     ORDER BY t.commit_time DESC;
    

    O saldo da conta de Nick foi atualizado com êxito para 100 na tabela do razão atualizável.
    A exibição do razão mostra que a atualização da tabela do razão é uma DELETE da linha original com 50. O saldo com um INSERT correspondente de uma nova linha com 100 mostra o novo saldo como Nick.

Monitoramento

Há dois aspectos para o monitoramento e o gerenciamento da segurança:

  • O nível do Azure
  • O nível do banco de dados ou do servidor

No Azure, você pode aplicar ferramentas como logs de atividade e auditoria de controle de acesso baseado em função.

No Banco de Dados SQL do Azure, você pode configurar a auditoria de SQL do Azure e aplicar exibições de gerenciamento dinâmico, métricas e alertas para monitorar eventos relacionados à segurança. Por exemplo, sys.event_log permite que você rastreie o número de conexões com falha e com êxito, assim como o número de conexões bloqueadas pelo firewall.

A Microsoft recomenda que você configure o Microsoft Defender para Nuvem, incluindo a configuração de alertas para a Proteção Avançada contra Ameaças. Discutiremos esses elementos de segurança na próxima seção e exercício. Por fim, você pode usar o Microsoft Defender para Nuvem para monitorar, gerenciar e receber recomendações sobre todos os recursos em seu patrimônio do Azure.

Descoberta e Classificação de Dados

O serviço descoberta e classificação de dados forma um novo paradigma de proteção de informações para o Banco de Dados SQL do Azure. O serviço destina-se a proteger os dados e não apenas o banco de dados. Esse paradigma inclui:

  • Descoberta e recomendações para dados potencialmente confidenciais que devem ser classificados
  • A capacidade de adicionar rótulos de maneira persistente às colunas usando atributos de metadados
  • A capacidade de auditar e consultar o acesso a dados confidenciais

O SQL do Azure oferece a política de Proteção de Informações SQL e a política de Proteção de Informações da Microsoft na classificação de dados e você pode escolher qualquer uma dessas políticas de acordo com suas necessidades.

A exibição do portal está disponível apenas para o SQL do Azure, mas o SQL Server dá suporte a uma funcionalidade semelhante por meio de um assistente no SQL Server Management Studio.

Para obter mais informações, consulte Descoberta e Classificação de Dados.

Microsoft Defender para Nuvem

O Microsoft Defender para Nuvem é um pacote unificado para recursos avançados de segurança de SQL. Ele fornece uma localização para habilitar e gerenciar estas duas funcionalidades principais:

  • Avaliação de Vulnerabilidade
  • Proteção Avançada contra Ameaças

Avaliação de Vulnerabilidade

No nível mais alto, a Avaliação de Vulnerabilidade do SQL é um serviço de verificação que fornece visibilidade sobre seu estado de segurança e apresenta etapas acionáveis para resolver eventuais preocupações. Quando você configura verificações recorrentes periódicas, está habilitando o serviço a verificar os seus bancos de dados a cada sete dias em busca de vulnerabilidades. Você pode optar por enviar esses relatórios aos administradores, aos proprietários da assinatura ou a qualquer outra pessoa que talvez precise ser notificada das alterações. Para esse serviço operar, você precisa especificar uma conta de armazenamento na qual os resultados serão armazenados.

Proteção Avançada contra Ameaças

Com a Proteção Avançada contra Ameaças, você pode detectar e responder a ameaças potenciais à medida que elas ocorrem, recebendo alertas de segurança sobre atividades anormais. A Proteção Avançada contra Ameaças aplica tecnologias avançadas de monitoramento e de machine learning para detectar se ocorreu alguma das seguintes ameaças:

  • Injeção de SQL
  • Vulnerabilidade de injeção de SQL
  • Exfiltração dos dados
  • Ação não segura
  • Tentativa de força bruta
  • Logon de cliente anômalo

Nos próximos dois exercícios, você se aprofundará nas funcionalidades e nos cenários que o Microsoft Defender para Nuvem e o SQL do Azure possibilitam e oferecem proteção.

Segurança em nível de linha

A Segurança em nível de linha permite que você use o contexto de execução ou a associação de grupo para controlar o acesso às linhas em uma tabela de banco de dados.

A RLS (Segurança no Nível da Linha) ajuda você a implementar restrições de acesso às linhas de dados. Por exemplo, você pode garantir que os funcionários acessem somente as linhas de dados que são relevantes aos seus departamentos. Outro exemplo é restringir o acesso a dados dos clientes apenas aos dados relevantes para sua empresa.

A lógica de restrição de acesso é localizado na camada de banco de dados, em vez de longe dos dados em outra camada de aplicativo. O sistema de banco de dados aplica as restrições de acesso toda vez que há tentativa de acesso a dados a partir de qualquer camada. Isso torna o sistema de segurança mais robusto e confiável, reduzindo a área de superfície do sistema de segurança.

A RLS permite dois tipos de predicado de segurança.

  • Os predicados de filtro filtram silenciosamente as linhas disponíveis para operações de leitura (SELECT, UPDATE e DELETE)
  • Os predicados de bloqueio bloqueiam explicitamente as operações de gravação (AFTER INSERT, AFTER UPDATE, BEFORE UPDATE, BEFORE DELETE) que violam o predicado

Verificação de conhecimento

1.

Quais das seguintes alternativas são maneiras que você pode usar para monitorar eventos relacionados à segurança do Banco de Dados SQL do Azure?