執行速度檢查
來自使用者或實體的事件頻率(例如信用卡)可能會指出可疑的活動和潛在的詐騙。 例如,在詐騙者嘗試幾個個別訂單之後,他們通常會使用單一信用卡,從單一IP位址或裝置快速訂購許多訂單。 他們也可以使用許多不同的信用卡來快速訂購許多訂單。 速度檢查可協助您識別這些類型的事件模式。 藉由定義速度,您可以監看這些模式類型的傳入事件,並使用規則來定義超出您想要將模式視為可疑的臨界值。
如果您的 Microsoft Dynamics 365 詐騙保護實例有多個環境,您可以使用環境切換器,在特定環境中定義速度設定。 您只能在對應環境中定義的規則中參考速度。 如果在父環境中建立速度,而且規則是在相同的環境中定義,則子環境中的交易會在父層級規則執行時包含在速度中。
定義速度
速度集合是由個別速度所組成。 您可以使用下列結構的 SELECT、FROM、WHEN 和 GROUPBY 關鍵詞,在 Dynamics 365 Fraud Protection 中定義速度。
SELECT <aggregation method> AS <velocity name>
FROM <event type>
WHEN <condition>
GROUPBY <attribute name>
注意
數位無法在速度定義中使用 GROUPBY。
在 SELECT 之後,指定匯總方法:Count、DistinctCount 或 Sum。 然後使用 AS 關鍵詞來命名速度。 此名稱接著可用來參考規則中的速度。
以下是匯總方法的說明。
匯總方法 描述 範例 計數 這個方法會傳回事件發生的次數。 SELECT Count() AS numPurchases DistinctCount 這個方法會傳回指定之屬性的相異值數目。 如果傳入事件的指定屬性為 Null 或空白,則事件不會參與匯總。 SELECT DistinctCount(@“device.ipAddress”) AS distinctIPaddresses Sum 這個方法會傳回指定數值屬性的值總和。 SELECT Sum(@“totalAmount”) AS totalSpending FROM 之後,指定要觀察速度的評量或觀察事件。 您想要觀察速度或分組依據的欄位必須是 API 呼叫的一部分。 若要觀察跨事件的速度,請跨評量或觀察事件指定多個事件。
WHEN 語句是選擇性的。 在 WHEN 之後,您可以輸入布爾運算式。 匯總中只會考慮符合條件的事件。 會忽略其他事件。 表達式是用來篩選速度中所考慮的事件。
在 GROUPBY 之後,指定屬性或表示式。 然後會針對處理的每個事件評估 屬性或表達式。 在 GROUPBY 語句中評估為相同值的所有事件都會合併,以計算 SELECT 語句中指定的匯總。 如果傳入事件的 GROUPBY 運算式為 Null 或空白,則事件不會參與匯總。
提示
任何可在規則中使用的表示式也可以用於速度。 這些表達式包括清單和外部呼叫。 如需可用函式的完整清單,請參閱 語言參考指南。
注意
您想要觀察速度超過的時間範圍未在速度定義本身中指定。 相反地,當您從規則參考速度時,請指定它。
速度的範例
使用下列範例來建立您自己的速度。
每位用戶花費的金額
SELECT Sum(@"totalAmount") AS totalSpending_perUser
FROM Purchase
GROUPBY @"user.userId"
每個IP位址用來建立新帳戶的次數
SELECT Count() AS NewAccounts_perIP
FROM AccountCreation
GROUPBY @"device.ipAddress"
針對每個裝置,已登入的唯一用戶數目
SELECT DistinctCount(@"user.userId") AS uniqueUserLogins_perDevice
FROM AccountLogin
GROUPBY @"deviceAttributes.deviceId"
針對每個使用者,詐騙保護拒絕或收到高風險分數的登入嘗試次數
SELECT Count() AS loginRejections_perUser
FROM AccountLogin
WHEN @"ruleEvaluation.decision" == "Reject" or @"riskScore" > 900
GROUPBY @"user.userId"
對於每個用戶來說,在美國以外進行的購買次數,也包含高風險清單上的產品
SELECT Count() AS intlHighRiskTxns_perUser
FROM Purchase
WHEN @"user.country" != "US" and ContainsKey("Risky Products", "Product ID", @"ProductList.productId")
GROUPBY @"user.userId
針對每個使用者,在評量和觀察事件中使用的唯一自定義電子郵件數目
SELECT DistinctCount(@"custom.email") AS uniqueEmails_perUser
FROM Assessment_A1, Assessment_A1:status
GROUPBY @"custom.userId"
建立速度集
在 [詐騙保護] 入口網站的左側導覽中,選取 [速度],然後選取 [新增速度集]。
詐騙保護會建立一個草稿速度集,只有您(建立者)才能看到。 請注意,您對草稿所做的所有變更都會自動儲存。
選擇性:在 [ 條件] 字段中,輸入布爾值條件。 或者,將欄位保留空白。
匯總中只會考慮符合此條件的事件。 會忽略其他事件。 例如,如果您想要將速度中的速度設定為只匯總 美國 中發生的事件,請定義下列條件:
WHEN @"user.countryRegion" == “US”
若要從頭開始定義新的速度,請選取 [ 新增速度]。 如需如何定義速度的資訊,請參閱 本文稍早的<定義速度 >一節。
若要從現有的速度範本開始,請選取 [新增速度] 右邊的 箭號。 若要檢視現有範本及其內容的完整清單,請選取 [ 全部查看]。
您可以在集合中新增最多10個速度。
若要發佈速度,請選取 [ 發佈]。
在確認對話框中,您可以變更速度的名稱、描述或狀態。 當您準備好時,請選取 [ 發佈]。
發佈速度之後,所有使用者都能看到速度集中的速度。 當事件流經詐騙保護時,速度會開始匯總數據。
注意
發佈速度之後,它會開始從該點向前匯總數據。 不會考慮歷程記錄數據。
如需如何使用速度來做出決策的資訊,請參閱 本文稍後的<使用規則 中的速度>一節。
瞭解範例窗格
當您建立或編輯速度集時,[ 範例 ] 窗格會出現在頁面右側。
[ 範例 ] 窗格會顯示可在速度中參考的所有事件屬性。 這些屬性會根據速度觀察到的事件類型而有所不同。 在窗格頂端的 [事件] 字段中選取事件類型。
承載 範例 區段包含可在要求 API 中傳送評估的屬性範例。
擴充 範例 區段包含詐騙保護在傳送初始要求之後新增至事件的屬性範例。 例如,這些屬性包括來自 Fraud Protection 裝置 指紋 解決方案的資訊,以及機器學習模型的風險和 Bot 分數。
擴充範例也包含規則評估中的資訊,例如決策、規則名稱,以及觸發之子句的名稱。 您可以在速度中使用任何這些屬性。 使用 at 符號 (@) 來參考它們(例如 @“user.firstName”。
系統定義的 (預設) 速度
詐騙保護會為每個環境建立數個系統定義的速度。 例如,可能會新增下列預設速度。
- 預設 -電子郵件速度
- 默認值 - 付款方式速度
- 預設值 - IP 速度
- 預設 - 裝置識別碼速度
某些詐騙保護功能依賴預設速度,例如 搜尋結果 頁面以進行購買保護。
您無法編輯或移除系統定義的速度。 不過,您可以複製它們,然後編輯或刪除複製品。
管理速度集合
若要編輯現有的已發佈速度集,請選取速度,然後選取 [ 編輯]。
系統會建立您已發佈速度的草稿,而且只對您可見。 您對草稿所做的所有變更都會自動儲存。
當您準備好將變更推送至生產環境時,請選取 [ 發佈]。 先前發佈的速度集會隨著變更覆寫。
注意
您對速度所做的任何變更只會影響從該點往前計算的值。 它們不會影響先前的事件數據。
若要刪除現有的速度集,請選取省略號 (...),然後選取 [ 刪除]。
注意
如果已發佈規則中參考任何速度,您就無法刪除速度集。
若要更新速度集的名稱或描述,請選取省略號 (...),然後選取 [ 重新命名]。
若要變更速度集的狀態,請選取 [啟用] 或 [停用]。
- 當新事件流入詐騙保護時,會持續更新標示為 作用 中之速度集內的速度。
- 標示為 非 使用中之速度集中的速度永遠不會更新。
在規則中使用速度
若要使用您的速度來決定傳入評估事件,您必須在規則中參考它們。 例如,下列速度定義為速度集的一部分。
SELECT Sum(@"totalAmount") AS totalSpending_perUser
FROM Purchase
GROUPBY @"user.userId"
WHEN Velocity.totalSpending_perUser(@"user.userid", 7d) > 1000
在您的規則中,您可以使用下列語法來執行速度檢查。
WHEN Velocity.totalSpending_perUser(@"user.userid", 7d) > 1000
第一個參數是 索引鍵。 此參數是用來查閱速度。 在上述 totalSpending 的速度定義中,GROUPBY\ @"user.userId" 語句表示將會針對遇到的每個使用者標識碼匯總值。 當您從規則參考速度時, key 參數會指定要擷取速度值的使用者標識碼。 如果密鑰參數為 Null 或空白,則 Fraud Protection 會傳回 0。
第二個參數是 timeWindow。 此參數會指定您想要觀察速度超過的時間範圍。 您可以選取一秒到九十天之間的時間範圍。 目前,以下是所有有效的時間範圍:
- [1–59]s
- [1–59]m
- [1–23]h
- [1–90]d
注意
時間範圍從上一個測量單位的開頭開始。 例如,如果目前日期和時間是 2021 年 4 月 1 日上午 11:04,而且您檢查速度超過兩小時 (2h) 時間範圍,則會看到自上午 9:00 之後的數據,而不是從上午 9:04 開始。
如果速度因為錯誤而無法傳回值,則會傳回預設值 0 ,而且您的規則會繼續執行。
在規則評估之後,速度會隨著目前事件更新。 因此,如果您參考規則中的速度,它就不會包含正在處理中的目前事件。
您也可以從 Functions 叫用速度。 如需詳細資訊,請參閱函式。
使用規則來檢視速度值
除了傳回決策之外,規則還可以使用 Output() 等觀察函式,將特定值列印至 API 回應。 例如,用戶可以撰寫下列子句,該子句不會做出決定,但只會輸出 API 回應中數個速度的值。
OBSERVE Output(
totalSpending_7d = Velocity.totalSpending_perUser(@"user.userid", 7d),
loginsPerDevice_1m = Velocity.loginCount_perDevice(@"deviceAttributes.deviceId", 1m)
)
觸發此規則的每個評量事件都會在 API 回應中列印下列區段:
"MerchantRuleOutput": {
"clause1": {
"totalSpending_7d": "523.99",
"loginsPerDevice_1m": "1"
}
},
您可以使用事件追蹤,將速度值直接列印至 API 回應,而是使用事件追蹤將值傳送至您自己的 Azure 事件中樞 或 Azure Blob 儲存體 實例。 例如,您可以建立下列規則。
RETURN Approve(), Trace(
totalSpending_7d = Velocity.totalSpending_perUser(@"user.userid", 7d),
loginsPerDevice_1m = Velocity.loginCount_perDevice(@"deviceAttributes.deviceId", 1m)
)
如果您訂閱 FraudProtection.Trace.Rule 事件,則會在每個事件中傳送下列資訊。
"attributes": {
"totalSpending_7d": 523.99
"loginsPerDevice_1m": 1
}