Exercício - Gerencie sua segurança

Concluído

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

Auditoria

A auditoria pode ajudá-lo a manter a conformidade regulamentar, entender a atividade do banco de dados e obter informações sobre discrepâncias e anomalias que podem indicar possíveis violações de segurança. Nesta atividade, você configurará a auditoria no nível do servidor, embora ela também esteja disponível no nível do banco de dados.

Como alternativa à auditoria do SQL Server, a Base de Dados SQL do Azure oferece auditoria SQL do Azure. Ele é alimentado pela auditoria do SQL Server e, como o SQL Server, oferece suporte a Grupos e Ações de Ação de Auditoria. O recurso de auditoria rastreia eventos de banco de dados e servidor e grava eventos em um log de auditoria no armazenamento do Azure, no Log Analytics ou em Hubs de Eventos do Azure. Caso indique uma conta de Azure Blob Storage, poderá armazenar e analisar os seus resultados em ficheiros XEvents. Com o Log Analytics, você desbloqueia a capacidade de consultar seus logs com o Kusto Query Language (KQL) e aproveita os painéis de auditoria do Log Analytics.

Configurar auditoria

Em um exercício anterior para implantar o Banco de dados SQL, você configura a auditoria no nível do servidor, mas ela também está disponível no nível do banco de dados. Em um exercício futuro, você verá como acessar e utilizar os arquivos enviados para o armazenamento de Blob do Azure, KQL e os painéis do Log Analytics.

Conclua as seguintes etapas para configurar um espaço de trabalho do Log Analytics:

  1. Na barra de pesquisa do Azure portal, insira Análise de Loge, em seguida, selecione Espaços de Trabalho do Log Analytics nos resultados. O painel de espaços de trabalho do Log Analytics é exibido.

  2. Selecione Criar. O menu Criar Log Analytics workspace é exibido.

  3. Na guia Noções básicas, insira os seguintes valores para cada configuração.

    Configuração Valor
    Detalhes do Projeto
    Subscrição Subscrição do Concierge
    Grupo de recursos Na lista suspensa, selecione [Grupo de recursos sandbox]
    Detalhes da instância
    Nome Digite azuresql-la
    Região Selecione um local mais próximo de você na lista a seguir

    A sandbox gratuita permite criar recursos em um subconjunto das regiões globais do Azure. Selecione uma região na lista a seguir ao criar recursos:

    • Oeste dos EUA 2
    • Centro-Sul dos EUA
    • EUA centrais
    • Leste dos EUA
    • Europa Ocidental
    • Sudeste Asiático
    • Leste do Japão
    • Brasil Sul
    • Austrália Sudeste
    • Índia Central
  4. Selecione Rever + criar, aguarde até que as entradas tenham sido validadas e, em seguida, selecione Criar. Aguarde até que o recurso seja implantado.

  5. Selecione Ir para o recurso. O painel Visão Geral do seu espaço de trabalho do Log Analytics é apresentado.

  6. No portal do Azure, vá para o banco de dados AdventureWorks.

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

    Você pode aplicar a auditoria no nível do servidor, que se aplica a todos os bancos de dados no servidor lógico do Banco de Dados SQL do Azure. Se você também aplicar auditoria no nível do banco de dados (o que você fará nesta unidade), ambas as auditorias ocorrem em paralelo; um não se sobrepõe ao outro.

  8. Selecione o interruptor de slide para Ativar a Auditoria SQL do Azure.

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

    • Para de Subscrição, na lista desdobrável, selecione a Subscrição Concierge.
    • Para Conta de Armazenamento, na lista suspensa, selecione a conta que começa com sql seguida por uma sequência aleatória de letras e números.
    • Deixe o Tipo de Autenticação de Armazenamento como a opção padrão Chaves de Acesso ao Armazenamento .

    A conta de armazenamento sql é usada para coletar arquivos de log 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ê revisará o contêiner para saber como os arquivos de log diferem do Log Analytics.

    Dica

    Se não vir nenhuma conta de armazenamento, crie uma nova conta. Talvez seja necessário atualizar sua página depois de alguns minutos antes que ela apareça.

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

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

    • Para de retenção (dias), insira 7
    • Para a chave de acesso de armazenamento , selecione Principal .

    Observação

    Se não vir as propriedades avançadas, selecione Guardar na barra de comandos e, em seguida, repita as instruções de configuração para esta página.

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

    • Para Assinatura, selecione a Assinatura Concierge na lista suspensa.
    • Para Log Analytics, selecione o espaço de trabalho Log Analytics que criou anteriormente neste exercício (asuresql-la).
  12. Selecione Salvar.

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

