Um dos pilares do Microsoft Sentinel data lake é sua capacidade de executar análises complexas através de um motor de processamento baseado em Apache Spark. Para engenheiros de segurança (SecOps) e especialistas em dados, trabalhar com Jupyter notebooks no Visual Studio Code é uma prática comum para extrair insights, mas a tarefa de manipular DataFrames pode se tornar um processo iterativo, denso e propenso a erros quando feita inteiramente via código.
O uso da extensão Data Wrangler transforma essa experiência ao permitir a visualização intuitiva e o refinamento ágil dos dados, permitindo que você aplique transformações e exporte o código gerado de volta para o seu notebook. Nesta análise, exploramos como integrar essa ferramenta ao ecossistema do Microsoft Sentinel.
O Cenário Prático
A necessidade técnica é clara: processar dados brutos do log SigninLogs para uso posterior em algoritmos de ML ou investigação. O desafio recorrente envolve a limpeza de dados — tratar valores ausentes, aplicar filtros, realizar renaming de colunas e criar variáveis categóricas — tudo sem perder a rastreabilidade do que está sendo executado.
A Conexão com o Data Lake
Para iniciar, é fundamental utilizar a classe MicrosoftSentinelProvider do módulo sentinel_lake.providers. Esta classe abstrai a complexidade do acesso ao Spark session (spark), expondo métodos nativos para read_table e save_as_table.
from sentinel_lake.providers import MicrosoftSentinelProvider
from pyspark.sql.functions import col, from_json
from pyspark.sql.types import StructType, StructField, StringType, IntegerType
import pandas as pd
from datetime import datetime, timedelta
one_month_ago = datetime.now() - timedelta(days=30)
workspaceName = "YOUR_WORKSPACE_NAME"
sentinel_provider = MicrosoftSentinelProvider(spark)
Ao lidar com tipos complexos (como LocationDetails ou Status), o uso de StructType no PySpark é vital para estruturar os dados de forma que possam ser consumidos eficientemente em um DataFrame plano, facilitando as etapas de Wrangle.
Visualizando e Wrangling
Após a definição do DataFrame, o Data Wrangler entra em cena. Embora o MicrosoftSentinelProvider retorne um PySpark DataFrame, a conversão para Pandas via .toPandas() é o gatilho para habilitar as funcionalidades visuais e estatísticas da extensão.
A função "Show column insights" oferece uma visão imediata da distribuição dos dados, facilitando a identificação de anomalias, como percentual de falhas em acesso condicional ou concentração de eventos de rede em IPs específicos.
Operações de Limpeza
O Data Wrangler opera em um ambiente sandbox, permitindo testar operações sem afetar o objeto original. As etapas comuns incluem:
- Filtragem de registros: Remoção de comportamentos inválidos com critérios visuais diretos.
- One-Hot Encoding: Criação de colunas binárias, crucial para algoritmos de aprendizado de máquina.
- Renomeação e preenchimento: Tratamento de valores
nulloumissingpara padronizar o dataset antes da ingestão em algoritmos. - Integração com Copilot: A possibilidade de utilizar prompts em linguagem natural para gerar operações ajuda na descoberta de funções, embora a revisão do código gerado seja mandatória.
Exportação de Código para o Notebook
O maior valor estratégico aqui é a automação da documentação e da reprodutibilidade. Ao clicar em "Export to notebook", a ferramenta gera o bloco de código correspondente a todas as operações de limpeza realizadas:
def clean_signin_info(df):
# Filter rows based on column: 'UserType'
df = df[~(df["UserType"] == "-1")]
# ... (demais etapas)
return df
signin_events_pandas_df = signin_events_df.toPandas()
cleaned_signin_events_df = clean_signin_info(signin_events_pandas_df)
Esta abordagem não apenas economiza tempo, mas garante que o pipeline de dados seja limpo, modular e de fácil leitura para outros membros da equipe engenharia.
Conclusão para Empresas Brasileiras
Para times operando em multi-cloud ou ambientes híbridos com Microsoft Sentinel, essa ferramenta reduz significativamente o time-to-insight. Ao remover a fricção da codificação manual, permitimos que analistas de SOC foquem na estratégia de detecção em vez de gastar horas em debugging de sintaxe no Spark. A eficiência operacional aqui é direta: menos código para manter, menos complexidade visual e maior rapidez na resposta a incidentes complexos.
Artigo originalmente publicado em Azure Updates - Latest from Azure Charts.