Partilhar via


Executar cadernos de notas no data lake do Microsoft Sentinel

Os blocos de anotações Jupyter fornecem um ambiente interativo para explorar, analisar e visualizar dados no data lake do Microsoft Sentinel. Com os blocos de anotações, você pode escrever e executar código, documentar seu fluxo de trabalho e exibir resultados, tudo em um só lugar. Isso facilita a exploração de dados, a criação de soluções de análise avançadas e o compartilhamento de insights com outras pessoas. Ao aproveitar o Python e o Apache Spark no Visual Studio Code, os blocos de anotações ajudam você a transformar dados brutos de segurança em inteligência acionável.

Este artigo mostra como explorar e interagir com dados de data lake usando blocos de anotações Jupyter no Visual Studio Code.

Pré-requisitos

Integrado ao data lake do Microsoft Sentinel

Para usar notebooks no data lake do Microsoft Sentinel, deve primeiro integrar-se ao data lake. Se você não tiver integrado ao data lake do Sentinel, consulte Integração ao data lake do Microsoft Sentinel. Se você tiver integrado recentemente ao data lake, pode levar algum tempo até que um volume suficiente de dados seja ingerido antes de poder criar análises significativas usando blocos de anotações.

Permissões

As funções de ID do Microsoft Entra fornecem amplo acesso em todos os espaços de trabalho no data lake. Como alternativa, você pode conceder acesso a espaços de trabalho individuais usando funções RBAC do Azure. Utilizadores com permissões do Azure RBAC para espaços de trabalho do Microsoft Sentinel podem executar notebooks nesses espaços de trabalho na camada do data lake. Para obter mais informações, consulte Funções e permissões no Microsoft Sentinel.

Para criar novas tabelas personalizadas na camada de análise, a identidade gerenciada do data lake deve receber a função de Colaborador do Log Analytics no espaço de trabalho do Log Analytics.

Para atribuir a função, siga as etapas abaixo:

  1. No portal do Azure, navegue até o espaço de trabalho do Log Analytics ao qual você deseja atribuir a função.
  2. Selecione Controle de acesso (IAM) no painel de navegação esquerdo.
  3. Selecione Adicionar atribuição de função.
  4. Na tabela Função, selecione Log Analytics Contributor, em seguida, selecione Avançar
  5. Selecione Identidade gerenciada e, em seguida, selecione Selecionar membros.
  6. Sua identidade gerenciada do data lake é uma identidade gerenciada atribuída ao sistema chamada msg-resources-<guid>. Selecione a identidade gerenciada e, em seguida, selecione Selecionar.
  7. Selecione Rever e atribuir.

Para obter mais informações sobre como atribuir funções a identidades gerenciadas, consulte Atribuir funções do Azure usando o portal do Azure.

Instalar o Visual Studio Code e a extensão Microsoft Sentinel

Se você ainda não tiver o Visual Studio Code, baixe e instale o Visual Studio Code para Mac, Linux ou Windows.

A extensão Microsoft Sentinel para Visual Studio Code (VS Code) é instalada a partir do mercado de extensões. Para instalar a extensão, siga estes passos:

  1. Selecione o Marketplace de extensões na barra de ferramentas à esquerda.
  2. Procure por Sentinel.
  3. Selecione a extensão Microsoft Sentinel e selecione Instalar.
  4. Depois que a extensão é instalada, o ícone do escudo do Microsoft Sentinel aparece na barra de ferramentas esquerda.

Uma captura de tela mostrando o mercado de extensão.

Instale a extensão GitHub Copilot para o Visual Studio Code para habilitar a conclusão automática de código e sugestões em notebooks.

  1. Procure o GitHub Copilot no Extensions Marketplace e instale-o.
  2. Após a instalação, faça login no GitHub Copilot usando sua conta do GitHub.

Explore tabelas de camadas de data lake

Depois de instalares a extensão Microsoft Sentinel, poderás começar a explorar as tabelas da camada do data lake e criar notebooks Jupyter para analisar os dados.

Entre na extensão Microsoft Sentinel

  1. Selecione o ícone do escudo do Microsoft Sentinel na barra de ferramentas esquerda.

  2. É apresentada uma caixa de diálogo com o seguinte texto: A extensão "Microsoft Sentinel" pretende iniciar sessão utilizando a Microsoft. Selecione Permitir.

    Uma captura de ecrã a mostrar a caixa de diálogo de início de sessão.

  3. Selecione o nome da sua conta para concluir o login.

    Uma captura de tela mostrando a lista de seleção de conta na parte superior da página.