Agora você habilitou a auditoria para uma conta de armazenamento e um espaço de trabalho do Azure Log Analytics. Mais tarde, você se aprofundará nos recursos de auditoria no Azure SQL. Você verá como analisar os logs de auditoria para visualizar todas as alterações feitas ao longo do módulo, bem como alguns outros casos de uso interessantes.

Livro-razão para o Banco de Dados SQL do Azure

O recurso livro-razão fornece prova de violação e prova criptográfica de integridade de dados no seu banco de dados. Esta prova pode ajudar a simplificar o processo de auditoria.

O Ledger ajuda a proteger os dados de qualquer invasor ou usuário com privilégios elevados, incluindo administradores de banco de dados (DBAs), administradores de sistema e administradores de nuvem. Tal como acontece com um livro-razão tradicional, a funcionalidade preserva os dados históricos. Quando uma transação numa tabela contábil modifica dados, o evento é submetido a hash SHA-256 criptograficamente usando uma estrutura de dados de árvore de Merkle que cria um hash raiz representando todas as linhas da transação. As transações que o banco de dados processa são então também hasheadas com SHA-256 através de uma estrutura de dados de árvore Merkle. O resultado é um hash raiz que forma um bloco. O bloco é então hasheado com SHA-256 até obter o hash raiz, utilizando o hash raiz do bloco e do bloco anterior como entradas para a função hash. Esse hashing forma um blockchain. Se uma linha for atualizada no banco de dados, seu valor anterior será mantido e protegido em uma tabela de histórico. O Ledger fornece uma crônica de todas as alterações feitas no banco de dados ao longo do tempo.

A funcionalidade de contabilidade é introduzida nas tabelas de duas formas:

  • Tabelas contábeis atualizáveis, que permitem atualizar e excluir linhas em suas tabelas
  • Tabelas contábeis somente de acréscimo, que só permitem inserções em suas tabelas

Tanto as tabelas de registo atualizáveis quanto as tabelas de registo apenas de acréscimo fornecem recursos de prova de adulteração e forense digital.

Exercício usando o livro-razão para o 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, fazer atualizações nos dados e consultar a tabela de histórico e as visualizações do livro-razão para ver o acompanhamento que está ocorrendo e a relação entre as tabelas.

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

  2. Clique com o botão direito do rato na base 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 $50.

    INSERT INTO [Account].[Balance]
    VALUES (1, 'Jones', 'Nick', 50);
    
  4. Insira os nomes John Smith, Joe Smithe 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. Exiba a [Account].[Balance] tabela contábil atualizável e especifique as colunas GERADAS SEMPRE adicionadas à tabela. Selecione Executar para executar a 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, você verá primeiro 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 regista o identificador de transação exclusivo associado à transação que inseriu os dados. Como John, Joee Mary foram inseridos usando a mesma transação, eles compartilham o mesmo ID de transação.
    • A coluna ledger_start_sequence_number observa a ordem pela qual os valores foram inseridos pela transação.
  6. Atualize o saldo do Nickde 50 para 100.

    UPDATE [Account].[Balance] SET [Balance] = 100
    WHERE [CustomerID] = 1;
    
  7. Exiba a vista do livro-razão [Account].[Balance], juntamente com a vista do sistema de transações para identificar os utilizadores que efetuaram 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;
    

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

