Executar blocos de notas 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. Este ambiente de cadernos tudo-em-um facilita a exploração de dados, a construção de soluções avançadas de análise e a partilha de insights com outros. 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

Integrar com o data lake do Microsoft Sentinel

Para utilizar notebooks no data lake do Microsoft Sentinel, primeiro tem de aderir ao data lake. Se ainda não tiver aderido ao Microsoft Sentinel data lake, consulte Adesão ao Microsoft Sentinel data lake. Se tiver integrado recentemente no data lake, poderá demorar algum tempo até que seja ingerido um volume suficiente de dados antes de poder criar análises significativas com blocos de notas.

Permissões necessárias para notebooks data lake

As funções do Microsoft Entra ID concedem acesso abrangente a todas as áreas de trabalho no lago de dados. Em alternativa, pode conceder acesso a áreas de trabalho individuais utilizando funções RBAC do Azure. Os utilizadores com permissões do Azure RBAC para áreas de trabalho do Microsoft Sentinel podem executar blocos de notas nessas áreas de trabalho na camada do lago de dados. Para obter mais informações, veja Funções e permissões no Microsoft Sentinel.

Opcionalmente, o âmbito do Microsoft Sentinel ou o RBAC ao nível da linha podem ser configurados para restringir ainda mais o acesso aos dados num 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 o âmbito do Microsoft Sentinel (RBAC ao nível de linha) (pré-visualização).

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. A identidade gerida do data lake é uma identidade gerida atribuída pelo sistema denominada msg-resources-<guid>. Selecione a identidade gerida e, em seguida, selecione Selecionar.
  7. Selecione Rever 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 o Visual Studio Code e a extensão Microsoft Sentinel

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

A extensão Microsoft Sentinel do 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. Procurar por 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 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 do 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 escalões 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 iniciar sessão na extensão Microsoft Sentinel, siga estes passos:

  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 início de sessão.

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

    Se tiver várias contas de convidado associadas à sua sessão, pode alternar entre contas sem interrupções. Para alternar entre contas, selecione o nome da conta na parte inferior esquerda da janela do 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 de iniciar sessão, a extensão Sentinel apresenta 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 o agendamento de trabalhos de cadernos, consulte Criar e gerir trabalhos e horários 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 ecrã da extensão Sentinel mostrando as tabelas Lake e os Jobs no painel esquerdo e os metadados da tabela selecionada.

Criar um novo bloco de notas

Para criar um novo bloco de notas 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 Ficheiro > Novo Ficheiro e, em seguida, selecione Jupyter Notebook na lista pendente.
    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 fornece a conclusão de código IntelliSense tanto para a classe MicrosoftSentinelProvider como para os nomes das tabelas no lago de dados.

  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 ecrã a mostrar como executar uma célula do bloco de notas.

  6. Selecione Microsoft Sentinel na lista para obter uma lista de conjuntos de runtime. Uma captura de ecrã do seletor de runtime.

  7. Selecione Médio para executar o notebook no conjunto de tempos de execução de dimensão média. Para mais informações sobre os diferentes tempos de execução, consulte Selecionar o pool de tempo de execução apropriado. Captura de ecrã a mostrar o seletor do tamanho do conjunto de execução.

Nota

Selecionar o kernel inicia a sessão do Spark e executa o código no bloco de notas. Depois de selecionar o pool, pode demorar entre 3 e 5 minutos para a sessão começar. As execuções subsequentes são executadas mais rapidamente, uma vez que 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 blocos de notas de exemplo que demonstram como interagir com o data lake do Microsoft Sentinel, consulte Blocos de notas de exemplo para o data lake do Microsoft Sentinel.

Monitorizar o estado do portátil a partir da barra de estado

A barra de estado 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 estado inclui as seguintes informações:

  • A percentagem de utilização de vCore para o agrupamento do Spark selecionado. Passe o cursor sobre a percentagem para ver o número de vCores utilizados e o número total de vCores disponíveis no conjunto. As percentagens representam a utilização atual em cargas de trabalho interativas e de trabalhos para a conta com sessão iniciada.

  • O estado da ligação da sessão do Spark, por exemplo Connecting, Connectedou Not Connected.

Captura de ecrã a mostrar a barra de estado 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 estado da ligação na barra de estado na parte inferior do bloco de notas. Escolha uma das 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.

Utilize 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 blocos de notas de exemplo do Microsoft Sentinel data lake e guarde-o na sua pasta de blocos de notas para dar contexto ao GitHub Copilot. O GitHub Copilot poderá então sugerir completamentos 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 classe MicrosoftSentinelProvider faz parte do módulo sentinel_lake.providers e fornece métodos para interagir com o data lake. Para ligar o seu caderno Spark às tabelas de data lake do Microsoft Sentinel, importe a classe e crie uma instância usando uma spark sessão. O código seguinte inicializa o fornecedor de dados do Sentinel Lake para que o portátil possa consultar tabelas 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 grupo de tempo de execução adequado

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.

Conjunto de tempo de execução Casos de Utilização Recomendados Características
Pequeno 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.
Média Tarefas ETL com associações, agregações e preparação de modelos de ML.
Cargas de trabalho moderadas com transformações complexas.
Desempenho melhorado em relação ao Small.
Processa o paralelismo e operações moderadas de memória intensiva.
Grande 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.

Nota

Quando acedido pela primeira vez, as opções de kernel podem demorar cerca de 30 segundos a carregar.
Após selecionar um grupo de runtime, a sessão pode demorar entre 3 e 5 minutos a iniciar.

Ver mensagens, registos e erros

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

  1. O painel Saída.

    1. No painel Saída, selecione Microsoft Sentinel na lista pendente.
    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 do estado de execução, indicadores de progresso e notificações de erro relacionadas com o código na célula anterior

  3. Uma notificação emergente no canto inferior direito do Visual Studio Code, também conhecida por mensagem toast, apresenta alertas e atualizações em tempo real sobre o estado das operações no caderno 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.

    Captura de ecrã a mostrar uma mensagem de alerta e uma mensagem de erro em linha.

Criar e gerir tarefas e agendamentos de notebooks

Pode agendar tarefas para serem executadas em horas ou intervalos específicos com a extensão do Microsoft Sentinel para o Visual Studio Code. Os trabalhos permitem automatizar o processamento de dados para sumarizar, transformar ou analisar os dados no data lake do Microsoft Sentinel. Os trabalhos também são utilizados para processar dados e gravar os 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 dos 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 no nível de analítica 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 eliminar tabelas e colunas nos registos do Azure Monitor
Tempo limite do WebSocket 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 ficam em fila de espera
Máximo de utilizadores em simultâneo na consulta interativa 8-10 no Conjunto 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 estado da sessão na parte inferior do 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 suportadas na consulta ao data lake. As instalações do Pip ou bibliotecas personalizadas não são suportadas.
Vs Code UX limit to display records (Limite de UX do VS Code para apresentar registos) 100 000 linhas

Resoluçã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.