Exibir tabelas e trabalhos do data lake

Depois de entrar, a extensão Sentinel exibe uma lista de tabelas Lake e Jobs no painel esquerdo. As tabelas são agrupadas por banco de dados e categoria. Selecione uma tabela para ver as definições de coluna.

Para obter informações sobre trabalhos, consulte Trabalhos e agendamento.

Uma captura de tela mostrando a lista de tabelas, trabalhos e metadados da tabela selecionada.

Criar um novo bloco de notas

  1. Para criar um novo bloco de notas, utilize um dos seguintes métodos.

  2. Introduza > na caixa de pesquisa ou prima Ctrl+Shift+P e, em seguida, introduza Criar Novo Bloco de Notas Jupyter. Uma captura de ecrã a mostrar como criar um novo bloco de notas a partir da barra de pesquisa.

  3. Selecione Arquivo > Novo Arquivo e, em seguida, selecione Jupyter Notebook na lista suspensa.
    Uma captura de tela mostrando como criar um novo bloco de anotações no menu de arquivos.

  4. No novo bloco de notas, cole o seguinte código na primeira célula.

    from sentinel_lake.providers import MicrosoftSentinelProvider
    data_provider = MicrosoftSentinelProvider(spark)
    
    table_name = "EntraGroups"  
    df = data_provider.read_table(table_name)  
    df.select("displayName", "groupTypes", "mail", "mailNickname", "description", "tenantId").show(100,   truncate=False)  
    

O editor fornece conclusão de código intellisense para a classe MicrosoftSentinelProvider e para os nomes de tabelas no data lake.

  1. Selecione o triângulo Executar para executar o código no bloco de anotações. Os resultados são exibidos no painel de saída abaixo da célula de código.
    Uma captura de tela mostrando como executar uma célula do notebook.

  2. Selecione Microsoft Sentinel na lista para obter uma lista de pools de tempo de execução. Uma captura de tela mostrando o seletor de tempo de execução.

  3. Selecione Médio para executar o notebook no pool de tempo de execução de tamanho médio. Para obter mais informações sobre os diferentes tempos de execução, consulte Selecionando o tempo de execução apropriado do Microsoft Sentinel. Uma captura de ecrã mostrando o seletor de tamanho do pool de execução.

Observação

A seleção do kernel inicia a sessão do Spark e executa o código no bloco de anotações. Depois de selecionar a piscina, pode levar de 3 a 5 minutos para a sessão começar. A execução subsequente é mais rápida, pois a sessão já está ativa.

Quando a sessão é iniciada, o código no bloco de anotações é executado e os resultados são exibidos no painel de saída abaixo da célula de código, por exemplo: Uma captura de tela mostrando os resultados da execução de uma célula do bloco de anotações.

Para obter blocos de anotações de exemplo que demonstram como interagir com o data lake do Microsoft Sentinel, consulte Blocos de anotações de exemplo para o data lake do Microsoft Sentinel.

Barra de status

A barra de status na parte inferior do bloco de anotações fornece informações sobre o estado atual do bloco de anotações e da sessão do Spark. A barra de status inclui as seguintes informações:

  • A porcentagem de utilização do vCore para o pool Spark selecionado. Passe o cursor sobre a porcentagem para ver o número de vCores usados e o número total de vCores disponíveis no pool. As porcentagens representam o uso atual em cargas de trabalho interativas e de trabalho para a conta conectada.

  • O status da conexão da sessão do Spark, por exemplo Connecting, , Connectedou Not Connected.

Uma captura de tela mostrando a barra de status na parte inferior do bloco de anotações.

Definir tempos limite de sessão

Você pode definir o tempo limite da sessão e os avisos de tempo limite para blocos de anotações interativos. Para alterar o tempo limite, selecione o status da conexão na barra de status na parte inferior do bloco de anotações. Escolha entre as seguintes opções:

  • Definir período de tempo limite da sessão: define o tempo em minutos antes do tempo limite da sessão. O padrão é 30 minutos.

  • Redefinir o período de tempo limite da sessão: redefine o tempo limite da sessão para o valor padrão de 30 minutos.

  • Definir período de aviso de tempo limite da sessão: define a hora, em minutos antes do tempo limite, em que é apresentado um aviso de que a sessão está prestes a atingir o tempo limite. O padrão é 5 minutos.

  • Redefinir o período de aviso de tempo limite da sessão: redefine o aviso de tempo limite da sessão para o valor padrão de 5 minutos.

    Uma captura de tela mostrando a configuração de tempo limite da sessão.