Monitorização

Há dois aspetos para monitorar e gerenciar a segurança:

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

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

No Banco de Dados SQL do Azure, você pode configurar a auditoria SQL do Azure e aplicar modos de exibição de gerenciamento dinâmico, métricas e alertas para monitorar eventos relacionados à segurança. Por exemplo, sys.event_log permite rastrear o número de conexões falhadas e bem-sucedidas e o número de conexões bloqueadas pelo firewall.

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

Classificação de Descoberta de Dados &

O serviço de Descoberta & 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 visa proteger os dados e não apenas a base de dados. Este paradigma inclui:

  • Descoberta e recomendações para dados potencialmente confidenciais que devem ser classificados
  • A capacidade de adicionar persistentemente rótulos a 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 com base em sua necessidade.

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

Para obter mais informações, consulte Data Discovery & Classification.

Microsoft Defender para Cloud

O Microsoft Defender for Cloud é um pacote unificado para recursos avançados de segurança SQL. Ele fornece um único local de go-to para habilitar e gerenciar dois recursos principais:

  • Avaliação de Vulnerabilidade
  • Proteção avançada contra ameaças

Avaliação de Vulnerabilidade

No mais alto nível, a Avaliação de Vulnerabilidades do SQL é um serviço de verificação que fornece visibilidade do seu estado de segurança e fornece etapas acionáveis para resolver quaisquer preocupações potenciais. Ao configurar verificações periódicas recorrentes, você está habilitando o serviço para verificar seus bancos de dados a cada sete dias e verificar se há vulnerabilidades. Em seguida, você pode optar por enviar esses relatórios para os administradores, proprietários de assinaturas ou qualquer outra pessoa que precise ser notificada sobre as alterações. Para que este serviço funcione, é necessário especificar uma conta de armazenamento onde os resultados serão armazenados.

Proteção avançada contra ameaças

Com a Proteção Avançada contra Ameaças, pode detetar e responder a potenciais ameaças à medida que ocorrem, recebendo alertas de segurança sobre atividades anómalas. A Proteção Avançada contra Ameaças aplica tecnologias avançadas de monitoramento e aprendizado de máquina para detetar se alguma das seguintes ameaças ocorreu:

  • Injeção de SQL
  • Vulnerabilidade de injeção de SQL
  • Exfiltração de dados
  • Ação insegura
  • Tentativa de força bruta
  • Login de cliente anômalo

Nos próximos dois exercícios, você mergulhará nos recursos e cenários que o Microsoft Defender for Cloud e o Azure SQL em geral habilitam e protegem.

Segurança em nível de linha

Row-Level Segurança permite que você use a associação ao grupo ou o contexto de execução para controlar o acesso a linhas em uma tabela de banco de dados.

Row-Level Security (RLS) ajuda a implementar restrições no acesso à linha de dados. Por exemplo, você pode garantir que os trabalhadores acessem apenas as linhas de dados pertinentes ao departamento. Outro exemplo é restringir o acesso dos clientes aos dados apenas aos dados relevantes para a sua empresa.

A lógica de restrição de acesso está localizada 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 sempre que o acesso aos dados é tentado a partir de qualquer camada. Isto torna o seu sistema de segurança mais fiável e robusto, reduzindo a área de superfície do seu sistema de segurança.

A RLS suporta dois tipos de predicados de segurança.

  • Predicados de filtro filtram silenciosamente as linhas disponíveis para operações de leitura (SELECT, UPDATE e DELETE)
  • Bloquear predicados bloquear explicitamente operações de gravação (APÓS INSERIR, APÓS ATUALIZAÇÃO, ANTES DE ATUALIZAR, ANTES DE EXCLUIR) que violam o predicado

Verificação de conhecimentos

1.

Quais das seguintes são maneiras de monitorar eventos relacionados à segurança para o Banco de Dados SQL do Azure?