Aplica-se a
scope.record_types define em que é que uma regra dispara.
Deixar o campo de fora mantém a regra apenas para transações. Todas as regras escritas antes de existirem eventos comportam-se exatamente como antes, e uma regra nunca passa a corresponder a inícios de sessão só porque o seu âmbito ficou vazio.
"__current__" significa “o mesmo valor que o evento avaliado”. É assim que uma regra diz por sujeito, por dispositivo ou por ronda sem indicar um em concreto.
Os registos sem o valor agrupado nunca são agrupados em conjunto. Um evento sem impressão digital de dispositivo não é “o mesmo dispositivo” que outros eventos sem uma, e um evento que não indica sujeito não é “o mesmo sujeito” que outros eventos anónimos. Quando o evento avaliado não tem valor para um campo "__current__", essa agregação não corresponde, seja qual for o seu operador.
Campos de eventos
As condições leem caminhos com espaço de nomes. O vocabulário de transações que já conhece (action_type, subject_vendor_data, subject_ip_country, custom_values.<key>) também é resolvido num evento.
Os sinais do sujeito são guardados em cache no utilizador monitorizado e não são recalculados por evento. Assim, uma regra pode lê-los à velocidade da ingestão.
Agregações
Velocidade
Os redutores que já usa em transações -count, sum, avg, min, max, distinct_count - sobre uma window deslizante (30m, 24h, 7d, 30d).
Rácio
Dois redutores sobre a mesma janela. É assim que se expressam as taxas de apostas face a depósitos, de levantamentos face a depósitos, de bónus face a depósitos e de chargebacks.Um rácio sem denominador nunca corresponde. Sem depósitos não é um rácio de zero, é ausência de evidência, e disparar nesse caso assinalaria todos os utilizadores recém-registados.
Sequência
Predicados ordenados dentro de uma janela. Cada passo corresponde aaction_type, event_category ou a um filtro match arbitrário, e pode exigir min_count ocorrências antes de a sequência avançar.
Correlação
Uma junção entre sujeitos: reduz sobre todos os eventos que partilham o grupo deste evento."pair": true corresponde às duas extremidades como um conjunto não ordenado. Assim, A→B e B→A caem no mesmo grupo, o que permite que uma regra veja as duas metades de um conluio. Chip dumping, apostas opostas e autorreferenciação de afiliados têm todos esta forma.
Numa regra de correlação, defina sempre filters que a restrinjam. Sem eles, a regra considera todos os eventos da janela.
Regras em tempo real e assíncronas
Algumas regras podem responder dentro do pedido de ingestão e outras não.
Um evento cujas regras ainda estão pendentes é devolvido com
"correlation_pending": true. O estado e a pontuação são atualizados no próprio evento quando o processamento assíncrono termina. Voltar a executar é idempotente, pelo que uma regra nunca aplica a sua pontuação duas vezes.
Esta separação é intencional: uma consulta de anel entre sujeitos não pode fazer um início de sessão esperar.
Ações
O mesmo vocabulário de ações das regras de transação:add_score, change_status, add_tags, add_note, add_to_list, open_case.
Há duas diferenças nos eventos:
change_statusparaAWAITING_USERé um resultado exclusivo de transações (não existe um fluxo de remediação de eventos) e é aplicado comoIN_REVIEW.open_caseassocia o caso ao sujeito e não a uma transação, e regista no caso o identificador do evento correspondente.
Evidência
Cada correspondência guarda o que foi observado: a janela de agregação, o valor calculado, o valor esperado, os identificadores de eventos amostrados e a origem de cada campo correspondente.
Por isso, um analista consegue distinguir um IP registado pelo servidor de uma indicação fornecida pelo cliente antes de agir sobre uma correspondência. A consola mostra a origem ao lado de cada campo correspondente no painel lateral do evento.
Exemplos práticos
Branqueamento com jogo mínimo
Branqueamento com jogo mínimo
Depósito, jogo com tokens, levantamento rápido. Condição
event.action_type eq withdrawal_requested, mais o rácio aposta/depósito indicado acima, com lte 0.1 em 24h.Fraude amigável
Fraude amigável
Rácio entre
count(chargeback_opened) e count(deposit_completed) por sujeito ao longo de 30d, gte 0.5. Agrupe por event.payment.payment_fingerprint em vez de por sujeito para detetar um mesmo instrumento de pagamento em várias contas.Esvaziamento após tomada de controlo da conta
Esvaziamento após tomada de controlo da conta
A sequência
ato_drain indicada acima, com add_score 90 e change_status DECLINED.Dumping de fichas
Dumping de fichas
A correlação de pares indicada acima. Aumente
value para o montante relevante para as suas mesas e adicione event.gameplay.game_id a group_by para manter os jogos separados.Jogo com bots e assistência em tempo real
Jogo com bots e assistência em tempo real
Condições sobre
event.action_type eq bot_signal_observed, event.bot.timing_variance_ms lte 10 e event.device.bot_score gte 90, com add_tags. Combine com um distinct_count de event.device.fingerprint por IP para identificar um conjunto de dispositivos e não um único script.Contornar a autoexclusão
Contornar a autoexclusão
Condição sobre
event.action_type eq self_exclusion_match e event.payload.re_registration_attempt eq true, escalando através de open_case.Próximos passos
Ingestão de eventos
O envelope, as dez categorias e o contrato de lote.
API de regras
Criar, atualizar e testar regras retrospetivamente de forma programática.