Usar o GitHub Copilot em notebooks

Use o GitHub Copilot para ajudá-lo a escrever código em blocos de anotações. O GitHub Copilot fornece sugestões de código e preenchimento automático com base no contexto do seu código. Para usar o GitHub Copilot, verifique se você tem a extensão GitHub Copilot instalada no Visual Studio Code.

Copie o código dos notebooks de exemplo do Microsoft Sentinel data lake e salve-o na sua pasta de notebooks para fornecer contexto para o GitHub Copilot. O GitHub Copilot poderá sugerir completações de código com base no contexto do seu notebook.

O exemplo a seguir mostra o GitHub Copilot gerando uma revisão de código.

Uma captura de tela mostrando o GitHub Copilot gerando uma revisão de código.

Classe Microsoft Sentinel Provider

Para se conectar ao data lake do Microsoft Sentinel, use a SentinelLakeProvider classe. Essa classe faz parte do access_module.data_loader módulo e fornece métodos para interagir com o data lake. Para usar essa classe, importe-a e crie uma instância da classe usando uma spark sessão.

from sentinel_lake.providers import MicrosoftSentinelProvider
data_provider = MicrosoftSentinelProvider(spark)

Para obter mais informações sobre os métodos disponíveis, consulte Referência de classe do Microsoft Sentinel Provider.

Selecione o pool de tempo de execução apropriado

Há três pools de tempo de execução disponíveis para executar os cadernos Jupyter na extensão Microsoft Sentinel. Cada pool é projetado para diferentes cargas de trabalho e requisitos de desempenho. A escolha do pool de tempo de execução afeta o desempenho, o custo e o tempo de execução dos trabalhos do Spark.

Pool de tempo de execução Casos de uso recomendados Caraterísticas
Pequeno Desenvolvimento, testes de software e análise exploratória leve.
Pequenas cargas de trabalho com transformações simples.
Eficiência de custos priorizada.
Adequado para pequenas cargas de trabalho
Transformações simples.
Menor custo, maior tempo de execução.
Medium Trabalhos de ETL com junções, agregações e treinamento de modelo de ML.
Cargas de trabalho moderadas com transformações complexas.
Desempenho melhorado em comparação com o "Small".
Lida com paralelismo e operações moderadas que consomem muita memória.
Grande Cargas de trabalho de aprendizagem profunda e ML.
Embaralhamento de dados extensivo, grandes associações ou processamento em tempo real.
Tempo crítico de execução.
Alta memória e poder de computação.
Atrasos mínimos.
Ideal para cargas de trabalho grandes, complexas ou sensíveis ao tempo.

Observação

Quando acessadas pela primeira vez, as opções do kernel podem levar cerca de 30 segundos para carregar.
Depois de selecionar um pool de tempo de execução, pode levar de 3 a 5 minutos para que a sessão seja iniciada.

Ver mensagens, registos e erros

Registos de mensagens e mensagens de erro são apresentados em três áreas distintas no Visual Studio Code.

  1. O painel Saída.

    1. No painel Saída , selecione Microsoft Sentinel na lista suspensa.
    2. Selecione Depurar para incluir entradas de log detalhadas.

    Uma captura de tela mostrando o painel de saída.

  2. As mensagens em linha no bloco de notas fornecem comentários e informações sobre a execução de células de código. Essas mensagens incluem atualizações de status de execução, indicadores de progresso e notificações de erro relacionadas ao código na célula anterior

  3. Um pop-up de notificação no canto inferior direito do Visual Studio Code, também conhecido como mensagem de toast, fornece alertas e atualizações em tempo real sobre o status das operações no notebook e na sessão Spark. Essas notificações incluem mensagens, avisos e alertas de erro, como conexão bem-sucedida a uma sessão de faísca e avisos de tempo limite.

    Uma captura de tela mostrando uma mensagem de alerta e uma mensagem de erro em linha.

Trabalhos e agendamento

Você pode agendar trabalhos para execução em horários ou intervalos específicos usando a extensão Microsoft Sentinel para Visual Studio Code. Os trabalhos permitem automatizar tarefas de processamento de dados para resumir, transformar ou analisar dados no data lake do Microsoft Sentinel. Os trabalhos também são usados para processar dados e gravar resultados em tabelas personalizadas na camada de data lake ou na camada de análise. Para obter mais informações sobre como criar e gerenciar trabalhos, consulte Criar e gerenciar trabalhos de bloco de anotações Jupyter.

Parâmetros e limites de serviço para VS Code Notebooks

