Dela via


Utföra hastighetskontroller

Händelsefrekvensen från en användare eller en enhet (till exempel ett kreditkort) kan tyda på misstänkt aktivitet och potentiellt bedrägeri. Efter att bedragarna till exempel provat några enskilda beställningar använder de ofta ett enda kreditkort för att snabbt göra många beställningar från en enda IP-adress eller enhet. De kan också använda många olika kreditkort för att snabbt göra många beställningar. Hastighetskontroller hjälper dig att identifiera dessa typer av händelsemönster. Genom att definiera hastigheter kan du titta på inkommande händelser för dessa typer av mönster och använda regler för att definiera tröskelvärden som du vill behandla mönstren som misstänkta.

Om din instans av Microsoft Dynamics 365 Fraud Protection har flera miljöer kan du definiera en hastighetsuppsättning i en specifik miljö med hjälp av miljöväxlaren. Du kan bara referera till hastighet i de regler som definieras i motsvarande miljö. Om hastighet skapas i en överordnad miljö och regeln definieras i samma miljö inkluderas transaktionerna i de underordnade miljöerna i hastigheten när regeln på överordnad nivå körs.

Definiera en hastighet

Hastighetsuppsättningar består av enskilda hastigheter. Du definierar funktioner i Dynamics 365 Bedrägeriskydd med hjälp av nyckelorden SELECT, FROM, WHEN och GROUPBY i följande struktur.

SELECT <aggregation method> AS <velocity name>
FROM <event type>
WHEN <condition>
GROUPBY <attribute name>

Kommentar

Matriser kan inte användas för GROUPBY i en hastighetsdefinition.

  • Efter SELECT anger du en aggregeringsmetod: Count, DistinctCount eller Sum. Använd sedan AS-nyckelordet för att namnge hastigheten. Det här namnet kan sedan användas för att referera till hastigheten i regler.

    Här är en förklaring av aggregeringsmetoderna.

    Sammansättningsmetod beskrivning Exempel
    Antal Den här metoden returnerar antalet gånger som en händelse har inträffat. SELECT Count() AS numPurchases
    DistinctCount Den här metoden returnerar antalet distinkta värden för den angivna egenskapen. Om den angivna egenskapen är null eller tom för en inkommande händelse bidrar händelsen inte till aggregeringen. SELECT DistinctCount(@"device.ipAddress") SOM distinctIPaddresses
    Sum Den här metoden returnerar summan av värden för en angiven numerisk egenskap. SELECT Sum(@"totalAmount") AS totalSpending
  • Efter FROM anger du en utvärderings- eller observationshändelse för att observera hastigheten på. Det här fältet som du vill observera hastighet för eller gruppera efter måste vara en del av API-anropet. Om du vill observera en hastighet mellan händelser anger du flera händelser mellan utvärderingar eller observationshändelser.

  • WHEN-instruktionen är valfri. Efter WHEN kan du skriva ett booleskt uttryck. Endast händelser som matchar villkoret beaktas i aggregeringen. Andra händelser ignoreras. Uttrycket används för att filtrera de händelser som beaktas i hastigheten.

  • Efter GROUPBY anger du en egenskap eller ett uttryck. Egenskapen eller uttrycket utvärderas sedan för varje händelse som bearbetas. Alla händelser som utvärderas till samma värde i GROUPBY-instruktionen kombineras för att beräkna den aggregering som anges i SELECT-instruktionen. Om GROUPBY-uttrycket är null eller tomt för en inkommande händelse bidrar händelsen inte till aggregeringen.

Dricks

Alla uttryck som kan användas i en regel kan också användas i en hastighet. Dessa uttryck omfattar listor och externa anrop. En fullständig lista över tillgängliga funktioner finns i språkreferensguiden.

Kommentar

Tidsfönstret som du vill observera hastigheten över anges inte i själva hastighetsdefinitionen. I stället anger du det när du refererar till hastigheten från en regel.

Exempel på hastigheter

Använd följande exempel för att skapa dina egna hastigheter.

Den summa pengar som varje användare har spenderat

SELECT Sum(@"totalAmount") AS totalSpending_perUser
FROM Purchase
GROUPBY @"user.userId"

Antalet gånger som varje IP-adress har använts för att skapa ett nytt konto

SELECT Count() AS NewAccounts_perIP
FROM AccountCreation
GROUPBY @"device.ipAddress"

För varje enhet är antalet unika användare som har loggat in

SELECT DistinctCount(@"user.userId") AS uniqueUserLogins_perDevice
FROM AccountLogin
GROUPBY @"deviceAttributes.deviceId"

För varje användare har antalet inloggningsförsök som avvisats av Bedrägeriskydd eller fått en hög riskpoäng

