Criar lógica com o Expression Builder
Com o criador de expressões, é possível analisar e modificar resultados JSON para uso em ações subsequentes. O criador de expressões gera várias funções de transformação dinâmica que podem ser encadeadas, visualizadas e testadas, proporcionando uma experiência interativa para transformar e analisar resultados de ações brutas.
Depois de selecionar um marcador de posição para o parâmetro na ação do playbook, use os resultados JSON. Esses resultados oferecem informações abrangentes retornadas pela ação, que podem ser usadas em ações e fluxos subsequentes do playbook. Para mais detalhes, consulte Casos de uso do criador de expressões.
Acessar o Criador de Expressões
Este exemplo demonstra dados potenciais e não reflete resultados em tempo real. Os dados reais podem ser diferentes e conter mais ou menos campos. Se um analista souber de outros campos que serão retornados durante a execução, ele poderá inserir o caminho da chave correspondente no campo sintaxe.
Funções
Há suporte para as seguintes funções de pipe:
- Primeiro (x): retorna os primeiros elementos X de uma matriz.
Exemplo:alerts | First(2)(sealertsfor[{"id": "A"}, {"id": "B"}, {"id": "C"}], retorna[{"id": "A"}, {"id": "B"}]) - Last (x): retorna os últimos X elementos de uma matriz.
Exemplo:alerts | Last(1)(sealertsfor[{"id": "A"}, {"id": "B"}, {"id": "C"}], retorna[{"id": "C"}]) - Min (KeyPath): retorna o item com o valor mínimo de uma matriz. Se um parâmetro "keyPath" for fornecido, ele vai retornar o objeto com o valor mínimo no caminho especificado.
Exemplo:alerts | Min("score")(sealertscontiver uma lista de objetos com um camposcore, vai retornar o objeto com a menor pontuação) - Max (KeyPath): retorna o item com o valor máximo de uma matriz. Se um parâmetro keyPath for fornecido, ele vai retornar o objeto com o valor máximo no caminho especificado.
Exemplo:alerts | Max("score"). Sealertscontiver uma lista de objetos com um camposcore, vai retornar o objeto com a maior pontuação. - Filter (ConditionKey, Operator, Value): filtra uma matriz de objetos, retornando apenas os que correspondem a uma condição em um campo especificado.
- ConditionKey: o campo em cada objeto a ser avaliado em relação à condição.
- Operador: operador a ser usado para a condição.
- Para entrada de string:
=,!=,in,not in. - Para entrada de número/data:
=,!=,>,>=,<,<=. - Valor: valor a ser verificado na condição.
Exemplo:alerts | Filter("severity", "=", "HIGH")(retorna todos os alertas em que o camposeverityé "ALTA") -
dateFormat ("pattern"): formata uma string de data. Use o parâmetro "pattern" para descrever o formato da string de data de entrada. A função padroniza a data para o seguinte formato:
YYYY-MM-DD hh:mm:ss.
Exemplo:timestamp_field | dateFormat("yyyy/MM/ddTHH:mm:ss")(setimestamp_fieldfor "2024/07/20T10:00:00Z", vai retornar "2024-07-20 10:00:00")Tokens de padrão compatíveis:
- Ano:
yyyy(4 dígitos),yy(2 dígitos),y(1 ou 2 dígitos). - Mês:
MM(01 a 12),M(1 a 12),MMMM(nome completo),MMM(abreviado). - Dia:
dd(01 a 31),d(1 a 31),dddd(nome completo do dia),ddd(abreviado). - Hora:
HH(24 horas, 00-23),H(24 horas, 0-23),hh(12 horas, 01-12),h(12 horas, 1-12). - Minuto:
mm(00-59),m(0-59). - Segundo:
ss(00-59),s(0-59). - Fração de segundos:
fffouFFF. - Fuso horário:
zzz(por exemplo,-08:00),zz,z. - AM/PM:
tt(AM/PM),t(A/P).
- Ano:
-
Count (): retorna o número de itens na matriz de entrada.
Exemplo:alerts | Count()(sealertsfor uma matriz com 4 elementos, retorna 4) -
OrderBy ("keyPath", "direction"): ordena uma matriz de objetos com base nos valores de um caminho de chave especificado.
Exemplo:alerts | OrderBy("score", "DESC")(ordena a matrizalertsporscoreem ordem decrescente) -
toLower (): converte uma entrada em caracteres minúsculos.
Exemplo:status_field | toLower()(sestatus_fieldfor "OPEN", vai retornar "open") -
toUpper (): converte uma entrada em caracteres maiúsculos.
Exemplo:severity_field | toUpper()(seseverity_fieldfor "high", retorna "HIGH") -
Replace ("x", "y"): substitui uma substring em uma string por outra.
Exemplo:message_field | Replace("World", "Universe")(semessage_fieldfor "Hello World", retorna "Hello Universe") -
Distinct (): remove valores duplicados de uma matriz. Para matrizes de objetos, realiza uma comparação detalhada para identificar objetos duplicados.
Exemplo:[10, 20, 30, 20, 40] | Distinct()(retorna[10, 20, 30, 40]) -
getByIndex ("index"): recebe itens de uma matriz por um índice especificado ou uma lista de índices.
Exemplo:alerts | getByIndex("0")(retorna o primeiro elemento da matrizalerts)
Exemplo:alerts | getByIndex("0,2")(retorna o primeiro e o terceiro elementos da matrizalerts) -
split ("delimiter"): divide uma string em uma matriz de substrings usando um delimitador especificado.
Exemplo:"tag1,tag2,tag3" | split(",")(retorna["tag1", "tag2", "tag3"]) -
join ("delimiter"): concatena uma matriz de strings em uma única string, usando um delimitador especificado.
Exemplo:["malware", "critical"] | join(" & ")(retorna "malware & critical") -
trim (): remove os espaços em branco à esquerda e à direita de uma string.
Exemplo:" hello world " | trim()(retorna "hello world") -
trimChars ("characters"): remove os caracteres especificados do início e do fim de uma string. Os espaços em branco à esquerda e à direita são sempre removidos, mesmo que não sejam especificados explicitamente.
Exemplo:"--TEST--ABC--" | trimChars("-")(retorna "TEST--ABC") -
substring (start, end): extrai uma substring de uma string usando um índice inicial especificado e um índice final opcional.
Exemplo:"Hello World" | substring(0, 5)(retorna "Hello")
Exemplo:"Hello World" | substring(6)(retorna "World") -
incrementValue (value): aumenta um valor numérico em uma quantidade especificada. Se nenhum valor for especificado, o valor será incrementado em 1.
Exemplo:score_field | incrementValue(5)(sescore_fieldfor 90, retorna 95)
Exemplo:counter_field | incrementValue()(secounter_fieldfor 10, retorna 11) -
setIfEmpty ("defaultValue"): retorna o valor padrão fornecido se o valor de entrada estiver vazio.
Exemplo:optional_field | setIfEmpty("N/A")(seoptional_fieldestiver vazio, retorna "N/A". Caso contrário, retorna o valor deoptional_field) -
toUnixtime (): converte uma string de data e hora legível por humanos (por exemplo, "2014/03/12T13:37:27Z" ou "2014-03-12T13:37:27+01:00") em um carimbo de data/hora Unix, expresso em UTC.
Exemplo:"2024-07-20T10:00:00Z" | toUnixtime()(retorna 1721469600) -
ifThenElse ("operator", "comparedValue", "trueResult", "falseResult"): avalia uma condição e retorna a primeira expressão se for verdadeira. Caso contrário, retorna a segunda expressão.
Exemplo:severity_field | ifThenElse("=", "HIGH", "High Priority", "Normal Priority")(seseverity_fieldfor "HIGH", retorna "High Priority"; caso contrário, retorna "Normal Priority")
Exemplo:score_field | ifThenElse(">", "70", "Above Threshold", "Below Threshold")(sescore_fieldfor 90, retorna "Above Threshold"; sescore_fieldfor 60, retorna "Below Threshold")
Expressão
No campo "Expressão", você insere os resultados JSON com as funções e os pipes para adicionar várias funções e criar a expressão.
Executar / Resultados
Depois de preencher o Criador de Expressões, clique em Executar para exibir os resultados com base nos dados de amostra JSON mostrados no Criador de Expressões.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.