增强型交易安全(Enhanced Transaction Security)

Transaction Security 是 Salesforce 的实时安全看门狗,监控登录、报告导出、API 调用与列表视图访问等事件,根据你创建的策略实时阻止或告警。本文讲解事件/策略/动作/通知的构成、用 Condition Builder 点击式创建阻止大数据导出的策略,以及用 Apex 类实现复杂用例(如排除特定配置文件),并强调锁死风险等安全规则。...

📅 2026/10/7 ✍️ ponybai 🏷️ salesforce, headless

一、Transaction Security 入门

slide_2
slide_3

本单元理解 Transaction Security 是什么、其事件/策略/动作/通知的构成,以及它解决的真实安全用例。

学完本单元,你将能够:描述 Transaction Security 的好处、解释策略/动作/通知是什么、说明 Transaction Security 的用例。

警告——先读这个

slide_4

Transaction Security 很强大,请小心使用。一个错误的 Login Event 策略若用 Block 作为实时动作,会把你锁在 org 之外。为防止这种情况,请为本模块新建一个 Trailhead Playground,绝不在生产 org 上测试 Block 策略,先用"Do Nothing"动作测试。这个警告贯穿整个模块——请认真对待,从锁死中恢复并不容易。

什么是 Transaction Security

slide_5

作为 Salesforce 管理员,你忙于用户、应用、对象、报告等一切事务。现在经理让你阻止不受支持的浏览器、IT 让你防止用户导出超过 1000 条记录的报告、安全官让你在有人运行含敏感数据的报告时收到告警——你怎么兼顾这一切?Transaction Security 替你完成。它是一个实时监控 Salesforce 事件、根据你创建的规则发现潜在问题的功能。构成:事件(Event)——Salesforce 中发生的任何事(点击、记录变更、测量值),不可变且带时间戳;策略(Policy)——选择要监视的事件 + 事件发生时触发的动作;动作(Action)——Block、Require MFA 或 Notify;通知(Notification)——邮件、应用内或两者。

上图是一个已创建若干策略的 Transaction Security 主页,最重要的列是 Status——它指示策略是否启用,让你一眼看出哪些在运行。使用 Transaction Security 需先购买 Salesforce Shield 或 Shield Event Monitoring 附加订阅。

事件类型与动作

slide_6

可用的事件类型:API Event——监控并保护所有 API 查询,防止未授权的数据导出;List View Event——跟踪对列表视图的访问(含 UI 与 API 查询);Login Event——监控登录详情,阻止来自不受信任位置、不受支持浏览器或特定设备的登录;Report Event——监控报告查看与导出,阻止或要求对敏感信息访问做多因素认证,或在报告运行/导出时通知。策略被触发时可选的动作:Block(最强强制)、Require MFA(更高保证)、Do Nothing(测试用)、Notify(邮件/应用内/两者)。

用例——防止大数据导出

slide_7

本模块聚焦一个关键安全场景:防止从报告导出大数据。为什么重要:员工把 1000+ 条记录导出到桌面 Excel,Salesforce 就无法再保护这些数据,文件可被同步、邮件发送、存到 U 盘——敏感、竞争或专有数据就此暴露。创建策略有两种方式:Condition Builder(点击、无代码)——简单条件如"Rows Processed >= 1000 AND Operation = ReportExported",Block + Notify;Apex Class(代码、进阶)——复杂逻辑如分支、查询、循环、排除(例如阻止导出 >10 行但排除 Data Steward 配置文件的用户)。两种方式分别在 Unit 2 与 Unit 3 讲解。

二、创建 Transaction Security 策略

slide_8
slide_9

本单元动手实践:启用 Transaction Security、用 Condition Builder 创建阻止大数据导出的策略、编辑条件、在 org 中启用策略。

学完本单元,你将能够:启用 Transaction Security、用 Condition Builder 定义/编辑/启用/禁用策略。

启用 Transaction Security

slide_10

第一步:在 org 中开启 Transaction Security。Setup → Quick Find 输入 Transaction Security → 点击 Transaction Security Policies,若首次访问,点击 Get Started With Transaction Security 旁的 Enable。

启用后即可创建策略。Transaction Security Policies 页面成为所有策略管理的指挥中心。再次提醒:使用 Trailhead Playground,而非生产 org。

用 Condition Builder 创建策略

slide_11

用点击创建阻止大数据导出的策略:Transaction Security Policies → New → Condition Builder → Next。

上图是新建策略页,可选择 Condition Builder 或 Apex。点击 Next 进入定义策略条件的页面:

条件设置:Event 选 Report Event,Condition Logic 选 All Conditions Are Met,第一个条件 Condition 选 Rows Processed、Operator 选 Greater than or equal、Value 填 10;点 Add Condition 加第二个条件,Condition 选 Operation、Operator 选 Equals、Value 选 ReportExported:

