Executar notebooks no data lake do Microsoft Sentinel

Os blocos de notas do Jupyter fornecem um ambiente interativo para explorar, analisar e visualizar dados no Microsoft Sentinel data lake e tabelas federadas. Com os blocos de notas, pode escrever e executar código, documentar o fluxo de trabalho e ver resultados, tudo num único local. Esse ambiente de notebook tudo-em-um facilita a exploração de dados, a construção de soluções avançadas de análise e o compartilhamento de insights com outras pessoas. Ao tirar partido do Python e do Apache Spark no Visual Studio Code, os blocos de notas ajudam-no a transformar dados de segurança não processados em inteligência acionável.

Este artigo mostra-lhe como explorar e interagir com dados do data lake com blocos de notas do Jupyter no Visual Studio Code.

Pré-requisitos

Integrando-se ao Microsoft Sentinel Data Lake

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

Permissões necessárias para notebooks data lake

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

Opcionalmente, o escopo do Microsoft Sentinel ou o RBAC em nível de linha podem ser configurados para restringir ainda mais o acesso aos dados em um espaço de trabalho. Quando ativado, o âmbito ao nível da linha limita os dados devolvidos pelas consultas com base no âmbito atribuído pelo utilizador. Se o âmbito ao nível da linha não estiver configurado, o modelo de permissão ao nível da área de trabalho existente aplica-se inalterado. Para obter mais informações, consulte Configurar a delimitação de escopo do Microsoft Sentinel (RBAC em nível de linha) (versão prévia).

Para criar novas tabelas personalizadas na camada de análise, a identidade gerida do data lake tem de ser atribuída à função Contribuidor do Log Analytics na área de trabalho do Log Analytics.

Para atribuir a função, siga os passos abaixo:

  1. No portal do Azure, navegue para a área de trabalho do Log Analytics à qual pretende atribuir a função.
  2. Selecione Controlo de acesso (IAM) no painel de navegação esquerdo.
  3. Selecione Adicionar atribuição de função.
  4. Na tabela Função , selecione Contribuidor do Log Analytics e, em seguida, selecione Seguinte
  5. Selecione Identidade gerida e, em seguida, selecione Selecionar membros.
  6. Sua identidade gerenciada do data lake é uma identidade gerenciada atribuída pelo sistema chamada msg-resources-<guid>. Selecione a identidade gerida e, em seguida, selecione Selecionar.
  7. Selecione Revisar e atribuir.

Para obter mais informações sobre como atribuir funções a identidades geridas, veja Atribuir funções de Azure com o portal do Azure.

Instalar Visual Studio Code e a extensão Microsoft Sentinel

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

A extensão Microsoft Sentinel para Visual Studio Code (VS Code) é instalada a partir do marketplace 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 Sentinel.
  3. Selecione a extensão Microsoft Sentinel e selecione Instalar.
  4. Após a instalação da extensão, a imagem Microsoft Sentinel do ícone da extensão Microsoft Sentinel no ícone da barra de ferramentas do Visual Studio Code aparece na barra de ferramentas à esquerda.

Uma captura de ecrã a mostrar o mercado de extensões.

Instale a extensão GitHub Copilot para Visual Studio Code para ativar a conclusão de código e sugestões em blocos de notas.

  1. Procure GitHub Copilot no Marketplace de Extensões e instale-o.
  2. Após a instalação, inicie sessão no GitHub Copilot com a sua conta do GitHub.

Explorar tabelas de nível do data lake

Depois de instalar a extensão Microsoft Sentinel, pode começar a explorar tabelas de camadas do data lake e a criar blocos de notas do Jupyter para analisar os dados.

Iniciar sessão na extensão Microsoft Sentinel

Para entrar na extensão Microsoft Sentinel, siga estas etapas:

  1. Selecione a imagem Microsoft Sentinel do ícone da extensão Microsoft Sentinel usado para abrir a extensão no ícone do Visual Studio Code na barra de ferramentas esquerda.

  2. É apresentada uma caixa de diálogo com o seguinte texto A extensão "Microsoft Sentinel" quer iniciar sessão com 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.

    Captura de ecrã a mostrar a lista de seleção de conta na parte superior da página.

    Se você tiver várias contas de convidado associadas ao seu login, poderá alternar facilmente entre elas. Para alternar entre contas, selecione o nome da conta no canto inferior esquerdo da janela Visual Studio Code. Só é possível selecionar uma conta de cada vez.

    Captura de ecrã a mostrar como mudar de conta no Visual Studio Code.

    Importante

    Alternar entre contas desliga todas as sessões ativas do pyspark.

Ver tabelas e tarefas do data lake

Depois que você se conectar, a extensão do Sentinel exibirá uma lista de Tabelas do lake e Trabalhos no painel esquerdo. As tabelas são agrupadas pela base de dados e categoria. As tabelas federadas são apresentadas na categoria Tabelas federadas em Tabelas de sistema. Selecione uma tabela para ver as definições de coluna.

