审计子系统
“审计子系统”为系统管理员、应用程序管理员和 IoT 解决方案的审计员提供了内置审计功能。
为确保审计数据的完整性,您不能修改日志。此外,审计日志不包含任何敏感信息。
启用并选择“自动启动”选项后,审计子系统会在 ThingWorx Platform 启动时启动,并会在实例停止时停止。支持以下审计功能:
搜索审计条目 (使用 QueryAuditHistory 服务)
将审计条目存档到离线存储 (默认每日自动执行)
使用为导出选择的语言导出审计数据
根据审计数据应在线保留的指定天数和要在线保留的行数清除在线审计数据,天数和行数在“审计子系统”的配置中进行设置。
审计启动、停止和重新启动操作
自 ThingWorx Platform v.8.5 起,审计子系统会在安全上下文从一个用户切换到另一个用户时以及在将安全上下文提升到超级用户时进行审计。有关详细信息,请参阅 审计安全上下文的切换
* 
默认情况下,对新安装或升级禁用审计子系统。如果您是系统管理员,请参阅 启用审计子系统来了解如何启用子系统。
哪些活动需要审计?
ThingWorx Platform 上的活动可生成事件。例如,开始执行文件下载时会生成事件。您可能想要订阅此类事件,并使用这些事件触发其他操作。ThingWorx 的以下内置事件类型存在审计:
事物相关事件 - ThingStartFileTransferRemoteSession
安全监控事件 - LoginSucceededLoginFailedApplicationKeySucceededApplicationKeyFailed
子系统事件 - 自 ThingWorx Platform v.8.5.0 起,系统会审计子系统的启动、停止和重新启动操作。请注意,重新启动操作会在审计日志中显示重新启动审计消息和启动/停止审计消息。
* 
ApplicationKeySucceededApplicationKeyFailed 事件仅对 HTTP/HTTPS REST 连接触发。
通常,这些事件由 ThingWorx 中有关实体的操作触发:
由可对事物执行的操作触发的事物相关事件,例如开始和重新开始事物、使用文件传输子系统传输文件和隧道 (RemoteSession 事件)。
安全监控事件针对的是访问 ThingWorx 的用户。
在启动、停止或重新启动子系统时,会触发子系统事件。
* 
不支持用户定义 (自定义) 事件的审计。
重新启动子系统时,根据子系统状态的不同,会插入两条或三条审计消息。请考虑以下情况:
情景:如果子系统的状态为 RUNNING,则 Restart 操作会插入三条消息:
System Subsystem "FederationSubsystem" restarted
System Subsystem "FederationSubsystem" stopped
System Subsystem "Federation Subsystem" started
情景:如果子系统的当前状态不是 RUNNING,则 Restart 操作仅会插入两条消息,因为不执行 Stop 操作:
System Subsystem "FederationSubsystem" restarted
System Subsystem "Federation Subsystem" started
审计安全上下文的切换
自 ThingWorx Platform v.8.5 起,审计子系统会在安全上下文从一个用户切换到另一个用户时以及在将安全上下文提升到超级用户时进行审计。有关安全上下文切换的一个示例可在调用 ThingWorx 扩展 API 的 SecurityContext.createUserContext(User anotherUser) 方法时出现。此方法允许扩展或脚本切换到其他用户的安全上下文。ThingWorx 扩展 API 的 SecurityContext.createSuperUserContext() 方法可让扩展或脚本切换到系统超级用户的安全上下文,从而使扩展代码能够访问超级用户有权访问的所有实体。
安全上下文的更改通常发生在 ThingWorx Platform 内部,以便启用不同的功能来访问可能对标准用户不可见的服务和实体。因此,系统并不会审计所有安全上下文更改。系统仅会审计故意进行更改且可能显现出安全漏洞的安全上下文。
这些消息的类别为 SECURITY_CONFIGURATION
有关切换安全上下文的审计消息如下:
audit.securityContext.SuperUser
User _currentUser__switched context to SuperUser within the Entity Context of __thingName__.
audit.SecurityContext.Changed
User __currentUser__ switched context to __username__within the Entity Context of __thingName__.