认识实时事件与事务安全(01 Get to Know Real-Time Events and Transaction Security)
本单元是概念基础。你将了解实时事件监控是什么、它与传统事件监控有何不同(近实时 vs 24 小时延迟)、平台事件(即时流式)与大对象(持久化存储)的区别,以及事务安全如何利用实时事件自动检测并阻断有风险的用户行为。本单元建立词汇和概念,供 Unit 2、3 动手实践。
完成本单元后,你将能够:
- 定义实时事件监控与实时事件;
- 理解实时事件监控与事件监控的区别;
- 区分平台事件与大对象;
- 定义事务安全;
- 描述实时事件监控的用例。
注意:本模块功能仅在 Enterprise、Unlimited、Developer Edition 可用,需 Salesforce Shield 或 Event Monitoring 附加订阅;Trailhead Playground 也可用。
理解实时事件监控(一):它是什么(Understand Real-Time Event Monitoring (1): What It Is)
传统事件监控(Event Monitoring):查看用户活动细节——登录、API 调用、报表导出、记录更改;数据24 小时后可用;存储在 EventLogFile 对象里;保留 30 天事件日志文件。
实时事件监控(Real-Time Event Monitoring):近实时检测用户行为;事件作为平台事件即时流式推送;同时存入大对象,可用 SOQL 和 batch Apex 查询;可触发事务安全策略自动阻断风险操作;数据保留时间比传统事件监控更长。
核心差异在时间维度:传统事件监控把事件存进 24 小时后可用的日志(适合审计报表,但对实时安全响应无用),实时事件监控在事件发生时立即流式推送,实现即时检测与自动响应。同样的数据同时存入大对象供后续查询。这套"流式用于实时行动、大对象用于历史分析"的双重机制,支撑着 Salesforce 最先进的安全监控能力。
理解实时事件监控(二):关键能力(Understand Real-Time Event Monitoring (2): Key Capabilities)
实时事件监控的能力:
- 近实时可见性——洞察整个组织的用户活动;
- 自动异常检测——异常登录模式、过量数据导出、可疑 API 调用;
- 与事务安全集成——自动阻断风险操作并实时通知管理员;
- 长期事件存储——大对象存储用于审计、合规与趋势分析;
- SOQL 与 batch Apex 访问——构建自定义监控仪表盘和自动化分析。
实时事件监控把安全从被动转向主动:与其在 24 小时后的审计日志里发现数据泄露,不如在发生时检测并阻断可疑活动。需要 Enterprise/Unlimited/Developer Edition + Salesforce Shield 或 Event Monitoring 附加订阅;Trailhead Playground 也已包含此能力。
事件监控 vs 实时事件监控(一):定义(Event Monitoring vs Real-Time Event Monitoring (1): Definitions)
先精确界定术语(这些词很容易混淆):
- 事件(Event)——Salesforce 里发生的任何事:用户点击、记录更改、登录、API 调用。事件不可变、带时间戳;
- 事件监控(Event Monitoring)——传统产品,把用户活动存进 EventLogFile 标准对象,24 小时后(也可经 Hourly EventLogFiles 按小时)可用,保留 30 天,可用 SOQL 查询但非实时,无自动通知或阻断;
- 实时事件监控(Real-Time Event Monitoring)——增强产品,事件作为平台事件即时流式推送,同时存入大对象,近实时检测响应,可集成事务安全自动执行策略。
关键区别:传统事件监控用于历史分析(昨天发生了什么?),实时事件监控用于运营响应(现在正在发生什么?该不该阻止?)。两者都存事件数据,但延迟和响应能力完全不同。
事件监控 vs 实时事件监控(二):实时事件(Event Monitoring vs Real-Time Event Monitoring (2): Real-Time Events)
实时事件是核心机制:基于用户操作由 Salesforce 发布的平台事件,操作发生时即时流式推送(无延迟、无批处理),同时存入大对象供持久访问。
双重访问模式:
- 流式(实时)——订阅平台事件通道,事件发生时接收通知,触发自动响应;
- 存储(历史)——用 SOQL 查询大对象,分析长期模式,生成报表和仪表盘。
实时事件示例:LoginEventStream(登录)、ReportEventStream(报表执行)、ListViewEventStream(列表视图访问)、ApiEventStream(API 调用)、RecordEventStream(记录修改)。每个事件类型既是平台事件(实时流给订阅者)又是大对象记录(持久化供 SOQL 查询)——同一事件数据、两种消费模式、一个统一监控系统。
事件监控 vs 实时事件监控(三):对比表(Event Monitoring vs Real-Time Event Monitoring (3): Comparison Table)
并排对比:
- 延迟:事件监控 24 小时,实时事件监控近实时;
- 存储:EventLogFile vs 大对象;
- 保留:30 天 vs 更长(可配置);
- 访问:SOQL/下载 vs SOQL/Batch Apex/流式;
- 自动阻断:无 vs 有(经事务安全);
- 通知:无 vs 有(平台事件)。
用事件监控的场景:历史审计与合规、周/月报表、30 天窗口的趋势分析。用实时事件监控的场景:需要即时检测响应、自动阻断风险操作、向安全团队实时告警、长期事件数据保留。对重视安全的组织,两者互补:事件监控用于合规,实时事件监控用于主动防御。
区分平台事件与大对象(Distinguish Between Platform Events and Big Objects)
实时事件监控使用两种存储/访问机制:
平台事件——流式:事件发生时实时发布,订阅者立即收到通知。用于实时告警、自动响应、事务安全策略。
大对象——存储:事件在流式的同时立即持久化,可用 SOQL 和 batch Apex 查询。用于审计、报表、趋势分析、长期保留。
同一事件,两条路径:流式 → 立即行动;大对象 → 之后分析。平台事件是"告警"路径(用户登录 → LoginEvent 立即触发,任何订阅者包括事务安全策略都能反应),大对象是"记录"路径(同一登录事件持久化,数小时/数天/数月后仍可查询)。事件数据完全相同,区别在消费方式。
标准平台事件(一):它们是什么(Standard Platform Events (1): What They Are)
Salesforce 为常见用户活动提供标准平台事件:
- LoginEventStream——用户认证(登录成功、失败、登出);
- ReportEventStream——报表执行(谁在何时运行了哪个报表);
- ListViewEventStream——列表视图访问;
- ApiEventStream——API 调用活动(REST、SOAP、Bulk API);
- RecordEventStream——记录修改(创建、更新、删除)。
你订阅这些事件通道来接收实时通知。订阅模型意味着你只收到关心的事件——关注登录安全就订阅 LoginEventStream,监控数据访问就订阅 ReportEventStream 和 ListViewEventStream。订阅者可以是事务安全策略(声明式)、平台事件上的自定义 Apex 触发器、或使用 Pub/Sub API / CometD 流式的外部服务。事件负载含丰富元数据——用户 ID、时间戳、IP 地址、浏览器信息。
标准平台事件(二):事件对象与大对象(Standard Platform Events (2): Event Objects & Big Objects)
事件对象——流式侧:实时事件监控定义标准平台事件对象,每个事件类型都有对应的事件对象;订阅以实时接收;事件不可变。
大对象——存储侧:事件也立即作为大对象记录存储;大对象支持 SOQL 查询但不支持完整 CRUD,专为海量规模(数十亿记录)和长期保留(数年)设计;可用标准 SOQL 语法查询,经 batch Apex 处理大结果集。
平台事件 = "现在告诉我";大对象 = "给我看发生了什么";两者结合 = 完整的事件可见性。事件对象定义每个事件携带哪些字段(流式 schema),大对象提供持久化存储——共同构成实时事件监控的完整数据架构。
事务安全(一):它是什么(Transaction Security (1): What It Is)
事务安全(Transaction Security) = 实时评估事件并采取行动的自动化安全策略:
- 监控正在发生的用户活动;
- 评估你定义的条件(如"用户 10 分钟内导出超过 5 个报表");
- 自动采取行动:阻断操作、通知管理员(邮件、Chatter)、记录事件供审计。
无需人工干预,检测 + 响应 = 自动化。实时事件监控提供事务安全策略评估的事件数据——实时事件监控是"眼睛"(看到正在发生什么),事务安全是"拳头"(执行规则)。策略由三部分组成:目标事件(看什么)、条件(什么算可疑)、行动(怎么处置)。
事务安全(二):策略如何工作(Transaction Security (2): How Policies Work)
事务安全策略的解剖:
- 事件(Event)——哪个实时事件触发策略?(LoginEvent、ReportEvent、ApiEvent 等);
- 条件(Condition)——什么让事件可疑?例:从新 IP 登录、时间窗口内导出超过 N 个报表、来自允许 IP 范围之外的 API 调用、非营业时间访问记录;
- 行动(Action)——条件满足时做什么:阻断(阻止用户操作完成)、通知(向管理员/团队告警)、记录(记录事件供审计)、双重验证(要求额外认证)。
策略是声明式的——在 Setup 中配置,无需代码。条件可引用事件字段:UserId、EventDate、SourceIp、BrowserType 等。这让管理员无需开发就能配置安全策略。
事务安全(三):策略示例(Transaction Security (3): Example Policies)
真实事务安全场景:
- 报表导出监控:事件 ReportEvent,条件"10 分钟内导出超 5 个报表",行动"阻断 + 通知"。防止经报表导出窃取数据;
- 登录异常检测:事件 LoginEvent,条件"新 IP + 非营业时间登录",行动"阻断 + 要求双重验证"。防止凭据被盗访问;
- API 滥用防护:事件 ApiEvent,条件"单用户 1 小时超 1000 次 API 调用",行动"通知 + 记录"。检测集成 bug 或恶意 API 使用;
- 记录访问审计:条件"非 HR 用户访问敏感对象(如 Salary__c)",行动"阻断 + 通知"。执行数据访问策略。
每个策略传统上都需要自定义开发或人工监控,事务安全让它们声明式化——配置一次、7×24 自动执行。
事务安全(四):条件深入(Transaction Security (4): Conditions Deep Dive)
事务安全支持两类条件:
简单条件——评估单个事件:SourceIp != "192.168.1.0/24"、EventDate 超出 9-5 营业时间、BrowserType 含 "headless"(可能是机器人)、ApiVersion < 50.0(过时集成)。
有状态条件——跨事件追踪:COUNT(ReportEvent) > 5(10 分钟内每用户)、COUNT(LoginEvent WHERE Status='Failure') > 3(5 分钟内)、FIRST(LoginEvent.SourceIp) != CURRENT(检测到新 IP)。
有状态条件要求策略引擎在时间窗口内维持状态——这让它检测"模式"而非"单事件"。单次报表导出正常,10 分钟内 5 次就可疑;单次登录失败是笔误,5 分钟 5 次失败就是暴力破解。有状态条件把事务安全从简单规则引擎升级为真正的安全监控平台。
使用实时事件监控(一):用例(Using Real-Time Event Monitoring (1): Use Cases)
常见实时事件监控场景:
安全运营:检测并阻断撞库攻击(快速登录失败)、识别数据外泄企图(海量报表导出、列表视图下载)、实时监控特权用户活动。
合规与审计:证明谁在何时访问了敏感记录(审计线索)、对照许可证限制监控 API 用量、实时跟踪配置变更。
运营监控:集成失败告警(API 错误)、监控采纳率(用户实际用哪些功能)、容量规划(API 消耗趋势)。
每个用例消费相同的事件数据,只是消费方式不同——安全团队订阅平台事件获取实时告警,合规团队对大对象跑 SOQL 生成月度报表,运营团队在事件数据上建仪表盘。这种"一个事件流、多个消费者"的多消费者架构,让实时事件监控成为平台能力而非单点方案。
使用实时事件监控(二):访问模式(Using Real-Time Event Monitoring (2): Access Patterns)
消费实时事件的三种方式:
- 平台事件订阅(实时)——用 Apex、CometD 或 Pub/Sub API 订阅事件通道,事件发生时接收。适合告警、自动响应、事务安全策略;
- SOQL 查询(按需)——用标准 SOQL 查询大对象,按 EventDate、UserId 等过滤。适合临时调查、报表、仪表盘;
- Batch Apex(大规模处理)——处理数百万事件记录,聚合分析模式。适合趋势分析、数据归档、复杂分析。
选择正确的访问模式:实时 → 平台事件;调查 → SOQL;海量分析 → Batch Apex。同一 LoginEvent 可同时触发事务安全策略(平台事件订阅)、被管理员调查(SOQL)、被纳入月度安全报表(batch Apex)——无数据复制、无同步问题。
使用实时事件监控(三):开始(Using Real-Time Event Monitoring (3): Getting Started)
Unit 1 概念小结:
- ✓ 实时事件监控 = 近实时可见性 + 自动响应;
- ✓ 平台事件 = 流式路径(订阅、立即反应);
- ✓ 大对象 = 存储路径(查询、历史分析);
- ✓ 事务安全 = 自动化策略(事件 + 条件 + 行动);
- ✓ 三种访问模式:流式 / SOQL / Batch Apex。
接下来 Unit 2 动手配置:配置 Event Manager、启用事件、设置权限、订阅事件通道、使用 Pub/Sub API。然后 Unit 3 写代码:在 VS Code 里用 SOQL 查询事件并部署 Apex 类。
设置实时事件监控(02 Set up Real-Time Event Monitoring)
Unit 2 是动手配置。你将通过 Setup 里的 Event Manager 配置实时事件监控,通过配置文件和权限集设置用户权限,启用特定事件流,订阅事件监控平台事件,并了解经 Streaming Monitor 应用和 Pub/Sub API 消费事件。完成后,你的组织将开始主动流式传输和存储实时事件。
完成本单元后,你将能够:
- 通过 Event Manager 设置实时事件监控;
- 通过配置文件和权限集设置用户访问;
- 订阅事件监控特定的平台事件;
- 描述组织中实时事件的常见用例;
- 识别如何用 Streaming Monitor 应用消费和查看实时事件。
获取 Playground 用户名与密码(一):凭据(Get Credentials (1): Credentials)
准备好已知凭据:
- 滚动到本页底部,点击 Launch;
- 如果看到 Get Your Login Credentials 标签——记下用户名、点击 Reset My Password;
- 如果没有,从 App Launcher 打开 Playground Starter 按步骤操作;
- 查收邮件点击重置链接;
- 设置新密码并确认。
Unit 3 里 VS Code 认证时会用到这些凭据。重置密码是因为自动生成的 Playground 密码从不显示给你。
获取 Playground 用户名与密码(二):保存并继续(Get Credentials (2): Save & Proceed)
重置后,把用户名和密码安全保存。现在设置实时事件监控——你的 Trailhead Playground 已默认启用实时事件监控,无需额外许可,可以照做所有动手步骤。
设置实时事件监控(一):Event Manager(Set Up (1): Event Manager)
进入 Event Manager——实时事件监控的控制中心:
- Setup → Quick Find 输入 "Event Manager";
- 选择 Event Manager。
Event Manager 显示所有可用事件及其配置状态:订阅通道(流式的平台事件通道名)、类型、描述、流式/存储指示器。默认访问:Enterprise/Unlimited 版默认有 LogoutEvent,其余事件需 Shield Event Monitoring 许可;Developer Edition + Trailhead Playground 有完整学习访问。通过切换每个事件的流式/存储来启用。
设置实时事件监控(二):启用事件(Set Up (2): Enable Events)
激活实时事件:
- 在 Event Manager 点击要启用的事件;
- 切换 Streaming 为 ON(实时平台事件访问);
- 切换 Storage 为 ON(大对象持久化)。
两个都启用获得完整功能:流式 → 实时通知;存储 → 之后 SOQL 查询访问。你的 Trailhead Playground 已可访问;生产组织需确保 Event Monitoring 附加订阅激活。启用后事件立即开始流动——无延迟、无批处理、无等待期。
启用实时事件监控访问(一):权限(Enable Access (1): Permissions)
通过配置文件和权限集控制谁能访问实时事件监控数据。所需用户权限:
- View Real-Time Event Monitoring Data——让用户查看事件数据(查询大对象、查看流式监控);
- Customize Application——创建、编辑和管理事务安全策略所需。
你的 Trailhead Playground 已为 System Administrator 配置好这些权限。生产组织里按最小权限原则授权:安全团队(查看 + 定制)、合规团队(仅查看)、开发者(查看用于调试)。
启用实时事件监控访问(二):设置步骤(Enable Access (2): Setup Steps)
在生产组织授权:
- Setup → Permission Sets(或 Profiles);
- 选择要修改的权限集或配置文件;
- 点击 System Permissions;
- 点击 Edit;
- 勾选 View Real-Time Event Monitoring Data;
- (策略创建者)勾选 Customize Application;
- Save。
权限集比配置文件更细粒度、更适合基于角色的访问。推荐用权限集而非配置文件。你的 Playground 已配置好,直接订阅事件吧。
订阅事件监控特定平台事件(一):通道(Subscribe (1): Channels)
每个实时事件都有订阅的平台事件通道:/event/LoginEventStream、/event/ReportEventStream、/event/ApiEventStream、/event/ListViewEventStream 等。
订阅方法:
- Apex 触发器——在平台事件对象上写触发器,在 Salesforce 内实时处理事件;
- CometD——面向浏览器和外部客户端的 Streaming API(长轮询);
- Pub/Sub API——基于 gRPC 的高性能双向事件通信(外部客户端推荐)。
按订阅者运行位置选择:Salesforce 内部 → Apex 触发器;外部应用 → Pub/Sub API(gRPC);浏览器客户端 → CometD。Pub/Sub API 是外部事件消费者的战略方向——更快、更高效、支持双向流式。
订阅事件监控特定平台事件(二):Apex 模式(Subscribe (2): Apex Pattern)
实时事件的 Apex 触发器模式:
trigger LoginEventTrigger on LoginEventStream(
after insert) {
for (LoginEventStream event :
Trigger.New) {
if (event.SourceIp != null &&
isSuspiciousIp(event.SourceIp)) {
sendAlert(event.UserId,
event.SourceIp);
}
}
}
触发器在平台事件发布时立即触发——Salesforce 内近实时响应。用例:可疑活动发邮件/Slack 告警、创建安全调查 Case、调用外部 API 做威胁情报查询、记录到自定义对象供仪表盘。Apex 触发器的关键优势:它在 Salesforce 内运行,可完全访问组织数据。
启用 ReportEventStream 流式(Enable ReportEventStream for Streaming)
在 Event Manager 启用 ReportEventStream:
- 在 Event Manager 找到 ReportEventStream;
- 启用 Streaming(ON)——每次用户运行或导出报表就发布平台事件;
- 启用 Storage(ON)——把事件持久化到大对象供 SOQL 查询。
两个都启用后:实时侧,ReportEvent 平台事件立即流给订阅者;历史侧,ReportEvent 大对象记录可供 SOQL 和 batch Apex 查询。现在组织里每次报表执行和导出都生成实时事件,事务安全策略可用 ReportEvent 检测并阻断可疑报表活动。
前置条件(一):所需工具(Prerequisites (1): Tools Required)
用 Pub/Sub API 订阅平台事件需要:
- gRPC 客户端库——Java、Python、Go、Node.js、C# 等,Google 提供所有主流语言的官方库;
- Protocol Buffers(protobuf)编译器——消息序列化,事件 schema 定义在 .proto 文件里编译到你的语言;
- 组织的 Pub/Sub API 端点:
api.pubsub.salesforce.com:7443(TLS 加密 gRPC 通道)。
Pub/Sub API 基于 gRPC——现代高性能 RPC 框架。与 REST(请求-响应)不同,gRPC 提供持久的双向流式——事件发生时推送到你的客户端,无需轮询,事件毫秒级到达。
前置条件(二):认证与连接(Prerequisites (2): Authentication & Connection)
Pub/Sub API 认证用标准 OAuth 2.0,服务器到服务器推荐 JWT bearer 流程(无需浏览器交互,用证书程序化认证)。连接流程:
- 经 OAuth 获取访问令牌;
- 打开到 Pub/Sub API 端点的 gRPC 通道;
- 每次请求在 gRPC metadata 里带上令牌;
- 发送目标事件通道的 Subscribe 请求;
- 事件作为 protobuf 消息到达——解析并处理。
连接并订阅后,客户端持续接收事件,直到令牌过期(自动刷新)。详细实现参考 Pub/Sub API 开发者文档。
用 Pub/Sub API 订阅平台事件(二):步骤概览(Subscribe Using Pub/Sub API (2): Steps Overview)
Pub/Sub API 订阅流程:
- 认证——经 OAuth 2.0 获取访问令牌(JWT bearer 或 web server 流程);
- 连接——打开到
api.pubsub.salesforce.com:7443的 gRPC 通道; - 订阅——发送 Subscribe 请求指定事件通道
/event/ReportEventStream; - 接收——API 把事件推给你的客户端,无需轮询,事件在用户操作后毫秒级到达;
- 处理——客户端代码处理每个事件:记录、分析、触发下游行动;
- 确认——(可选)发送确认以实现可靠投递。
推送模型意味着事件以最小延迟到达。生产使用需实现确认处理和重连逻辑以应对网络中断。
流式传输实时事件(Streaming Real-Time Events)
事件启用并订阅后,流式流程是:
- 用户在 Salesforce 执行操作(登录、运行报表、访问列表视图、API 调用、修改记录);
- Salesforce 立即发布对应的实时事件平台事件;
- 所有订阅者收到事件:Apex 触发器(组织内)、Pub/Sub API 客户端(gRPC)、CometD 客户端(长轮询)、事务安全策略评估;
- 订阅者处理事件:告警、记录、阻断、分析;
- 同时事件持久化到大对象供之后 SOQL 查询。
这就是完整的实时事件生命周期——从用户操作到多渠道响应。多路径实时架构让实时事件监控成为平台而非功能:一个事件、多个消费者、即时响应、持久存储。
用实时事件监控审计用户活动(03 Use Real-Time Event Monitoring to Audit User Activity)
Unit 3 是编码单元。你将用 Visual Studio Code + Salesforce Extension Pack 创建项目、认证 Playground、写一个用 SOQL 查询实时事件大对象的 Apex 类、直接从 VS Code 测试查询、并部署代码。本单元把一切串起来:Unit 2 启用的事件,用你熟悉的开发工具程序化查询。完成后,你将有一个通过实时事件数据审计用户活动的可用模式。
完成本单元后,你将能够:
- 用 VS Code 和 Salesforce Extension Pack 创建 Apex 类;
- 用 SOQL 同步查询实时事件监控大对象。
简介(一):为什么查询实时事件(Introduction (1): Why Query Real-Time Events)
查询实时事件让你深入了解用户活动:谁在何时查看了什么数据、数据从哪里访问(IP、浏览器、位置)、用户何时经 UI 改了记录、报表执行和导出活动、API 调用模式与异常。
用例:安全(检测可疑模式——异常登录位置、海量数据导出、非工作时间管理员访问)、合规(证明谁在何时访问了敏感记录——完整审计线索)、运营(监控 API 用量、识别失败集成、容量规划)。查询事件还能帮你在创建事务安全策略前建立正常基线。标准审计线索只能看到"有人改了记录",实时事件查询能看到"用户 X 从 IP Y 在周六晚 11 点经自定义报表查看了 200 条工资记录"。
简介(二):事件查询的 VS Code 工作流(Introduction (2): VS Code Workflow for Event Queries)
本单元基于 Quick Start: Visual Studio Code for Salesforce Development,用相同工作流:创建 SFDX 项目、认证 Playground、写带 SOQL 的 Apex 类、部署前测试查询、部署到组织——但目标换成实时事件大对象而非标准对象。
为什么用 VS Code 查事件?交互式探索(写查询、执行、立即看结果)、部署前测试(提交 Apex 类前验证大对象上的 SOQL 语法)、创建事务安全策略前确定正常使用阈值。
前置条件:先完成 Quick Start: Visual Studio Code for Salesforce Development。大对象有特定 SOQL 限制(无连接、受限 WHERE 子句),所以嵌入 Apex 前测试查询尤其重要。
创建项目(一):脚手架工作区(Create a Project (1): Scaffold the Workspace)
为事件监控代码创建 Salesforce DX 项目:
- 打开 Visual Studio Code;
- Ctrl+Shift+P → 命令面板;
- 输入 SFDX: Create Project(确保提示符以 > 开头);
- 选 Standard 项目类型;
- 项目名 RealTimeEventMonitoring;
- 保存到 Desktop;
- 等待新 VS Code 窗口打开。
项目结构:force-app/main/default/classes/(Apex 类放这里)、sfdx-project.json、配置文件。这是查询和部署实时事件代码的工作区。
创建项目(二):项目就绪(Create a Project (2): Project Ready)
RealTimeEventMonitoring 项目已就绪。下一步:认证 Trailhead Playground 并开始查询实时事件。扩展正在准备项目——Apex 会获得语法高亮和代码补全。现在把项目连接到 Playground,就能直接从 VS Code 查询实时事件数据。
认证 Playground(一):连接 VS Code(Authenticate (1): Connect VS Code)
把 VS Code 连接到 Trailhead Playground(Unit 2 用的同一个):
- Ctrl+Shift+P → 命令面板;
- 输入 SFDX: Authorize an Org;
- 回车接受默认登录 URL;
- 回车接受默认别名;
- 浏览器打开 → 用 Playground 用户名密码登录;
- 点击 Allow 授权;
- 关闭浏览器 → VS Code 输出面板出现成功消息。
成功消息:"Successfully authorized USER with org ID; you may now close the browser"。VS Code 现在持有 Playground 的访问令牌,可以查询实时事件大对象。
认证 Playground(二):连接确认(Authenticate (2): Connection Confirmed)
VS Code → 已认证 → Trailhead Playground。你现在可以:直接从 VS Code 对组织执行 SOQL 查询、查询实时事件大对象、部署 Apex 类、提交前测试代码。输出面板显示授权成功。下一步:创建查询实时事件的 Apex 类。
创建 Apex 类(一):EventQueryHandler(Create an Apex Class (1): EventQueryHandler)
创建查询实时事件大对象的 EventQueryHandler Apex 类:
- Ctrl+Shift+P → 命令面板;
- 输入 SFDX: Create Apex Class;
- 命名 EventQueryHandler;
- 选 force-app/main/default/classes 作为目标目录;
- 把默认模板替换为用 SOQL 查询实时事件大对象(如 ReportEvent)的类;
- 保存文件。
类按今天日期过滤事件,给你当前天用户活动的视图。VS Code 的 Apex 语言服务器提供语法高亮、实时错误检测、SOQL 和 Apex 代码补全——比 Developer Console 快得多。
创建 Apex 类(二):SOQL 查询(Create an Apex Class (2): The SOQL Query)
EventQueryHandler 查询 ReportEvent 大对象查看用户报表活动:
SELECT ColumnHeaders, EventDate,
ExportFileFormat, Format,
NumberOfColumns, QueriedEntities,
Records, ReportId,
RowsProcessed, UserId, Username
FROM ReportEvent
WHERE EventDate = Today
这个查询返回:今天所有报表执行事件、谁运行了报表(UserId、Username)、报表里有什么(ColumnHeaders、QueriedEntities、Records)、导出格式详情(ExportFileFormat、Format)。Apex 类把查询包进可从任何地方调用的方法(REST API、Flow、其它 Apex)。同一模式适用于 LoginEvent、ApiEvent、ListViewEvent 及所有其它实时事件大对象。
运行 SOQL 查询(一):部署前测试(Run the SOQL Query (1): Test Before Deploying)
VS Code 可直接执行 SOQL——部署前测试查询:
- 在 EventQueryHandler.cls 里只高亮 SOQL 查询文本;
- Ctrl+Shift+P → 命令面板;
- 输入 SFDX: Execute SOQL Query with Currently Selected Text;
- 选 REST API → 回车;
- 在 Output 标签页查看结果!消息 "ended with exit code 0" 确认查询成功。
这是 Quick Start: VS Code 的查询测试工作流,现在应用于实时事件数据。高亮查询、直接对 Playground 经 REST API 执行、秒级看结果。大对象查询有特定 SOQL 限制,先测试能立即发现语法问题。查询验证正确后才部署完整类。
运行 SOQL 查询(二):分析结果(Run the SOQL Query (2): Analyze Results)
回顾查询结果理解用户活动模式:今天运行了多少报表?谁是最活跃的报表用户?有导出吗(ExportFileFormat 字段显示导出格式)?查询了哪些对象(QueriedEntities 字段)?
用这些洞察:建立正常活动基线、识别需要调查的异常模式、为事务安全策略设置合适阈值。
示例发现:"用户 X 通常每天运行 2-3 个报表,今天运行了 15 个并导出 8 个" → 创建每天超过 10 个报表就告警的事务安全策略。这些基线让策略基于观察到的规范而非猜测。实时查询(本单元)+ 自动策略执行(Unit 1 概念)构成完整工作流:探索以理解,然后自动化以保护。
部署你的代码(一):推到组织(Deploy Your Code (1): Push to Org)
把 EventQueryHandler 部署到 Playground:
- 在 Explorer 右键 classes 文件夹;
- 选 SFDX: Deploy Source to Org;
- 看 Output 标签页进度;
- 成功消息 "ended with exit code 0"——部署完成!
你的 Apex 类现在已在 Trailhead Playground 上线,可查询实时事件大对象。一次右键、一条命令,代码直达组织。你完成了完整工作流:理解概念(Unit 1)、配置组织(Unit 2)、程序化查询事件(Unit 3)。
部署你的代码(二):完整工作流回顾(Deploy Your Code (2): Complete Workflow Recap)
实时事件监控完整工作流:
- Unit 1 理解——平台事件 vs 大对象、实时 vs 传统监控、事务安全策略;
- Unit 2 配置——Event Manager 启用事件、权限授权、订阅平台事件通道、Pub/Sub API 外部消费;
- Unit 3 编码——VS Code 建 SFDX 项目、SOQL 查大对象、部署前测试、部署 Apex 类到组织。
你现在拥有:实时流式的事件、存进大对象的事件、审计活动的 SOQL 查询、事务安全策略的基础。这是 Salesforce 平台上企业级安全监控的完整实现模式。
临别感言(Parting Thoughts)
你已掌握实时事件监控:定义了实时事件监控和实时事件、设置了 Event Manager 并启用事件流、用 VS Code 查询大对象、部署了事件数据访问的 Apex 类。
准备在组织中应用:近实时审计用户活动、创建事务安全策略、经 Pub/Sub API 构建事件驱动集成、主动监控和保护 Salesforce 数据。
从被动审计到主动安全——这就是实时事件监控带来的转变!下一步:基于观察到的基线创建事务安全策略、为安全团队构建事件数据仪表盘、经 Pub/Sub API 探索外部事件消费。











