SELECT Count() AS loginRejections_perUser
FROM AccountLogin
WHEN @"ruleEvaluation.decision" == "Reject" or @"riskScore" > 900
GROUPBY @"user.userId"

För varje användare, antalet inköp som gjordes utanför USA och som också innehöll en produkt på en lista med hög risk

SELECT Count() AS intlHighRiskTxns_perUser
FROM Purchase
WHEN @"user.country" != "US" and ContainsKey("Risky Products", "Product ID", @"ProductList.productId")
GROUPBY @"user.userId

För varje användare är antalet unika anpassade e-postmeddelanden som använts i en utvärderings- och observationshändelse

SELECT DistinctCount(@"custom.email") AS uniqueEmails_perUser
FROM Assessment_A1, Assessment_A1:status
GROUPBY @"custom.userId"

Skapa en hastighetsuppsättning

  1. I det vänstra navigeringsfönstret i bedrägeriskyddsportalen väljer du Funktioner och sedan Ny hastighetsuppsättning.

    Bedrägeriskydd skapar ett utkast till hastighetsuppsättning som bara visas för dig (skaparen). Observera att alla ändringar som du gör i utkastet sparas automatiskt.

  2. Valfritt: I fältet Villkor anger du ett booleskt villkor. Du kan också lämna fältet tomt.

    Endast händelser som matchar det här villkoret beaktas i aggregeringen. Andra händelser ignoreras. Om du till exempel vill att hastighetsfördelningarna ska vara inställda på att endast aggregera händelser som inträffar i USA, definierar du följande villkor:

    WHEN @"user.countryRegion" == "US"

  3. Om du vill definiera en ny hastighet från grunden väljer du Ny hastighet. Information om hur du definierar hastigheter finns i avsnittet Definiera en hastighet tidigare i den här artikeln.

    Om du vill börja från en befintlig hastighetsmall väljer du pilen till höger om Ny hastighet. Om du vill visa en fullständig lista över befintliga mallar och deras innehåll väljer du Visa alla.

    Du kan lägga till upp till 10 hastigheter i en uppsättning.

  4. Om du vill publicera hastigheten väljer du Publicera.

  5. I bekräftelsedialogrutan kan du ändra hastighetens namn, beskrivning eller status. När du är klar väljer du Publicera.

När hastigheten har publicerats visas hastighetsmängderna i hastighetsuppsättningen för alla användare. När händelser flödar genom Bedrägeriskydd börjar funktionerna aggregera data.

Kommentar

När en hastighet har publicerats börjar den aggregera data från den punkten framåt. Historiska data beaktas inte.

Information om hur du använder dina funktioner för att fatta beslut finns i avsnittet Använd hastighet i regler senare i den här artikeln.

Förstå exempelfönstret

När du skapar eller redigerar en hastighetsuppsättning visas fönstret Exempel till höger på sidan.

  • Fönstret Exempel visar alla händelseegenskaper som kan refereras till i dina hastigheter. Dessa egenskaper varierar beroende på vilken typ av händelse som din hastighet observerar. Välj händelsetypen i fältet Händelse överst i fönstret.

  • Avsnittet nyttolastexempel innehåller ett exempel på de egenskaper som kan skickas i API:et för begäran för utvärderingen.

  • Exempelavsnittet för berikning innehåller ett exempel på de egenskaper som Bedrägeriskydd lägger till i din händelse efter att den första begäran har skickats. Dessa egenskaper inkluderar till exempel information från Bedrägeriskydds lösning för enhets fingeravtryck och risk- och robotpoäng från maskininlärningsmodellerna.

    Berikningsexemplet innehåller också information från regelutvärderingen, till exempel beslutet, regelnamnet och namnet på satsen som utlöstes. Du kan använda någon av dessa egenskaper i din hastighet. Använd ett vidtecken (@) för att referera till dem (till exempel @"user.firstName").

Systemdefinierade (standard)-hastigheter

Bedrägeriskydd skapar flera systemdefinierade hastigheter per miljö. Följande standardfunktioner kan till exempel läggas till.

  • Standard – e-postfunktioner
  • Standard – betalningsinstrumentens funktioner
  • Standard – IP-funktioner
  • Standard – enhets-ID-funktioner

Vissa funktioner för bedrägeriskydd förlitar sig på standardfunktionerna, till exempel sidan Sökresultat för köpskydd.

Du kan inte redigera eller ta bort systemdefinierade funktioner. Du kan dock klona dem och sedan redigera eller ta bort klonerna.

