管理规则

Microsoft Dynamics 365 欺诈防护让你能够灵活地创建规则,这些规则使用欺诈保护最先进的人工智能(AI)模型生成的分数,以及请求有效负载中的其他参数。 根据这些输入,规则可以将评估转换为决策,例如“批准”、“拒绝”、“审阅”或“质询”。

如果欺诈保护实例有多个环境,则可以使用环境切换器管理特定环境中的规则。 如果环境具有父环境,则首先评估顶级父环境中的规则。 如果顶级父环境的规则设置设置为“运行所有匹配规则” ,直到做出决策,接下来将评估第二级父环境中的规则。 除非将环境的规则设置设置为 “仅运行第一个匹配规则”,或者直到评估父环境和当前环境的所有规则为止,否则此过程将继续执行。

定义规则:快速入门指南

规则由子句组成,由 RETURNWHEN 关键字 (keyword) 定义。 它们具有以下基本结构。

RETURN <decision>
WHEN <condition>

仅当 WHEN 语句的计算结果为 True 时,才执行 RETURN 语句。 RETURN 语句终止规则执行,必须指定有效的决策函数:批准、拒绝、质询审阅 每个决策函数还接受一个可选参数,使你能够表达 决策的原因 。 若要了解详细信息,请参阅 “决策”函数

除了决策之外,RETURN 语句还可用于将数据写入 API 响应或事件跟踪。 若要了解详细信息,请参阅 “观察函数”。

WHEN 语句指定一个布尔条件,该条件确定 RETURN 语句是否执行。

WHEN 语句可以使用以下任一项:

  • 在 API 请求中为评估发送的任何属性,包括自定义数据。 可以使用 @ 运算符访问这些属性。 例如 @"user.userId"。
  • 从欺诈保护的人工智能模型生成的分数。 例如 @"riskscore"。
  • 已上传到欺诈保护的列表。 有关如何上传列表的详细信息,请参阅 “管理列表”。 有关在规则中引用这些列表的详细信息,请参阅 规则中的“使用列表”。
  • 你在欺诈保护中定义的速度。 有关详细信息,请参阅执行速度检查
  • 你在欺诈保护中创建的外部调用。 有关详细信息,请参阅 外部调用
  • 你在欺诈保护中创建的函数。 有关详细信息,请参阅函数