A seção a seguir lista os parâmetros e limites de serviço para o data lake do Microsoft Sentinel ao usar o VS Code Notebooks.

Categoria Parâmetro/limite
Tabela personalizada na camada de análise As tabelas personalizadas na camada de análise não podem ser excluídas de um bloco de anotações; Use o Log Analytics para excluir essas tabelas. Para obter mais informações, consulte Adicionar ou excluir tabelas e colunas nos Logs do Azure Monitor
Tempo limite do soquete da Web do gateway Duas horas
Tempo limite de consulta interativa Duas horas
Tempo limite de inatividade da sessão interativa 20 minutos
Linguagem Python
Tempo limite do trabalho do bloco de anotações 8 horas
Máximo de trabalhos simultâneos no notebook 3, os trabalhos subsequentes são enfileirados
Máximo de usuários simultâneos em consultas interativas 8-10 na piscina grande
Tempo de arranque da sessão A sessão de computação do Spark leva cerca de 5 a 6 minutos para ser iniciada. Pode ver o estado da sessão na parte inferior do seu Bloco de Notas VS Code.
Bibliotecas suportadas Apenas as bibliotecas do Azure Synapse 3.4 e a biblioteca do Microsoft Sentinel Provider para funções abstratas têm suporte para consultar o data lake. Não há suporte para instalações de pip ou bibliotecas personalizadas.
Limite de UX do VS Code para exibir registros 100.000 linhas

Solução de problemas

A tabela a seguir lista erros comuns que você pode encontrar ao trabalhar com blocos de anotações, suas causas básicas e ações sugeridas para resolvê-los.

