Migrar regras de deteção do Splunk para o Microsoft Sentinel
As regras de deteção do Splunk são componentes de gerenciamento de eventos e informações de segurança (SIEM) que se comparam às regras de análise no Microsoft Sentinel. Este artigo descreve os conceitos para identificá-los, compará-los e migrá-los para o Microsoft Sentinel. A melhor maneira é começar com a experiência de migração SIEM, que identifica regras de análise prontas para uso (OOTB) para traduzir automaticamente.
Se você quiser migrar sua implantação do Splunk Observability, saiba mais sobre como migrar do Splunk para os Logs do Azure Monitor.
Regras de auditoria
O Microsoft Sentinel usa análises de aprendizado de máquina para criar incidentes acionáveis e de alta fidelidade. Algumas das suas deteções existentes do Splunk podem ser redundantes no Microsoft Sentinel, por isso não as migre todas cegamente. Analise estas considerações à medida que identifica as regras de deteção existentes.
- Certifique-se de selecionar casos de uso que justifiquem a migração de regras, considerando a prioridade e a eficiência do negócio.
- Verifique se você entende os tipos de regras do Microsoft Sentinel.
- Verifique se você entende a terminologia da regra.
- Analise regras desatualizadas que não tenham alertas nos últimos 6 a 12 meses e determine se elas ainda são relevantes.
- Elimine ameaças ou alertas de baixo nível que você ignora rotineiramente.
- Confirme as fontes de dados conectadas e revise seus métodos de conexão de dados. O Microsoft Sentinel Analytics exige que o tipo de dados esteja presente no espaço de trabalho do Log Analytics antes que uma regra seja habilitada. Revisite as conversas de coleta de dados para garantir a profundidade e a amplitude dos dados nos casos de uso que você planeja detetar. Em seguida, use a experiência de migração do SIEM para garantir que as fontes de dados sejam mapeadas adequadamente.
Migrar regras
Depois de identificar as deteções do Splunk a serem migradas, revise estas considerações para o processo de migração:
- Compare a funcionalidade existente das regras de análise OOTB do Microsoft Sentinel com seus casos de uso atuais. Use a experiência de migração SIEM para ver quais deteções do Splunk são convertidas automaticamente em modelos OOTB.
- Traduza deteções que não estão alinhadas às regras de análise OOTB. A melhor maneira de traduzir as deteções do Splunk automaticamente é com a experiência de migração SIEM.
- Descubra mais algoritmos para seus casos de uso explorando recursos da comunidade, como o SOC Prime Threat Detection Marketplace.
- Traduza manualmente as deteções se as regras incorporadas não estiverem disponíveis ou não forem traduzidas automaticamente. Crie as novas consultas KQL e revise o mapeamento de regras.
Para obter mais informações, consulte Práticas recomendadas para migrar regras de deteção.
Etapas de migração de regras
Verifique se você tem um sistema de teste em vigor para cada regra que deseja migrar.
Prepare um processo de validação para suas regras migradas, incluindo cenários de teste completos e scripts.
Certifique-se de que sua equipe tenha recursos úteis para testar suas regras migradas.
Confirme se você tem as fontes de dados necessárias conectadas e revise seus métodos de conexão de dados.
Verifique se suas deteções estão disponíveis como modelos OOTB no Microsoft Sentinel:
Use a experiência de migração SIEM para automatizar a tradução e a instalação dos modelos OOTB.
Para obter mais informações, consulte Usar a experiência de migração do SIEM.
Se você tiver casos de uso não refletidos nas deteções, crie regras para seu próprio espaço de trabalho com modelos de regras OOTB.
No Microsoft Sentinel, vá para o hub de conteúdo.
Filtrar Tipo de conteúdo para modelos de regras do Google Analytics.
Encontre e instale/atualize cada solução de hub de conteúdo correspondente ou modelo de regra de análise independente.
Para obter mais informações, consulte Detetar ameaças prontas para uso.
Se você tiver deteções que não são cobertas pelas regras OOTB do Microsoft Sentinel, primeiro tente a experiência de migração SIEM para tradução automática.
Se nem as regras OOTB nem a migração SIEM traduzirem completamente a deteção, crie a regra manualmente. Nesses casos, use as seguintes etapas para criar sua regra:
Identifique as fontes de dados que você deseja usar em sua regra. Identifique as tabelas do Microsoft Sentinel que você deseja consultar criando uma tabela de mapeamento entre fontes de dados e tabelas de dados.
Identifique quaisquer atributos, campos ou entidades em seus dados que você deseja usar em suas regras.
Identifique os critérios e a lógica da regra. Nesta etapa, considere encontrar modelos de regras como exemplos de como construir suas consultas KQL.
Considere filtros, regras de correlação, listas ativas, conjuntos de referências, listas de observação, anomalias de deteção, agregações e assim por diante. Você pode usar referências fornecidas pelo SIEM herdado para entender a melhor forma de mapear a sintaxe da consulta.
Identifique a condição de gatilho e a ação da regra e, em seguida, construa e revise sua consulta KQL. Ao revisar sua consulta, considere os recursos de orientação de otimização do KQL.
Teste a regra com cada um dos seus casos de uso relevantes. Se não fornecer os resultados esperados, revise e edite o KQL e teste-o novamente.
Quando estiver satisfeito, considere a regra migrada. Crie um manual para sua ação de regra, conforme necessário. Para obter mais informações, consulte Automatizar a resposta a ameaças com playbooks no Microsoft Sentinel.
Saiba mais sobre as regras de análise:
- Crie regras de análise personalizadas para detetar ameaças. Use o agrupamento de alertas para reduzir a fadiga do alerta agrupando alertas que ocorrem dentro de um determinado período de tempo.
- Mapeie campos de dados para entidades no Microsoft Sentinel para permitir que os engenheiros SOC definam entidades como parte das evidências a serem rastreadas durante uma investigação. O mapeamento de entidades também possibilita que os analistas SOC aproveitem um [gráfico de investigação] intuitivo (investigate-cases.md#use-the-investigation-graph-to-deep-dive) que pode ajudar a reduzir o tempo e o esforço.
- Investigue incidentes com dados UEBA, como um exemplo de como usar evidências para exibir eventos, alertas e quaisquer marcadores associados a um incidente específico no painel de visualização de incidentes.
- Kusto Query Language (KQL), que você pode usar para enviar solicitações somente leitura para seu banco de dados do Log Analytics para processar dados e retornar resultados. O KQL também é usado em outros serviços da Microsoft, como o Microsoft Defender for Endpoint e o Application Insights.
Comparar terminologia de regras
Esta tabela ajuda você a esclarecer o conceito de uma regra baseada em Kusto Query Language (KQL) no Microsoft Sentinel em comparação com uma deteção Splunk baseada em Search Processing Language (SPL).
Splunk | Microsoft Sentinel | |
---|---|---|
Tipo de regra | • Agendado • Em tempo real |
• Consulta agendada • Fusão • Segurança Microsoft • Análise de Comportamento de Machine Learning (ML) |
Critérios | Definir em SPL | Definir em KQL |
Condição do gatilho | • Número de resultados • Número de anfitriões • Número de fontes • Personalizado |
Limite: Número de resultados da consulta |
Ação | • Adicionar aos alertas acionados • Registrar evento • Resultados de saída para pesquisa • E muito mais |
• Criar alerta ou incidente • Integra-se com Aplicativos Lógicos |
Mapear e comparar exemplos de regras
Use esses exemplos para comparar e mapear regras do Splunk para o Microsoft Sentinel em vários cenários.
Comandos de pesquisa comuns
Comando SPL | Description | Operador KQL | Exemplo de KQL |
---|---|---|---|
chart/ timechart |
Retorna resultados em uma saída tabular para gráficos de séries temporais. | operador de renderização | … | render timechart |
dedup |
Remove resultados subsequentes que correspondem a um critério especificado. | • distinto • resumir |
… | summarize by Computer, EventID |
eval |
Calcula uma expressão. Saiba mais sobre comandos comunseval . |
estender | T | extend duration = endTime - startTime |
fields |
Remove campos dos resultados da pesquisa. | • Projeto • Projeto Fora |
T | project cost=price*quantity, price |
head/tail |
Devolve o primeiro ou o último N resultados. | Início | T | top 5 by Name desc nulls last |
lookup |
Adiciona valores de campo de uma fonte externa. | • dados externos • pesquisa |
Exemplo de KQL |
rename |
Renomeia um campo. Use curingas para especificar vários campos. | projeto-renomear | T | project-rename new_column_name = column_name |
rex |
Especifica nomes de grupos usando expressões regulares para extrair campos. | corresponde regex | … | where field matches regex "^addr.*" |
search |
Filtra os resultados para resultados que correspondem à expressão de pesquisa. | search | search "X" |
sort |
Classifica os resultados da pesquisa pelos campos especificados. | sort | T | sort by strlen(country) asc, price desc |
stats |
Fornece estatísticas, opcionalmente agrupadas por campos. Saiba mais sobre comandos comuns de estatísticas. | resumir | Exemplo de KQL |
mstats |
Semelhante às estatísticas, usadas em métricas em vez de eventos. | resumir | Exemplo de KQL |
table |
Especifica quais campos devem ser mantidos no conjunto de resultados e retém dados em formato tabular. | projeto | T | project columnA, columnB |
top/rare |
Exibe os valores mais ou menos comuns de um campo. | Início | T | top 5 by Name desc nulls last |
transaction |
Agrupa os resultados da pesquisa em transações. Exemplo de SPL |
Exemplo: row_window_session | Exemplo de KQL |
eventstats |
Gera estatísticas de resumo a partir de campos em seus eventos e salva essas estatísticas em um novo campo. Exemplo de SPL |
Exemplos: • aderir • make_list • MV-Expandir |
Exemplo de KQL |
streamstats |
Encontre a soma cumulativa de um campo. Exemplo de SPL: ... | streamstats sum(bytes) as bytes _ total \| timechart |
row_cumsum | ...\| serialize cs=row_cumsum(bytes) |
anomalydetection |
Encontre anomalias no campo especificado. Exemplo de SPL |
series_decompose_anomalies() | Exemplo de KQL |
where |
Filtra os resultados da pesquisa usando eval expressões. Usado para comparar dois campos diferentes. |
em que | T | where fruit=="apple" |
lookup
comando: exemplo KQL
Users
| where UserID in ((externaldata (UserID:string) [
@"https://storageaccount.blob.core.windows.net/storagecontainer/users.txt"
h@"?...SAS..." // Secret token to access the blob
])) | ...
stats
comando: exemplo KQL
Sales
| summarize NumTransactions=count(),
Total=sum(UnitPrice * NumUnits) by Fruit,
StartOfMonth=startofmonth(SellDateTime)
mstats
comando: exemplo KQL
T | summarize count() by price_range=bin(price, 10.0)
transaction
comando: exemplo SPL
sourcetype=MyLogTable type=Event
| transaction ActivityId startswith="Start" endswith="Stop"
| Rename timestamp as StartTime
| Table City, ActivityId, StartTime, Duration
transaction
comando: exemplo KQL
let Events = MyLogTable | where type=="Event";
Events
| where Name == "Start"
| project Name, City, ActivityId, StartTime=timestamp
| join (Events
| where Name == "Stop"
| project StopTime=timestamp, ActivityId)
on ActivityId
| project City, ActivityId, StartTime,
Duration = StopTime – StartTime
Use row_window_session()
para calcular valores de início de sessão para uma coluna em um conjunto de linhas serializado.
...| extend SessionStarted = row_window_session(
Timestamp, 1h, 5m, ID != prev(ID))
eventstats
comando: exemplo SPL
… | bin span=1m _time
|stats count AS count_i by _time, category
| eventstats sum(count_i) as count_total by _time
eventstats
comando: exemplo KQL
Aqui está um exemplo com a join
declaração:
let binSize = 1h;
let detail = SecurityEvent
| summarize detail_count = count() by EventID,
tbin = bin(TimeGenerated, binSize);
let summary = SecurityEvent
| summarize sum_count = count() by
tbin = bin(TimeGenerated, binSize);
detail
| join kind=leftouter (summary) on tbin
| project-away tbin1
Aqui está um exemplo com a make_list
declaração:
let binSize = 1m;
SecurityEvent
| where TimeGenerated >= ago(24h)
| summarize TotalEvents = count() by EventID,
groupBin =bin(TimeGenerated, binSize)
|summarize make_list(EventID), make_list(TotalEvents),
sum(TotalEvents) by groupBin
| mvexpand list_EventID, list_TotalEvents
anomalydetection
comando: exemplo SPL
sourcetype=nasdaq earliest=-10y
| anomalydetection Close _ Price
anomalydetection
comando: exemplo KQL
let LookBackPeriod= 7d;
let disableAccountLogon=SignIn
| where ResultType == "50057"
| where ResultDescription has "account is disabled";
disableAccountLogon
| make-series Trend=count() default=0 on TimeGenerated
in range(startofday(ago(LookBackPeriod)), now(), 1d)
| extend (RSquare,Slope,Variance,RVariance,Interception,
LineFit)=series_fit_line(Trend)
| extend (anomalies,score) =
series_decompose_anomalies(Trend)
Comandos comuns eval
Comando SPL | Description | Exemplo de SPL | Comando KQL | Exemplo de KQL |
---|---|---|---|---|
abs(X) |
Devolve o valor absoluto de X. | abs(number) |
abs() |
abs(X) |
case(X,"Y",…) |
Usa pares de X e Y argumentos, onde os X argumentos são expressões booleanas. Quando avaliados para TRUE , os argumentos retornam o argumento correspondente Y . |
Exemplo de SPL | case |
Exemplo de KQL |
ceil(X) |
Teto de um número X. | ceil(1.9) |
ceiling() |
ceiling(1.9) |
cidrmatch("X",Y) |
Identifica endereços IP que pertencem a uma sub-rede específica. | cidrmatch ("123.132.32.0/25",ip) |
• ipv4_is_match() • ipv6_is_match() |
ipv4_is_match('192.168.1.1', '192.168.1.255') == false |
coalesce(X,…) |
Retorna o primeiro valor que não é nulo. | coalesce(null(), "Returned val", null()) |
coalesce() |
coalesce(tolong("not a number"), tolong("42"), 33) == 42 |
cos(X) |
Calcula o cosseno de X. | n=cos(0) |
cos() | cos(X) |
exact(X) |
Avalia uma expressão X usando aritmética de ponto flutuante de precisão dupla. | exact(3.14*num) |
todecimal() |
todecimal(3.14*2) |
exp(X) |
Devolve eX. | exp(3) |
exp() | exp(3) |
if(X,Y,Z) |
Se X avaliado como TRUE , o resultado é o segundo argumento Y . Se X for avaliado como FALSE , o resultado será avaliado para o terceiro argumento Z . |
if(error==200, "OK", "Error") |
iif() |
Exemplo de KQL |
isbool(X) |
Retorna TRUE se X for booleano. |
isbool(field) |
• iif() • gettype |
iif(gettype(X) =="bool","TRUE","FALSE") |
isint(X) |
Retorna TRUE se X for um inteiro. |
isint(field) |
• iif() • gettype |
Exemplo de KQL |
isnull(X) |
Retorna TRUE se X for null. |
isnull(field) |
isnull() |
isnull(field) |
isstr(X) |
Retorna TRUE se X for uma cadeia de caracteres. |
isstr(field) |
• iif() • gettype |
Exemplo de KQL |
len(X) |
Esta função retorna o comprimento do caractere de uma cadeia de caracteres X . |
len(field) |
strlen() |
strlen(field) |
like(X,"y") |
Retorna TRUE se e somente se X for como o padrão SQLite em Y . |
like(field, "addr%") |
• has • contains • startswith • corresponde regex |
Exemplo de KQL |
log(X,Y) |
Retorna o log do primeiro argumento X usando o segundo argumento Y como base. O valor padrão de Y é 10 . |
log(number,2) |
• log • log2 • log10 |
log(X) log2(X) log10(X) |
lower(X) |
Devolve o valor minúsculo de X . |
lower(username) |
abaixar | tolower(username) |
ltrim(X,Y) |
Retorna X com os caracteres no parâmetro Y cortados do lado esquerdo. A saída padrão de Y é espaços e guias. |
ltrim(" ZZZabcZZ ", " Z") |
trim_start() |
trim_start(“ ZZZabcZZ”,” ZZZ”) |
match(X,Y) |
Retorna se X corresponder ao padrão regex Y. | match(field, "^\d{1,3}.\d$") |
matches regex |
… | where field matches regex @"^\d{1,3}.\d$") |
max(X,…) |
Devolve o valor máximo numa coluna. | max(delay, mydelay) |
• max() • arg_max() |
… | summarize max(field) |
md5(X) |
Retorna o hash MD5 de um valor X de cadeia de caracteres. |
md5(field) |
hash_md5 |
hash_md5("X") |
min(X,…) |
Devolve o valor mínimo numa coluna. | min(delay, mydelay) |
• min_of() • min() • arg_min |
Exemplo de KQL |
mvcount(X) |
Devolve o número (total) de X valores. |
mvcount(multifield) |
dcount |
…| summarize dcount(X) by Y |
mvfilter(X) |
Filtra um campo de vários valores com base na expressão booleana X . |
mvfilter(match(email, "net$")) |
mv-apply |
Exemplo de KQL |
mvindex(X,Y,Z) |
Retorna um subconjunto do argumento de vários valores X de uma posição inicial (baseada em zero) Y para Z (opcional). |
mvindex( multifield, 2) |
array_slice |
array_slice(arr, 1, 2) |
mvjoin(X,Y) |
Dado um campo X de vários valores e delimitador Y de cadeia de caracteres , e une os valores individuais do uso Y do X . |
mvjoin(address, ";") |
strcat_array |
Exemplo de KQL |
now() |
Retorna a hora atual, representada na hora Unix. | now() |
now() |
now() now(-2d) |
null() |
Não aceita argumentos e devoluções NULL . |
null() |
nulo | null |
nullif(X,Y) |
Inclui dois argumentos X e Y , e retorna X se os argumentos forem diferentes. Caso contrário, retorna NULL . |
nullif(fieldA, fieldB) |
iif |
iif(fieldA==fieldB, null, fieldA) |
random() |
Devolve um número pseudoaleatório entre 0 .2147483647 |
random() |
rand() |
rand() |
relative_ time(X,Y) |
Dado um especificador de tempo X de época e tempo relativo, retorna o valor de tempo de época de Y aplicado a X .Y |
relative_time(now(),"-1d@d") |
Tempo UNIX | Exemplo de KQL |
replace(X,Y,Z) |
Retorna uma cadeia de caracteres formada pela substituição de string Z para cada ocorrência de string Y de expressão regular em string X . |
Data de retorno com os números de mês e dia trocados. Por exemplo, para a 4/30/2015 entrada, a saída é 30/4/2009 :replace(date, "^(\d{1,2})/ (\d{1,2})/", "\2/\1/") |
replace() |
Exemplo de KQL |
round(X,Y) |
Devolve X arredondado para o número de casas decimais especificado por Y . O padrão é arredondar para um inteiro. |
round(3.5) |
round |
round(3.5) |
rtrim(X,Y) |
Retorna X com os caracteres de cortados Y do lado direito. Se Y não for especificado, os espaços e as guias serão cortados. |
rtrim(" ZZZZabcZZ ", " Z") |
trim_end() |
trim_end(@"[ Z]+",A) |
searchmatch(X) |
Retorna TRUE se o evento corresponder à cadeia de caracteres X de pesquisa . |
searchmatch("foo AND bar") |
IIF() | iif(field has "X","Yes","No") |
split(X,"Y") |
Retorna X como um campo de vários valores, dividido por delimitador Y . |
split(address, ";") |
split() |
split(address, ";") |
sqrt(X) |
Devolve a raiz quadrada de X . |
sqrt(9) |
sqrt() |
sqrt(9) |
strftime(X,Y) |
Retorna o valor X de tempo de época renderizado usando o formato especificado por Y . |
strftime(_time, "%H:%M") |
format_datetime() |
format_datetime(time,'HH:mm') |
strptime(X,Y) |
Dado um tempo representado por uma cadeia de caracteres X , retorna o valor analisado do formato Y . |
strptime(timeStr, "%H:%M") |
format_datetime() | Exemplo de KQL |
substr(X,Y,Z) |
Retorna um campo X de substring da posição inicial (baseado em um) Y para Z caracteres (opcionais). |
substr("string", 1, 3) |
substring() |
substring("string", 0, 3) |
time() |
Devolve o tempo do relógio de parede com resolução de microssegundos. | time() |
format_datetime() |
Exemplo de KQL |
tonumber(X,Y) |
Converte a cadeia de caracteres X de entrada em um número, onde Y (opcional, o valor padrão é 10 ) define a base do número para o qual converter. |
tonumber("0A4",16) |
toint() |
toint("123") |
tostring(X,Y) |
Descrição | Exemplo de SPL | tostring() |
tostring(123) |
typeof(X) |
Retorna uma representação de cadeia de caracteres do tipo de campo. | typeof(12) |
gettype() |
gettype(12) |
urldecode(X) |
Retorna a URL X decodificada. |
Exemplo de SPL | url_decode |
Exemplo de KQL |
case(X,"Y",…)
Exemplo de SPL
case(error == 404, "Not found",
error == 500,"Internal Server Error",
error == 200, "OK")
case(X,"Y",…)
Exemplo de KQL
T
| extend Message = case(error == 404, "Not found",
error == 500,"Internal Server Error", "OK")
if(X,Y,Z)
Exemplo de KQL
iif(floor(Timestamp, 1d)==floor(now(), 1d),
"today", "anotherday")
isint(X)
Exemplo de KQL
iif(gettype(X) =="long","TRUE","FALSE")
isstr(X)
Exemplo de KQL
iif(gettype(X) =="string","TRUE","FALSE")
like(X,"y")
Exemplo
… | where field has "addr"
… | where field contains "addr"
… | where field startswith "addr"
… | where field matches regex "^addr.*"
min(X,…)
Exemplo de KQL
min_of (expr_1, expr_2 ...)
…|summarize min(expr)
…| summarize arg_min(Price,*) by Product
mvfilter(X)
Exemplo de KQL
T | mv-apply Metric to typeof(real) on
(
top 2 by Metric desc
)
mvjoin(X,Y)
Exemplo de KQL
strcat_array(dynamic([1, 2, 3]), "->")
relative time(X,Y)
Exemplo de KQL
let toUnixTime = (dt:datetime)
{
(dt - datetime(1970-01-01))/1s
};
replace(X,Y,Z)
Exemplo de KQL
replace( @'^(\d{1,2})/(\d{1,2})/', @'\2/\1/',date)
strptime(X,Y)
Exemplo de KQL
format_datetime(datetime('2017-08-16 11:25:10'),
'HH:mm')
time()
Exemplo de KQL
format_datetime(datetime(2015-12-14 02:03:04),
'h:m:s')
tostring(X,Y)
Retorna um valor de campo como uma cadeia de X
caracteres.
- Se o valor de for um número,
X
será reformatado para um valor de cadeia deX
caracteres. - Se
X
for um valor booleano,X
é reformatado paraTRUE
ouFALSE
. - Se
X
for um número, o segundo argumentoY
é opcional e pode serhex
(converte para um hexadecimal),commas
(formatosX
com vírgulasX
X
e duas casas decimais) ouduration
(converte de um formato de hora em segundos para um formato de hora legível:HH:MM:SS
).
tostring(X,Y)
Exemplo de SPL
Este exemplo retorna:
foo=615 and foo2=00:10:15:
… | eval foo=615 | eval foo2 = tostring(
foo, "duration")
urldecode(X)
Exemplo de SPL
urldecode("http%3A%2F%2Fwww.splunk.com%2Fdownload%3Fr%3Dheader")
Exemplo de KQL de comandos comuns stats
Comando SPL | Description | Comando KQL | Exemplo de KQL |
---|---|---|---|
avg(X) |
Devolve a média dos valores do campo X . |
média() | avg(X) |
count(X) |
Devolve o número de ocorrências do campo X . Para indicar um valor de campo específico a ser correspondido, formate X como eval(field="value") . |
contagem() | summarize count() |
dc(X) |
Devolve a contagem de valores distintos do campo X . |
dcount() | …\| summarize countries=dcount(country) by continent |
earliest(X) |
Devolve o valor X cronologicamente mais antigo de . |
arg_min() | … \| summarize arg_min(TimeGenerated, *) by X |
latest(X) |
Devolve o valor X cronologicamente mais recente de . |
arg_max() | … \| summarize arg_max(TimeGenerated, *) by X |
max(X) |
Devolve o valor máximo do campo X . Se os valores de X não forem numéricos, o valor máximo será encontrado por ordem alfabética. |
máx() | …\| summarize max(X) |
median(X) |
Devolve o valor intermédio do campo X . |
percentil() | …\| summarize percentile(X, 50) |
min(X) |
Devolve o valor mínimo do campo X . Se os valores de X não forem numéricos, o valor mínimo será encontrado por ordem alfabética. |
min() | …\| summarize min(X) |
mode(X) |
Devolve o valor mais frequente do campo X . |
top-hitters() | …\| top-hitters 1 of Y by X |
perc(Y) |
Devolve o valor percentil X do campo Y . Por exemplo, perc5(total) retorna o valor do quinto percentil de um campo total . |
percentil() | …\| summarize percentile(Y, 5) |
range(X) |
Devolve a diferença entre os valores máximo e mínimo do campo X . |
intervalo() | range(1, 3) |
stdev(X) |
Devolve o desvio padrão da amostra do campo X . |
Stdev | stdev() |
stdevp(X) |
Devolve o desvio padrão da população do campo X . |
Stdevp() | stdevp() |
sum(X) |
Devolve a soma dos valores do campo X . |
soma() | sum(X) |
sumsq(X) |
Devolve a soma dos quadrados dos valores do campo X . |
||
values(X) |
Retorna a lista de todos os valores distintos do campo X como uma entrada de vários valores. A ordem dos valores é alfabética. |
make_set() | …\| summarize r = make_set(X) |
var(X) |
Devolve a variância de amostra do campo X . |
variância | variance(X) |
Próximos passos
Neste artigo, você aprendeu como mapear suas regras de migração do Splunk para o Microsoft Sentinel.