可以使用比较运算符(例如 ==、!=、、>)<比较表达式,并且可以使用逻辑运算符(如(&&)或(||)进行组合。

有关规则语法的详细信息,请参阅 语言参考指南

视觉对象视图

使用可视模式快速轻松地使用请求有效负载中的属性编写规则。

  1. 若要创建视觉规则,请选择“ + 新建子句”。
  2. 选择 子句名称旁边的视觉视图
  3. 可以将多个筛选器添加到子句,并从下拉菜单中选择属性。
  4. 切换回 代码视图 ,查看和编辑欺诈查询语言中的规则。 在代码视图中编辑规则后,无法返回到视觉对象视图

下图显示了 规则的可视视图可以选择更改视图的代码视图 按钮。

代码视图。

下图显示了 规则的代码视图可以选择的“视觉视图 ”按钮来更改视图。

视觉对象视图。

规则示例

RETURN Reject("high score")
WHEN @"riskScore" > 900

RETURN Review("medium score")
WHEN @"riskScore" <= 900 and @"riskScore" > 400

RETURN Approve(), Other(ip=@"device.ipAddress")
WHEN @"user.countryRegion" == "US"

RETURN Reject("user on block list")
WHEN ContainsKey("Email Block List", "Emails", @"user.email")

RETURN Review()
WHEN @"user.email".EndsWith(“@contoso.com”)

“规则” 选项卡

可以在“ 规则 ”选项卡上创建自定义规则和管理现有规则。

  • 若要创建和管理与购买相关的规则,请选择“购买,然后选择“规则”选项卡。
  • 若要创建和管理与帐户相关的规则,请选择 “帐户创建 ”或 “帐户登录”,然后选择“ 规则 ”选项卡。
  • 若要创建和管理与自定义评估相关的规则,请选择“ 自定义评估”,选择自定义评估,然后选择“ 规则 ”选项卡。

规则 ”选项卡显示为评估类型配置的规则列表。 这些规则分为两个部分: 已发布的规则草稿。 有关草稿的信息,请参阅 本文后面的“草稿 ”部分。

可以查看每个规则或草稿的以下信息:

还可以为每个规则选择磁贴以展开它并显示其他信息。 以下是一些示例:

  • 说明
  • 规则中的子句
  • 上次更新规则的人员
  • 上次更新规则的时间

注意

“规则 ”选项卡上,发布的规则按运行顺序列出。

规则设置

可以访问特定评估的“ 规则 ”选项卡上的规则设置。 在那里,可以更改规则评估行为和示例有效负载。 这些更改仅适用于要编辑的评估的规则。

规则评估行为

可以更新规则的评估方式。 如果选择“ 运行第一个匹配规则”,则每个事务只评估一个规则。 如果该规则不返回决策,则不会评估进一步的规则,并返回“批准”的默认决策。 如果选择“ 运行所有匹配规则”,直到做出决策,则可以针对单个事务评估多个规则。 如果计算的第一个规则不返回决策,则会评估每个后续匹配规则,直到返回决策为止。

示例有效负载

“有效负载设置 ”窗格中,可以为评估类型定义示例有效负载。 示例有效负载旨在包含在请求 API 中发送的用于评估的字段示例,并可在规则中使用。

在 API 请求中,可以选择不从评估架构发送可选字段。 或者,可以选择发送其他自定义字段。 在这两种情况下,请务必更新有效负载示例,该示例显示在 “有效负载设置 ”窗格中,以便它反映要发送的特定字段。

每次为评估创建新规则时,都会显示此有效负载示例(请参阅 本文后面的有效负载示例 部分)。 所做的任何更改仅适用于从该时间开始创建的规则。

若要撤消对有效负载示例所做的所有更改,并将其返回到系统的默认有效负载示例,请选择“ 还原”。

规则的组件

规则由以下组件组成:

已发布的规则也可以有 草稿版本

名称和说明

创建规则时,可以添加名称和说明来帮助自己和团队轻松识别规则。 规则名称必须唯一,且不区分大小写。

Status

首次创建规则时,状态仅在发布前设置为“草稿”。

发布规则时,可以将状态设置为“活动”或“非活动”。

  • 如果规则处于活动状态,它将影响实时生产流量,并且会根据规则评估所有事件。
  • 如果规则处于非活动状态,则不会影响生产流量。

编辑以前发布的规则时,该规则将保存状态为“活动”(“草稿 “草稿”),具体取决于已发布规则的状态。

示例

创建或编辑规则时,示例窗格将显示在页面右侧。 此窗格包含两个部分:一个用于 有效负载示例 ,一个用于 评分示例

若要查看规则中使用的示例变量,请选择“ 显示已用变量”。

有效负载示例

有效负载示例包含可在评估请求 API 中发送的字段示例,如“有效负载设置”窗格中定义 这些字段可用作规则中的变量。

评分示例

评分示例包含从欺诈保护的 AI 模型生成的分数。 运行关联的 AI 模型并生成分数后,可以在规则中引用评分变量。 例如,可以在运行机器人评估后使用 @“botScore”,并在运行风险评估后使用 @“riskScore”。 有关详细信息,请参阅 本文后面的“子句” 部分。

编辑示例

若要验证规则是否适用于各种事件,可以根据需要编辑示例,然后 根据规则评估 示例数据。 可以编辑有效负载样本和评分示例中的所有值。 编辑示例时,更改不会影响向欺诈保护发送的数据(或不发送)。

发布规则时,对示例所做的任何更改将保存并保留为规则的一部分。

若要撤消对示例所做的所有更改,请选择“ 还原”。 评分示例还原到系统的默认评分示例,有效负载示例还原到有效负载设置窗格中的用户定义有效负载示例

条件

条件以 关键字 (keyword) WHEN 开头,后跟一个布尔表达式,该表达式将语句计算为 TrueFalse。 可以创建一个条件,以确定评估哪个规则并分组相关的业务逻辑。 例如,以下条件与数字产品交易相关。

WHEN @"productList.type" == "Digital"

然后,可以创建用于配置与数字产品交易相关的欺诈策略的子句。

向规则添加条件是可选的。 如果想要将规则应用于所有事件,请不要添加条件。 有关如何使用条件对规则进行排序的信息,请参阅 本文后面的规则排序 部分。

子句

子句包含与条件中定义的流量段相关的欺诈逻辑和业务策略。 子句使用事件有效负载中的值以及欺诈保护的 AI 分数来接受、拒绝、审查或质询事件。 每个规则必须至少包含一个子句,并且为每个子句分配一个唯一名称。 可以选择名称以对其进行自定义。

子句具有以下基本结构。

RETURN <decision> 
WHEN <condition is true>

可以使用此结构创建一个子句,该子句返回“批准”、“拒绝”、“质询”或“审阅”的决定。 然后,可以添加可选参数来发送有关决策的详细信息。

WHEN 关键字 (keyword)之后的所有内容都必须能够评估为 TrueFalse。 此布尔表达式可以包含来自事件有效负载用户定义的列表基于 AI 的机器人和风险分数的值。

有关子句语法的信息,请参阅 语言参考指南

当触发子句(即 WHEN 语句返回 True),将返回 RETURN 语句中指定的决策,并且不会运行后续子句。

如果条件与决策匹配但未触发子句,则运行规则。

RETURN Approve("NO_CLAUSE_HIT")

子句按“规则”选项卡上显示的顺序按顺序运行。可以使用子句右侧的箭头按钮更改其在列表中的位置。

子句组织为各节。 AI 模型基于这些部分运行,并在评估过程中生成分数。 各节因评估而异,并指示子句何时相对于 AI 模型运行。

  • 对于购买保护,将运行 AI 风险模型,为交易生成风险评分。 因此,这些规则同时包含所有评分子句和风险后评分子句。
  • 对于帐户保护,除了风险模型外,还会运行机器人模型。 这些模型分别生成机器人分数和风险评分。 因此,这些规则包含之前到所有评分子句、机器人后评分子句和后风险评分子句。
  • 对于自定义评估,不会运行 AI 模型,并且这些规则仅包含所有评分前子句。
  • 使用 评估向导 创建的评估没有之前评分和评分后子句的概念。 而是根据规则中列出的顺序按顺序(从上到下)执行所有子句。

之前到所有评分子句

在运行欺诈保护的 AI 模型之前,先运行所有评分子句。 因此,在生成任何机器人或风险评估分数之前运行它们。 这些子句可以使用作为事件有效负载的一部分发送且包含在 列表中的字段的任意组合。 可以将其配置为实施禁运、地理围栏或其他业务策略。

以下示例可帮助查看用户在地理位置之外的市场中购买产品时的购买。

RETURN Review("location inconsistency") 
WHEN Geo.MarketCode(@"device.ipAddress") != "@productList.market"

在本部分中,还可以将子句写入交叉引用列表。 例如,如果你有一 个名为 Risky Email 的自定义列表,则以下子句会拒绝事件(如果用户的电子邮件地址出现在列表中)。

RETURN Reject ("risky email") 
WHEN ContainsKey ("Risky Emails", "Emails", @"user.email")

有关用于引用规则中的列表的语法的信息,请参阅 语言参考指南

机器人评分后子句

在欺诈保护的 AI 模型为事件生成机器人分数后,运行机器人评分后子句。 此分数表示机器人启动事件的概率。 这是介于 0 和 999 之间的数字。 更高的分数表示机器人概率越高。

在机器人评分后子句中,可以将此分数与有效负载和列表中的字段一起使用来做出决策。 使用 @botScore 变量引用此分数。 例如,以下子句拒绝来自具有机器人分数超过 700 的特定电子邮件域的事件。

RETURN Reject()
WHEN @"user.email".EndsWith("@contoso.com") && @"botScore" > 700

风险后评分子句

在欺诈保护的 AI 模型为事件生成风险评估分数之后,将运行风险评分后子句。 此分数是介于 0 和 999 之间的数字。 更高的分数表示感知到的风险更高。

在风险后评分子句中,可以将此分数与有效负载和列表中的字段一起使用来做出决策。 使用 @riskScore 变量引用此分数。 例如,以下子句拒绝风险评分超过 700 的昂贵事务。

RETURN Reject("high price and risk score")
WHEN @purchasePrice >= 199.99 && @riskScore > 700

草稿

规则可以同时具有 已发布 的版本和 草稿 版本。 这两个版本都可以作为“规则”选项卡上的并排选项卡进行查看。

已发布的版本是只读的,任何人都可以查看。 草稿版本仅对其作者可见。 可以编辑草稿,并自动保存所有更改。

  • 若要取消卡草稿,请选择“取消卡”。
  • 若要发布草稿,请选择“ 发布”。

发布草稿时,欺诈保护会用草稿版本覆盖规则的已发布版本。

规则排序

规则 ”选项卡显示为评估配置的已发布规则的列表。 规则列出的顺序会影响规则的计算顺序。 若要对规则重新排序,只需将规则拖动到所需位置,然后选择“ 保存”。

根据每个规则条件(按顺序)评估事件,直到条件返回 True。 然后计算所选规则中的每个子句。 如果其中一个子句返回决定,则不会评估进一步的规则。 如果这些子句均未返回决策,则默认情况下会批准事务,或者计算具有匹配条件的下一个已发布规则。 该行为取决于 规则设置中选择的规则评估行为

创建新规则

可以创建与购买、帐户创建和帐户登录事件相关的决策的规则。

重要

默认情况下,当发布新规则时,它将显示在“规则”选项卡的“已发布规则”部分中列表底部。有关如何重新定位规则的信息,请参阅本文后面的“更改规则”部分的顺序。

  1. “规则 ”选项卡上,选择“ 新建规则”。

    创建新的草稿规则。 对草稿所做的所有更改都会自动保存。

  2. 选择“重命名,然后输入名称和说明。

  3. 向规则添加条件

  4. 添加 句以表达业务策略和欺诈策略。

    • 若要从头开始创建新子句,请在相应的子句部分选择“新建” 子句
    • 还可以从现有子句模板开始,方法是选择 New 子句右侧的箭头。 若要查看模板及其内容的完整列表,请选择“ 查看所有”。
  5. 若要评估规则并确保其按预期工作,请选择“规则”选项卡右下角的“展开”以打开规则评估窗格。

  6. 若要发布规则,请选择“ 发布”。 在确认对话框中,更改名称、说明和状态,然后选择“ 发布”。

  7. 将状态设置为“活动”或“非活动”。

  8. 若要在“规则”选项卡上的列表中重新定位规则,请选择该规则,将其拖动到其新位置,然后选择“保存顺序”。

系统定义的(默认)规则

欺诈保护可能会为每个环境创建规则。 例如,可以创建以下默认规则。

  • 默认支持规则

某些欺诈保护功能依赖于默认规则。 将电子邮件、IP 地址或其他已知列表内容添加到支持列表(安全、监视或拒绝)后,此默认规则可确保在评估评估期间检查列表。

可以编辑、删除和停用系统定义规则。 最佳做法是考虑创建或编辑其他规则,除非你想要更改默认行为。

评估(默认)规则

评估向导“选择模板”步骤中提及每个评估模板都预定义了以下一个或两个默认规则:

  • 示例模板规则 – 此规则 包含一系列示例子句,这些子句充当构建基块,用于根据风险评分、机器人分数和设备属性等值(如果适用)定义自己的逻辑做出决策。 默认情况下,这些子句都无法做出决策,但是可以使用提供的示例快速更改这些子句。
  • 支持列表规则 – 此规则 包含一系列条款,这些子句使用欺诈保护的支持列表(安全、阻止、监视)来帮助你根据这些列表中的实体做出明智的决策(接受、拒绝、审查)。

如果适用,这些默认规则在创建评估后立即显示在已发布规则处于活动状态。 下表汇总了评估模板支持的默认规则:

模板 模板规则 支持列表规则
卡付款 支持 支持
设备指纹识别 支持 空值
会员计划 支持 支持
资金转移 支持 支持
软件盗版 支持 支持
自定义 空值 支持

可以在其根环境和子环境中手动将其他规则和子句添加到评估中。

若要从规则中调用欺诈保护的风险和机器人分数,以便使用其中一个模板创建的评估,必须使用以下 模型函数

  • 风险分数:Model.Risk()。得分
  • 机器人分数:Model.Bot(@“deviceFingerprinting.id”)。得分

分支

分支允许安全地修改规则,而不会影响生产中发生的情况。 可以在“规则”选项卡上创建分支,其中每个分支表示规则集合。 默认分支是生产分支,它是每当将流量发送到评估时执行的规则分支。

创建分支

若要创建新分支,请转到 分支操作 > “创建新分支”。 可以命名分支,提供 API 名称,然后选择要从源分支复制的规则。 源分支是选择“ 创建新分支”、“生产”或“创建”时所用的分支。 创建分支期间不会保留草稿。

修改分支中的规则

对非生产分支的任何规则更改都不会影响生产规则堆栈。 可以正常编辑规则并将其发布到分支,其中每个人都可以访问规则页。

测试和试验

有两种方法可以测试分支规则行为:将流量直接发送到分支和隐藏生产流量。

将流量直接发送到分支

可以使用分支操作>分支信息找到的分支 API 终结点,将测试流量直接发送到评估中的特定分支。 此 API 终结点使用与评估相同的有效负载结构,并执行分支的规则堆栈。

注意

将流量直接发送到分支不会影响生产,因此速度不会更新,分支事务在搜索中不可见。

影子生产流量

还可以通过隐藏生产流量来测试分支规则行为。 若要隐藏生产流量,请选择“ 运行”试验,为分支设置并启动试验。 试验正在进行后,可以通过切换到运行试验的分支, 在“监视 ”选项卡上查看其性能。 试验正在进行后,无法编辑其参数,但始终可以停止试验以进行更改并再次启动。 在付款服务提供商(PSP)导航视图中, “分支操作 ”下拉菜单仅在规则页上可见,而不是在监视页上可见。

注意

在分支规则堆栈上执行的影子流量对生产没有任何影响,因此,由于阴影,速度不会更新两次,但只会因生产执行而更新一次。

将分支提升到生产环境

如果要将分支设置为生产分支,可以通过将分支提升到生产环境来执行此操作。 可以在“分支操作提升到生产”下找到提升操作>。 此操作使正在推广新生产分支的 Current Branch。 可以在新分支中克隆现有生产规则,以保存这些规则以供参考。 如果选择了克隆选项,则会保留草稿。 升级完成后,将更新生产分支以包含已升级分支的规则。

注意

首次将分支提升为给定评估的生产时,将无法在新分支中克隆现有生产规则。 如果要在首次升级时保存现有生产规则,请使用这些规则从生产中创建新的分支,以保留现有的生产规则。

管理现有规则

在“规则”选项卡上,可以对现有规则执行以下操作:

更新规则的名称和说明

若要更新规则的名称和说明,请选择规则,选择“重命名,然后输入唯一名称和说明。

更改规则的状态

若要更改规则的状态,请选择该规则,然后选择“激活”或停用”。

删除规则

若要删除规则,请选择该规则,然后选择“ 删除”。 无法撤消此操作。

编辑现有规则

编辑发布的规则时,欺诈保护会将所做的更改保存为草稿,直到发布这些更改。 所选规则的已发布版本和草稿版本都可以作为并排选项卡进行查看。 在草稿发布之前,它只对创建草稿的人员可见。 有关详细信息,请参阅 本文前面的“草稿 ”部分。

  1. 选择规则,然后选择“ 编辑”。

    将显示“ 草稿 ”选项卡和“ 已发布 ”选项卡。

  2. 选择“ 草稿 ”选项卡,然后对规则进行更改。

    欺诈保护会自动保存对规则所做的所有更改。

    若要取消卡更改,请选择“取消卡”。 欺诈保护会删除草稿,但保留原始发布的规则。

  3. 若要发布更改,请选择“ 发布”。

    发布草稿时,欺诈防护会用你在草稿版本中所做的更改覆盖规则的原始已发布版本。

    如果团队成员在仍在编辑规则时更新并发布规则,则所做的更改可能已过期。 在这种情况下,你会收到一条警告消息,询问是否仍要发布更改。

    • 如果选择“ 发布”,所做的更改将覆盖以前所做的所有更改。
    • 如果选择“ 取消”,则可以在发布版本之前查看其他人所做的更改。

搜索规则

搜索规则时,将搜索所有规则名称和说明,并相应地筛选结果。

若要搜索规则,请在“搜索”字段中输入关键字 (keyword)

若要删除筛选器,请从“搜索”字段中删除关键字 (keyword),或选择字段右侧的 X

更改规则的顺序

由于已发布的规则按运行顺序显示在 “规则 ”选项卡上,因此已发布规则的位置严重影响了事件的评估方式。

重新排序已发布的规则

  1. 选择要移动的已发布规则,并将其拖动到新位置。
  2. 对要移动的每个规则重复步骤 1,然后选择“ 保存”。
  3. 若要取消更改,请选择“ 取消”。

注意

“草稿”部分中的规则不能重新排序。

评估规则

在发布新规则之前,可以使用规则评估窗格来确保它返回预期的结果。

  • 若要打开规则评估窗格,请选择“规则”选项卡右下角的“展开”。
  • 若要关闭窗格,请选择“ 折叠”。

打开评估窗格时,可以监视规则是否根据 当前有效负载样本和评分示例进行评估。 对示例或规则本身进行更改时,评估窗格中的内容将更新。

评估窗格显示欺诈保护为示例事件返回的决定。 它还显示与响应关联的任何值,例如原因或支持消息。 触发决策的子句在窗格外的绿色中概述。

如果有效负载示例与条件不匹配,则不会评估规则。 如果条件匹配,但没有一个子句触发返回,则默认决策为“批准”,原因是NO_CLAU标准版_HIT

评估示例

创建具有以下三个子句的规则。

`// Approves when email from contoso domain has been validated`
`RETURN Approve()`
`WHEN @"email.isEmailValidated" == true && @"email.emailValue".EndsWith("@contoso.com")`
`// Rejects when email has not been validated and high risk score`
`RETURN Reject()`
`WHEN @"email.isEmailValidated" == false && @"riskscore" > 700`
`// Reviews when email has not been validated and medium risk score`
`RETURN Review()`
`WHEN @"email.isEmailValidated" == false && @"riskscore" > 400`

有效负载示例包含以下对象。

"email": {
    "email": "Primary",
    "emailValue": "kayla@contoso.com",
    "isEmailValidated": true,
    "emailValidatedDate": "2020-02-25T15:12:26.9733817-08:00",
    "isEmailUsername": true
},

评分示例包含以下值。

"riskScore": 500,

展开评估窗格时,将触发子句 1,并返回“批准”决策

在示例有效负载中,将有效负载中 isEmailValidated 字段的值true 更改为 false

"isEmailValidated": false,

在这种情况下,将触发第 2 条,并返回“审阅”决策

在示例分数中,如果将“riskScore”的值从 500更改为 700,则会触发子句 3,并将该决定更新为 Reject