Para informações sobre como agendar trabalhos de cadernos, veja Criar e gerenciar trabalhos e cronogramas de cadernos neste artigo. Para obter mais informações sobre tabelas federadas, veja Using federated tables in the Microsoft Sentinel data lake (Utilizar tabelas federadas no data lake do Microsoft Sentinel).

Captura de tela da extensão Sentinel mostrando tabelas do Lake e Jobs no painel esquerdo e os metadados da tabela selecionada.

Criar um novo bloco de notas

Para criar um novo notebook Jupyter no Visual Studio Code, siga estes passos:

  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 Jupyter Notebook. Captura de ecrã a mostrar como criar um novo bloco de notas a partir da barra de pesquisa.

  3. Selecione Arquivo > Novo Arquivo e escolha Jupyter Notebook na lista suspensa.
    Uma captura de ecrã a mostrar como criar um novo bloco de notas no menu de ficheiros.

  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_filtered = df.select("displayName", "groupTypes", "mail", "mailNickname", "description", "tenantId").show(100,   truncate=False)  
    
    # Transform the dataframe
    df_transformed = df.filter(df.mail.isNotNull()).select("displayName", "groupTypes", "mail", "mailNickname", "description", "tenantId")
    
    write_options = {
         'mode': 'overwrite'
     }
    # Save to a new table
    data_provider.save_as_table(df_transformed, "EntraGroups_Processed_SPRK", write_options=write_options)
    

    O editor oferece preenchimento de código com IntelliSense tanto para a classe MicrosoftSentinelProvider quanto para os nomes das tabelas no data lake.

  5. Selecione o triângulo Executar para executar o código no bloco de notas. Os resultados são apresentados no painel de saída abaixo da célula de código.
    Uma captura de tela mostrando como executar uma célula do notebook.

  6. Selecione Microsoft Sentinel na lista para obter uma lista de conjuntos de runtime. Captura de tela mostrando o seletor de ambiente de execução.

  7. Selecione Medium para executar o notebook no pool de tempo de execução médio. Para obter mais informações sobre os diferentes runtimes, consulte Selecionar o pool de runtime apropriado. Uma captura de tela mostrando o seletor de tamanho do pool de execução.

Observação

Selecionar o kernel inicia a sessão do Spark e executa o código no bloco de notas. Depois de selecionar o pool, a sessão pode levar de 3 a 5 minutos para começar. As execuções subsequentes são mais rápidas, pois a sessão já está ativa.

Quando a sessão é iniciada, o código no bloco de notas é executado e os resultados são apresentados no painel de saída abaixo da célula de código, por exemplo: uma captura de ecrã a mostrar os resultados da execução de uma célula do bloco de notas.

Para notebooks de exemplo que demonstram como interagir com o data lake do Microsoft Sentinel, consulte Notebooks de exemplo para o data lake do Microsoft Sentinel.

Monitorar o estado do notebook na barra de status

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

  • A porcentagem de utilização de vCore para o pool do 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. Os percentuais representam o uso atual entre cargas de trabalho interativas e de trabalho da conta conectada.

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

Captura de ecrã a mostrar a barra de status na parte inferior do bloco de notas.

Definir tempos limite de sessão

Pode definir o tempo limite da sessão e avisos de tempo limite para blocos de notas interativos. Estas definições são mantidas nas definições da extensão para que sejam preservadas em todas as sessões.

Para alterar o tempo limite, selecione o status de ligação na barra de status na parte inferior do bloco de notas. Escolha dentre as seguintes opções:

  • Definir o período de tempo limite da sessão: define o tempo em minutos antes de a sessão exceder o limite de tempo. A predefinição é 30 minutos.

  • Repor o período de tempo limite da sessão: repõe o tempo limite da sessão para o valor predefinido de 30 minutos.

  • Definir o período de aviso de tempo limite da sessão: define o tempo em minutos antes do tempo limite em que é apresentado um aviso de que a sessão está prestes a exceder o limite de tempo. A predefinição é 5 minutos.

  • Repor o período de aviso de tempo limite da sessão: repõe o aviso de tempo limite da sessão para o valor predefinido de 5 minutos.

    Uma captura de ecrã a mostrar a definição de tempo limite da sessão.

Usar o GitHub Copilot em notebooks

Utilize GitHub Copilot para o ajudar a escrever código em blocos de notas. GitHub Copilot fornece sugestões de código e conclusão automática com base no contexto do seu código. Para utilizar GitHub Copilot, certifique-se de que tem a extensão GitHub Copilot instalada no Visual Studio Code.

Copie o código dos Notebooks de exemplo para o data lake do Microsoft Sentinel e salve-o na pasta de notebooks para fornecer contexto ao GitHub Copilot. O GitHub Copilot poderá então sugerir complementos de código com base no contexto do seu notebook.

O exemplo seguinte mostra GitHub Copilot a gerar uma revisão de código.

Captura de ecrã a mostrar GitHub Copilot a gerar uma revisão de código.

Use a classe Microsoft Sentinel Provider