Categoria de erro Nome do erro Código de Erro Mensagem de erro Ação sugerida
DatabaseError BaseDeDadosNãoEncontrada 2001 Banco de dados {DatabaseName} não encontrado. Verifique se o banco de dados existe. Se o banco de dados for novo, aguarde uma atualização de metadados.
DatabaseError AmbiguousDatabaseName 2002 Vários bancos de dados (IDs: {DatabaseID1}, {DatabaseID2}, ...) compartilham o nome {DatabaseName}. Forneça um ID de banco de dados específico. Especifique um ID de banco de dados quando vários bancos de dados tiverem o mesmo nome.
DatabaseError IncompatibilidadeDeIdDeBaseDeDados 2003 Banco de dados ({DatabaseName}, ID {DatabaseID}) não encontrado. Verifique o nome e o ID do banco de dados. Para obter IDs de banco de dados, liste todos os bancos de dados.
DatabaseError ListDatabasesFailure 2004 Não é possível buscar bancos de dados. Reinicie a sessão e tente novamente. Reinicie a sessão e tente novamente a operação após alguns minutos.
Erro de Tabela TableDoesNotExist 2100 Tabela {TableName} não encontrada no banco de dados {DatabaseName}. Verifique se a tabela existe no banco de dados. Se a tabela ou o banco de dados for novo, aguarde alguns minutos e tente novamente.
Erro de Tabela AprovisionamentoIncompleto 2101 A tabela {TableName} não está pronta. Aguarde alguns minutos antes de tentar novamente. A tabela está sendo provisionada. Aguarde alguns minutos antes de tentar novamente.
Erro de Tabela DeltaTableMissing 2102 A tabela {TableName} está vazia. Novas mesas podem levar até algumas horas para estarem prontas. Pode levar algumas horas para sincronizar totalmente uma tabela de análise no data lake. Para tabelas que estão apenas no data lake, verifique se os dados precisam ser carregados ou restaurados.
Erro de Tabela TabelaNãoExisteParaExclusão 2103 Não é possível excluir a tabela. Tabela {TableName} não encontrada. Verifique se a tabela existe no banco de dados. Se a tabela ou o banco de dados for novo, aguarde alguns minutos e tente novamente.
Erro de Autorização MissingSASToken 2201 Não é possível acessar a tabela. Reinicie a sessão e tente novamente. A autorização falhou ao tentar buscar o token de acesso para a tabela. Reinicie a sessão e tente novamente.
Erro de Autorização InvalidSASToken 2202 Não é possível acessar a tabela. Reinicie a sessão e tente novamente. A autorização falhou ao tentar buscar o token de acesso para a tabela. Reinicie a sessão e tente novamente.
Erro de Autorização Token Expirado 2203 Não é possível acessar a tabela. Reinicie a sessão e tente novamente. A autorização falhou ao tentar buscar o token de acesso para a tabela. Reinicie a sessão e tente novamente.
Erro de Autorização TabelaPermissõesInsuficientes 2204 Acesso necessário para a tabela {TableName} no banco de dados {DatabaseName}. Entre em contato com um administrador para solicitar acesso à tabela ou ao banco de dados (espaço de trabalho).
Erro de Autorização Acesso Negado à Tabela Interna 2205 O acesso à tabela {TableName} é restrito. Apenas as tabelas definidas pelo sistema ou pelo utilizador podem ser acedidas a partir de um bloco de notas.
Erro de Autorização FalhaDeAutenticaçãoDaTabela 2206 Não é possível salvar dados na tabela. Reinicie a sessão e tente novamente. A autorização falhou ao tentar salvar dados na tabela. Reinicie a sessão e tente novamente.
Erro de Configuração Falha de Configuração do Hadoop 2301 Não é possível atualizar a configuração da sessão. Reinicie a sessão e tente novamente. Este problema é transitório e pode ser resolvido reiniciando a sessão e tentando novamente. Se o problema persistir, contacte o suporte.
DataError Falha de Análise de Json 2302 Os metadados da tabela foram corrompidos. Contacte o suporte para obter assistência. Contacte o suporte para obter assistência. Forneça o ID do locatário, o nome da tabela e o nome do banco de dados.
TableSchemaError TableSchemaMismatch 2401 Coluna não encontrada na tabela de destino. Alinhe o esquema DataFrame e a tabela de destino ou use o modo de substituição. Atualize o esquema DataFrame para corresponder à tabela no banco de dados de destino. Você também pode substituir a tabela inteiramente no modo de substituição.
TableSchemaError ColunasObrigatóriasEmFalta 2402 A coluna {ColumnName} está ausente do DataFrame. Verifique o esquema DataFrame e alinhe-o com a tabela de destino. Atualize o esquema DataFrame para corresponder à tabela no banco de dados de destino. Você também pode substituir a tabela inteiramente no modo de substituição.
TableSchemaError AlteraçãoDoTipoDeColunaNãoPermitida 2403 Não é possível alterar o tipo de dados da coluna {ColumnName}. Uma alteração de tipo de dados não é permitida para a coluna. Verifique as colunas existentes na tabela de destino e alinhe todos os tipos de dados no DataFrame.
TableSchemaError AlteraçãoDeAnulabilidadeDeColunaNãoPermitida 2404 Não é possível alterar a anulabilidade da coluna {ColumnName}. Não é possível atualizar as configurações de anulabilidade da coluna. Verifique a tabela de destino e alinhe as configurações com o DataFrame.
Erro de ingestão FolderCreationFailure 2501 Não é possível criar armazenamento para a tabela {TableName}. Este problema é transitório e pode ser resolvido reiniciando a sessão e tentando novamente. Se o problema persistir, contacte o suporte.
Erro de ingestão FalhaDePedidoDeSubTrabalho 2502 Não é possível criar tarefa de ingestão para a tabela {TableName}. Este problema é transitório e pode ser resolvido reiniciando a sessão e tentando novamente. Se o problema persistir, contacte o suporte.
Erro de ingestão Falha na Criação de Subtarefa 2503 Não é possível criar tarefa de ingestão para a tabela {TableName}. Este problema é transitório e pode ser resolvido reiniciando a sessão e tentando novamente. Se o problema persistir, contacte o suporte.
InputError ModoDeEscritaInválido 2601 Modo de escrita inválido. Utilize acrescentar ou substituir. Especifique um modo de gravação válido (acrescentar ou substituir) antes de salvar o DataFrame.
InputError ParticionamentoNãoPermitido 2602 Não é possível particionar tabelas de análise. Remova qualquer particionamento para todas as colunas em tabelas de análise.
InputError MissingTableSuffixLake 2603 Nome de tabela personalizada inválido. Todos os nomes de tabelas personalizadas no data lake devem terminar com _SPRK. Adicione _SPRK como um sufixo ao nome da tabela antes de gravá-lo no data lake.
InputError MissingTableSuffixLA 2604 Nome de tabela personalizada inválido. Todos os nomes de tabelas de análise personalizadas devem terminar com _SPRK_CL. Adicione _SPRK_CL como sufixo ao nome da tabela antes de gravá-lo no armazenamento de análise.
ErroDesconhecido Erro Interno do Servidor 2901 Ocorreu um erro. Reinicie a sessão e tente novamente. Este problema é transitório e pode ser resolvido reiniciando a sessão e tentando novamente. Se o problema persistir, contacte o suporte.