点 Next 后设置动作:Real-time Action 选 Block(阻止下载过多记录的用户),Block Message 保持默认,选 Email notification 并选接收人,命名 Block Large Report Downloads Policy,先不启用,点 Finish。策略已加入可用策略列表。

编辑策略

slide_12

策略创建后可完全编辑——条件、动作、通知都可改。例如 IT 要求把阈值从 10 改成 1000 行:从 Block Large Report Downloads Policy 旁的下拉菜单选 Edit,导航到 Rows Processed 条件,把 Value 改为 1000。

编辑能力包括:改条件值(阈值/运算符/字段)、增删条件、切换动作(Block → Notify)、更新通知接收人、重命名策略。无需重建——随需求演进逐步迭代。安全策略天然会演化:先保守、观察、再调优。

启用策略

slide_13

创建策略后要启用它才能生效。从策略下拉菜单选 Edit → Actions 标签,把 Status 开关切到 Enabled(也可直接从下拉菜单启用)。启用后策略就上线了——任何尝试导出 1000+ 行报告的用户都会被阻止,你会收到邮件通知。创建策略时设置的 Block 动作与邮件通知如下:

在 Actions 标签底部点击 Status 开关即可启用:

主策略页的 Status 列让你一眼看出哪些策略正在运行。专业提示:从下拉菜单直接启用可快速切换,无需打开完整编辑页。

三、在策略中使用 Apex

slide_14
slide_15

本单元超越 Condition Builder,创建基于 Apex 的策略处理复杂用例(如排除特定用户配置文件的导出阻止),用分支逻辑、SOQL 查询与自定义条件。

学完本单元,你将能够:解释如何创建使用 Apex 的 Transaction Security 策略、描述实现策略的 Apex 类的基本元素。

创建使用 Apex 的策略

slide_16

Condition Builder 处理简单用例,复杂逻辑(分支、查询、循环、排除)则用 Apex。用例:阻止导出 >10 行,但排除 Data Steward 配置文件的用户。步骤:Transaction Security Policies → New → Apex → Next。

Event 选 Report Event,Apex Class 选 New Empty Apex Class:

Next 后设置 Action 选 Block、Notifications 选 Email 与 In-App 并选接收人,命名 Prevent Large Data Export,先不启用(完成 Apex 代码后再启用),点 Finish:

返回主页面后,自动生成的类名由策略名(去掉空格)加 EventCondition 后缀组成:PreventLargeDataExportEventCondition,列在 Apex Condition 列:

现在策略还没实际作用,因为 Apex 类还没有必需代码,下一步添加。

编辑 Apex 类

slide_17

从主页面点击 Apex Condition 列的 PreventLargeDataExportEventCondition,进入编辑 Apex 类的 Setup 页:

点 Edit,用实现用例的代码替换模板。Apex 类的关键元素:接口——实现 TxnSecurity.EventCondition(所有基于 Apex 的策略都必需);evaluate 方法——public boolean evaluate(SObject event),主入口,用 switch 语句处理多种事件类型,返回 true=触发策略、false=不触发;helper 方法——private boolean evaluate(ReportEvent reportEvent),用 SOQL 查询获取触发用户的 Profile,检查 Profile 名不含 'Data Steward' 且 RowsProcessed > 10,两个条件都满足才返回 true。Save 后策略即可启用。

理解 Apex 代码如何工作

slide_18

用大白话追溯策略逻辑:用户导出报告 → ReportEvent 触发 → Transaction Security 发现匹配的策略 → 调用 PreventLargeDataExportEventCondition 的 evaluate 方法 → switch 语句识别为 ReportEvent → 传给 evaluate(ReportEvent) helper → helper 执行 SOQL 查询(按事件的 UserId 查 Profile),检查两个条件:Profile 名不含 'Data Steward' 且 RowsProcessed > 10?两个都真 → 返回 true(触发 Block);任一为假 → 返回 false(允许导出)。若为 true,Transaction Security 阻止导出并发送邮件 + 应用内通知。整个检查过程只需几分之一秒——实时安全、无用户可见延迟。

关键要点

slide_19

实时监控:事件自动触发,无需轮询或计划任务,策略在毫秒内评估。两种构建方式:Condition Builder(点击、无代码、简单条件)与 Apex(完整程序化控制、复杂分支逻辑、配置排除、数据查询、多事件处理)。三种动作级别:Block(最强强制)、Require MFA(额外验证)、Notify(不阻止的感知)。关键安全规则:绝不在生产 org 上测试 Block 策略、先用 Do Nothing 测试、Login Event + Block 可能导致锁死。Transaction Security = 你 24/7 的自动安全看门狗。


文章来源:Trailhead - Enhanced Transaction Security