Hantera hastighetsuppsättningar

  • Om du vill redigera en befintlig publicerad hastighetsuppsättning väljer du hastigheten och väljer sedan Redigera.

    Ett utkast av din publicerade hastighet skapas och är endast synligt för dig. Alla ändringar som du gör i utkastet sparas automatiskt.

    När du är redo att skicka ändringarna till produktion väljer du Publicera. Den tidigare publicerade hastighetsuppsättningen skrivs över med dina ändringar.

    Kommentar

    Alla ändringar som du gör i en hastighet påverkar endast de värden som beräknas från den punkten framåt. De påverkar inte tidigare händelsedata.

  • Om du vill ta bort en befintlig hastighetsuppsättning väljer du ellipsen (...) och väljer sedan Ta bort.

    Kommentar

    Du kan inte ta bort en hastighetsuppsättning om någon av dess funktioner refereras till i en publicerad regel.

  • Om du vill uppdatera namnet eller beskrivningen av en hastighetsuppsättning väljer du ellipsen (...) och väljer sedan Byt namn.

  • Om du vill ändra status för hastighetsuppsättningen väljer du Aktivera eller Inaktivera.

    • Funktionerna i en hastighetsuppsättning som är markerad som Aktiv uppdateras ständigt när nya händelser flödar in i Bedrägeriskydd.
    • Funktionerna i en hastighetsuppsättning som är markerad som Inaktiv uppdateras aldrig.

Använda en hastighet i regler

Om du vill använda dina funktioner för att fatta beslut om inkommande utvärderingshändelser måste du referera till dem i dina regler. Till exempel definieras följande hastighet som en del av en hastighetsuppsättning.

SELECT Sum(@"totalAmount") AS totalSpending_perUser
FROM Purchase 
GROUPBY @"user.userId"
WHEN Velocity.totalSpending_perUser(@"user.userid", 7d) > 1000

I regeln kan du göra en hastighetskontroll med hjälp av följande syntax.

WHEN Velocity.totalSpending_perUser(@"user.userid", 7d) > 1000

Den första parametern är nyckel. Den här parametern används för att slå upp hastigheten. I föregående hastighetsdefinition för totalSpending anger GROUPBY\-@"user.userId"instruktionen att värden aggregeras för varje användar-ID som påträffas. När du refererar till hastigheten från en regel anger nyckelparametern det användar-ID som hastighetsvärdet ska hämtas för. Om nyckelparametern är null eller tom returnerar Bedrägeriskydd 0.

Den andra parametern är timeWindow. Den här parametern anger tidsfönstret som du vill observera hastigheten över. Du kan välja ett tidsfönster mellan en sekund och nittio dagar. För närvarande är följande giltiga tidsfönster:

  • [1–59]s
  • [1–59]m
  • [1–23]h
  • [1–90]d

Kommentar

Tidsfönstret börjar i början av föregående måttenhet. Om det aktuella datumet och tiden till exempel är 11:04 den 1 april 2021 och du kontrollerar en hastighet över ett tidsfönster på två timmar (2 timmar) visas data sedan 09:00, inte sedan 09:04.

Om en hastighet inte returnerar ett värde på grund av ett fel returneras standardvärdet 0 och regeln fortsätter att köras.

Funktioner uppdateras med den aktuella händelsen efter regelutvärderingen. Om du refererar till en hastighet i en regel skulle det därför inte inkludera den aktuella händelsen som bearbetas.

Funktioner kan också anropas från Functions. Mer information finns i Funktioner.

Använda regler för att visa hastighetsvärden

Förutom att returnera beslut kan regler använda observationsfunktioner som Output() för att skriva ut vissa värden till API-svaret. En användare kan till exempel skriva följande sats, som inte fattar något beslut, utan helt enkelt matar ut värdena för flera hastigheter i API-svaret.

OBSERVE Output(
    totalSpending_7d = Velocity.totalSpending_perUser(@"user.userid", 7d),
    loginsPerDevice_1m = Velocity.loginCount_perDevice(@"deviceAttributes.deviceId", 1m)
)

Varje utvärderingshändelse som utlöser den här regeln skriver sedan ut följande avsnitt i API-svaret:

"MerchantRuleOutput": {
    "clause1": {
        "totalSpending_7d": "523.99",
        "loginsPerDevice_1m": "1"
    }
},

I stället för att skriva ut hastighetsvärdena direkt till API-svaret kan du använda händelsespårning för att skicka värdena till din egen instans av Azure Event Hubs eller Azure Blob Storage. Du kan till exempel skapa följande regel.

RETURN Approve(), Trace(
    totalSpending_7d = Velocity.totalSpending_perUser(@"user.userid", 7d),
    loginsPerDevice_1m = Velocity.loginCount_perDevice(@"deviceAttributes.deviceId", 1m)
)

Om du prenumererar på händelsen FraudProtection.Trace.Rule skickas följande information som en del av varje händelse.

"attributes": {
    "totalSpending_7d": 523.99
    "loginsPerDevice_1m": 1
}

Ytterligare resurser