Para ligar ao Microsoft Sentinel data lake, utilize a MicrosoftSentinelProvider classe . A MicrosoftSentinelProvider classe faz parte do sentinel_lake.providers módulo e fornece métodos para interagir com o data lake. Para conectar seu notebook Spark às tabelas do data lake Microsoft Sentinel, importe a classe e crie uma instância usando uma spark sessão. O código a seguir inicializa o provedor de dados do Sentinel Lake para que o notebook possa consultar tabelas do Microsoft Sentinel do Spark:

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

Para obter mais informações sobre os métodos disponíveis, veja Microsoft Sentinel Provider class reference (Referência da classe fornecedor de Microsoft Sentinel).

Selecione o pool de ambientes de execução apropriado

Existem três conjuntos de runtime disponíveis para executar os seus blocos de notas do Jupyter na extensão Microsoft Sentinel. Cada conjunto foi concebido para diferentes cargas de trabalho e requisitos de desempenho. A escolha do conjunto de runtime afeta o desempenho, o custo e o tempo de execução dos trabalhos do Spark.

Pool de runtime Casos de Utilização Recomendados Características
Small Desenvolvimento, testes e análise exploratória simples.
Pequenas cargas de trabalho com transformações simples.
Eficiência de custos priorizada.
Adequado para cargas de trabalho pequenas
Transformações simples.
Custo mais baixo, tempo de execução mais longo.
Medium Tarefas ETL com associações, agregações e preparação de modelos de ML.
Cargas de trabalho moderadas com transformações complexas.
Desempenho aprimorado em relação ao Small.
Processa o paralelismo e operações moderadas de memória intensiva.
Large Aprendizagem profunda e cargas de trabalho de ML.
Mistura de dados extensa, associações grandes ou processamento em tempo real.
Tempo de execução crítico.
Memória elevada e poder de computação.
Atrasos mínimos.
Melhor para cargas de trabalho grandes, complexas ou sensíveis ao tempo.

Observação

Quando acedido pela primeira vez, as opções de kernel podem demorar cerca de 30 segundos a carregar.
Após selecionar um pool de tempo de execução, a sessão pode levar de 3 a 5 minutos para iniciar.

Ver mensagens, registos e erros

Os registos de mensagens e as mensagens de erro são apresentados em três áreas do Visual Studio Code.

  1. O painel de Saída.

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

    Uma captura de ecrã a mostrar o painel de saída.

  2. As mensagens em linha no bloco de notas fornecem feedback e informações sobre a execução de células de código. Estas mensagens incluem atualizações de status da 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 uma mensagem de notificação do sistema, fornece alertas e atualizações em tempo real sobre o status das operações no notebook e na sessão do Spark. Estas notificações incluem mensagens, avisos e alertas de erro, como ligação bem-sucedida a uma sessão do Spark e avisos de tempo limite.

    Uma captura de tela que mostra uma mensagem de notificação do sistema e uma mensagem de erro em linha.

Criar e gerenciar trabalhos e agendamentos do notebook

Você pode agendar tarefas para serem executadas em horários ou intervalos específicos usando a extensão do Microsoft Sentinel para o 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 jobs também são usados para processar dados e gravar resultados em tabelas personalizadas na camada do data lake ou na camada de análise. Para obter mais informações sobre como criar e gerir tarefas, veja Criar e gerir tarefas de blocos de notas do Jupyter.

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

A secção seguinte lista os parâmetros de serviço e os limites do Microsoft Sentinel data lake ao utilizar blocos de notas do VS Code.

Categoria Parâmetro/limite
Tabela personalizada na camada de análise As tabelas personalizadas na camada de análise não podem ser eliminadas de um bloco de notas; Utilize o Log Analytics para eliminar estas tabelas. Para obter mais informações, consulte Adicionar ou excluir tabelas e colunas no Azure Monitor Logs
Tempo limite do soquete da Web do gateway 2 horas
Tempo limite da consulta interativa 2 horas
Tempo limite de inatividade da sessão interativa 20 minutos
Linguagem Python
Graph query timeout (Tempo limite de consulta de gráficos) 7,5 minutos
Tempo limite do trabalho do notebook 8 horas
Máximo de tarefas simultâneas do bloco de notas 3, os trabalhos subsequentes são enfileirados
Máximo de utilizadores em simultâneo na consulta interativa 8 a 10 no pool grande
Tempo de arranque da sessão A sessão de computação do Spark demora cerca de 5 a 6 minutos a ser iniciada. Pode ver o status da sessão na parte inferior do seu Bloco de Notas do VS Code.
Bibliotecas suportadas Apenas as bibliotecas 3.4 do Azure Synapse e a biblioteca Microsoft Sentinel Provider para funções abstraídas são compatíveis com a consulta ao data lake. As instalações do Pip ou bibliotecas personalizadas não são suportadas.
Limite do VS Code UX para exibir registros 100.000 linhas

Solução de problemas

Para obter erros comuns e soluções ao trabalhar com blocos de notas, veja Resolução de problemas de blocos de notas no data lake do Microsoft Sentinel.