ThingWorx 稽核訊息
本主題提供有關 ThingWorx 稽核訊息內容的詳細資訊,其包含以下幾部份。按一下部份的標題可顯示內容。再按一下標題可隱藏內容。
稽核訊息的類型 
「稽核子系統」會針對 ThingWorx Platform 中的不同活動產生訊息。訊息分為下列一般類型:
對物件的變更 - 稽核對實體諸如建立、刪除或修改的變更。實體可以是物件,也可以是非物件,例如子系統或組織。
對使用者的變更 - 稽核對使用者或應用程式金鑰諸如建立或修改的變更。如需瞭解有關稽核安全性前後關聯中轉換的資訊,請參閱接下來一部份的內容。
對物件的操作 - 稽核對實體的操作。範例包括物件的遠端工作階段活動 (通道傳輸)。
對系統的操作 - 在訊息不存在目標物件的情況下進行稽核,例如使用者登入與匯入/匯出操作。
稽核操作 - 呼叫稽核服務觸發器稽核訊息,並將訊息新增至稽核記錄。
稽核訊息包含稽核項目,其提供活動相關資訊。
稽核安全性前後關聯的轉換 
從 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__.
稽核項目 
每個稽核項目都由兩個元件組成,即「稽核類別金鑰」與「稽核訊息金鑰」。
「稽核類別金鑰」是一個當地語系化權杖,其可指定稽核訊息與之相關聯的功能區或類別。此金鑰為 STRING。如需類別清單,請參閱稽核類別
「稽核訊息金鑰」是指向稽核訊息文字的當地語系化權杖。此金鑰為 STRING
每個元件的值都從對應內建事件定義或實例中提取。
稽核訊息引數 
稽核訊息提供用來產生本地化文字訊息與執行此操作之實體名稱的引數。替代名稱/值對的 ValueCollection 用來產生本地化文字訊息。會從事件實例的 eventData 欄位擷取此資訊。ThingWorx 實體 (例如物件或使用者) 與稽核訊息相關聯,包括執行屬於稽核訊息主旨之操作的人員或項目。
稽核類別 
所有稽核項目都與稽核類別相關聯。稽核類別可讓您輕鬆篩選稽核資料,及查看某種類別之操作的活動趨勢。
每個稽核項目都有一個類別,其會與稽核項目一起儲存為字串。顯示的稽核類別字串已本地化。根據使用者偏好的地區設定,稽核類別會以適當語言顯示。
在 ThingWorx Composer 的「當地語系化權杖」表中,每個類別都有一個當地語系化權杖,且每個訊息都有一個當地語系化權杖。啟用/禁用類別與訊息時,這些權杖也稱為 CategoryKeyMessageKey
以下是當地語系化表的範例,其中顯示了稽核類別與訊息的當地語系化權杖名稱與值:
下表簡要說明了每個類別的稽核動作,並提供了相關範例。其中也提供類別與訊息的當地語系化權杖 (或「金鑰」)。
稽核類別、已稽核事件及其金鑰 (當地語系化權杖)
類別
描述
範例
類別金鑰與訊息金鑰
ANALYTICS
與分析實體有關的動作。由 ThingWorx Analytics 執行的操作。
對資料分析定義執行的建立、編輯、刪除操作。
ThingWorx Analytics 內的其他動作。
類別金鑰:audit.AuditCategory.Analytics
AUDIT
供內部稽核子系統使用。
預設為啟用。
可追蹤稽核服務執行,因為它們可能包含敏感性資料。稽核訊息會傳回執行服務的 USERNAME。依預設進行稽核的服務如下:
ArchiveAuditHistory
ArchiveAuditHistoryDirectPersistence
PurgeAuditData
ExportAuditData
ExportOnlineAuditData
CleanUpOfflineAudit
依預設,不會稽核下列服務:
QueryAuditHistory
QueryAuditHistoryWithQueryCriteria
QueryAuditHistoryContextConstrained
GetAuditEntryCount
類別金鑰:audit.AuditCategory.Audit
訊息金鑰:
audit.Audit.ExecutedService.ArchiveAuditHistory
audit.Audit.ExecutedService.ArchiveAuditHistoryDirectPersistence
audit.Audit.ExecutedService.PurgeAuditData
audit.Audit.ExecutedService.ExportAuditData
audit.Audit.ExecutedService.ExportOnlineAuditData
audit.Audit.ExecutedService.CleanUpOfflineAudit
audit.Audit.ExecutedService.Query AuditHistory
audit.Audit.ExecutedService.GetAuditEntryCount
AUTHENTICATION
與驗證有關的動作。
與使用應用程式金鑰相關之成功與失敗的使用者登入、使用者登出及錯誤。例如:Login successful for user: Administrator
Logout 項目可追蹤使用者登出動作。針對使用者啟動的從 ThingWorx Composer 的登出動作,會產生此項目。使用者名稱會包括在稽核訊息中。
LoginSucceeded 項目可追蹤成功的使用者登入動作。使用者名稱會包括在稽核訊息中。
LoginFailed 項目可追蹤失敗的使用者登入動作。使用者名稱會包括在稽核訊息中。
ApplicationKeySucceeded 項目可追蹤使用應用程式金鑰進行的成功驗證。使用者名稱會包括在稽核訊息中。
ApplicationKeyFailed 項目可追蹤使用應用程式金鑰進行的失敗驗證。使用者名稱會包括在稽核訊息中。
類別金鑰:audit.AuditCategory.Authentication
訊息金鑰
com.thingworx.things.security.SecurityMonitorThing.Logout.Audit
com.thingworx.things.security.SecurityMonitorThing.LoginSucceeded.Audit
com.thingworx.things.security.SecurityMonitorThing.LoginFailed.Audit
com.thingworx.things.security.SecurityMonitorThing.ApplicationKeySucceeded.Audit
com.thingworx.things.security.SecurityMonitorThing.ApplicationKeyFailed.Audit
COLLABORATION
與協同合作實體有關的動作。
對部落格及 Wiki 執行的建立、編輯與刪除操作。
類別金鑰:audit.AuditCategory.Collaboration
DATA_MANAGEMENT
與管理或使用資料有關的動作。
對資料執行的刪除操作。
類別金鑰:audit.AuditCategory.DataManagement
DATA_STORAGE
與資料儲存實體及相關子系統有關的動作。
對資料表、串流及其他資料儲存實體執行的建立、編輯與刪除操作。
類別金鑰:audit.AuditCategory.DataStorage
DEVICE_COMMUNICATION
與 Edge 裝置通訊有關的動作。
會稽核 WSCommunicationSubsystemCloseWebSocketSessions 服務。如需有關服務的詳細資訊,請參閱「WebSocket 通訊子系統」主題「服務」部份的內容
* 
如需代理程式的遠端工作階段以及代理程式的 SCM 封裝部署的相關稽核訊息,其各自的稽核類別 REMOTE_ACCESSSCM 會提供相關動作的稽核訊息。
類別金鑰:audit.AuditCategory.DeviceCommunication
FILE_TRANSFER
與檔案上載與下載有關的動作及事件。
適用於檔案傳輸、成功完成傳輸、取消傳輸及在傳輸期間產生錯誤。
類別金鑰:audit.AuditCategory.FileTransfer
IMPORT_EXPORT
與將資料匯入 ThingWorx 及將資料從中匯出有關的動作。
模型及資料匯入/匯出操作。
匯入延伸功能。
類別金鑰:audit.AuditCategory.ImportExport
LIFECYCLE
與物件特定事件 (例如 ThingEnable) 有關的動作
當在物件上呼叫相應服務時,會產生諸如 ThingEnableThingDisable 的事件。由於在 ThingWorx Platform 啟動與重新啟動期間載入的原因,稽核 ThingStart 事件預設為禁用。
類別金鑰:audit.AuditCategory.Lifecycle
訊息金鑰:
com.thingworx.things.Thing.ThingStart.Audit
audit.EntityLifecycle.Enable
audit.EntityLifecycle.Disable
與所有實體 (包括物群組) 有關的建立與刪除操作
稽核操作與訊息如下:
使用者 X 已建立新物群組 Y - 稽核訊息為「已建立 type "name"」。
使用者 X 已刪除物群組 Y - 稽核訊息為「已刪除 type "name"」。
使用者 X 已刪除物群組 Y 的所有子成員 - 稽核訊息為「已刪除 typename 的所有子成員」。
類別金鑰:audit.LifeCycle
訊息金鑰:
audit.LifeCycle.Created
audit.LifeCycle.Deleted
audit.LifeCycle.DeletedAll
THINGGROUPMEMBERSHIPS
與物群組成員資格有關的新增操作
稽核操作與稽核訊息如下:
使用者 X 已新增物件 123 作為物件群組 Y 的子成員 - 稽核訊息為「已新增 thingName 物件作為 thingGroupName 物群組的子成員」
使用者 X 已新增物群組 ABC 作為物群組 Y 的子成員 - 稽核訊息為「已新增 thingGroupName1 物群組作為 thingGroupName2 物群組的子成員」
類別金鑰:audit.ThingGroupMemberships
訊息金鑰:
com.thingworx.thinggroups.ThingGroup.AddedThingAsChildMember
com.thingworx.thinggroups.ThingGroup.AddedThingGroupAsChildMember
與物群組成員資格有關的刪除操作
稽核操作與稽核訊息如下:
使用者 X 已刪除作為物群組 Y 子成員的物件 123 - 稽核訊息為「已刪除作為物件群組 thingGroupName 子成員的物件 thingName
使用者 X 已刪除作為物群組 Y 子成員的物群組 ABC - 稽核訊息為「已刪除作為物件群組 thingGroupName2 子成員的物件群組 thingGroupName1
使用者 X 已刪除物群組 Y 的所有子成員 (物件與/或 ThingGroup) - 稽核訊息為「已刪除物件群組 thingGroupName 的所有子成員」
類別金鑰:audit.ThingGroupMemberships
訊息金鑰:
com.thingworx.thinggroups.ThingGroup.DeletedThingAsChildMember
com.thingworx.thinggroups.ThingGroup.DeletedThingGroupAsChildMember
com.thingworx.thinggroups.ThingGroup.DeletedAllChildMembers
MODELING
與「建模」實體有關的動作。建立實體時,系統會產生包括指派給新實體之擁有者的稽核訊息。請注意,實體擁有者會自動設定為建立實體的使用者名稱。
當使用任何建立實體的方式時,系統都會產生稽核訊息:
在 Composer 中透過 PUT 呼叫
透過對 Create API、Clone API 或 SetOwnerAPI 的呼叫
任何有權檢視稽核子系統的使用者都可以檢視有關擁有權變更的報告。
對「物件」、「物範本」、「物形式」、「資料形式」、網路、專案、模型、標籤執行的建立、編輯、刪除操作。
稽核訊息的格式為:
"Created <Source Type> <Source> with owner <username of owner>."
其中:
Source Type 是所建立的實體種類。例如,物件。
Source 是新實體的名稱。
owner 會顯示執行建立動作之使用者的 username
類別金鑰:audit.AuditCategory.Modeling
訊息金鑰為:audit.EntityLifecycle.Create
REMOTE_ACCESS
與遠端存取 (通道傳輸) 有關的動作。
使用者工作階段開始 - 稽核訊息包括使用者 id 與工作階段的開始時間。
使用者工作階段停止 - 稽核訊息包括使用者 id、工作階段的結束時間以及總時間。
類別金鑰:audit.AuditCategory.RemoteAccess
SCM (Software Content Management)
與封裝、部署及組態變更有關的動作。
建立、編輯、發佈及刪除封裝。建立、開始、轉移及刪除部署。包括測試與實際部署、針對測試部署指定的資產,以及成功或失敗的封裝安裝。自動清除與同步部署的組態變更。
當部署由使用者直接啟動時,封裝部署的資訊包括使用者 id。當部署由平台啟動時,SYSTEM 會作為部署封裝的實體列出。
類別金鑰:audit.AuditCategory.SoftwareManagement
SECURITY_CONFIGURATION
與安全性實體及權限 (包括使用者、使用者群組、物群組、組織、應用程式金鑰、目錄服務以及驗證器) 有關的動作。
當實體的擁有權變更時,會產生稽核訊息。您可透過 Composer 、透過 API 呼叫或透過匯入實體 XML 檔案來變更擁有者
在下列情況下,不會產生擁有權稽核訊息:
稽核子系統已禁用。
實體已更新,但擁有權未變更。
SetOwner API 呼叫設定了已是實體擁有者的相同擁有者。
對使用者、使用者群組、物群組、組織、應用程式金鑰、目錄服務及驗證器執行的建立、編輯與刪除操作。
可以追蹤使用者群組變更。當將使用者或或使用者群組新增為另一個使用者群組的成員時,會產生 audit.Groups.Added 項目。當從使用者群組移除使用者或使用者群組時,會產生 audit.Groups.Removed 實體。
實體權限變更 (所有實體類型)。請參閱上述稽核安全性前後關聯的轉換部份。
擁有權變更稽核訊息的一般格式如下:
"Owner for <Source Type> <Source> changed from <original owner username> to <new owner username>."
其中:
Source Type 是其擁有者已變更之實體的種類。例如,物件。
Source 是其擁有者已變更之實體的名稱。
original owner username 會顯示執行變更動作之使用者的 username
new owner username 是新擁有者的 username
類別金鑰:audit.AuditCategory.SecurityConfiguration
訊息金鑰:
audit.Groups.Added
audit.Groups.Removed
audit.entity.ownership.change
管理員在「使用者管理子系統」中啟用及禁用物群組可見度權限委派
稽核操作與稽核訊息如下:
管理員已在「使用者管理子系統」中啟用物群組可見度權限委派 - 稽核訊息為「已啟用物群組可見度權限委派」。
管理員已在「使用者管理子系統」中禁用物群組可見度權限委派 - 稽核訊息為「已禁用物群組可見度權限委派」。
類別金鑰:audit.AuditCategory.SecurityConfiguration
訊息金鑰:
com.thingworx.thinggroups.ThingGroup.VisibilityPermissionDelegationEnabled
com.thingworx.thinggroups.ThingGroup.VisibilityPermissionDelegationDisabled
SYSTEM
與系統實體有關的動作。
對當地語系化表、資源、子系統及記錄檔執行的建立、編輯與刪除操作。
子系統組態變更與動作,包括啟動、停止與重新啟動。所有子系統相關項目都在此類別中,根本不會顯示在其他類別中。
* 
重新啟動操作會產生二或三個稽核訊息,具體視呼叫重新啟動時子系統的狀態而定。如果子系統的狀況是 RUNNING,會寫入三個訊息,重新啟動、停止與啟動各一個。如果子系統的狀況不是 RUNNING,則會寫入兩個訊息,重新啟動與啟動各一個。在此情況下,不會執行停止動作。
類別金鑰:audit.AuditCategory.System
VISUALIZATION
與「視覺化」實體有關的動作。
對混搭、主物件、小工具、儀表板、選單、媒體實體、樣式定義及狀態定義執行的建立、編輯與刪除操作。
類別金鑰:audit.AuditCategory.Visualization
啟用及禁用稽核事件 
重新啟動 ThingWorx Platform 時,所有物件都會觸發 ThingStart 事件。稽核所有這些事件會導致平台的啟動時間很長。為了避免發生這種情況,LIFECYCLE 類別中的 ThingStart 事件預設為禁用。下表顯示了預設為禁用的其他稽核訊息:
預設為禁用的稽核訊息
稽核類別
稽核訊息金鑰
AUDIT
audit.Audit.ExecutedService.QueryAuditHistory
audit.Audit.ExecutedService.QueryAuditHistoryWithQueryCriteria
QueryAuditHistoryContextConstrained
audit.Audit.ExecutedService.GetAuditEntryCount
THINGGROUPMEMBERSHIPS
com.thingworx.thinggroups.ThingGroup.AddedThingAsChildMember
com.thingworx.thinggroups.ThingGroup.DeletedThingAsChildMember
com.thingworx.thinggroups.ThingGroup.AddedThingGroupAsChildMember
com.thingworx.thinggroups.ThingGroup.DeletedThingGroupAsChildMember
com.thingworx.thinggroups.ThingGroup.DeletededAllChildMembers
LIFECYCLE
audit.Lifecycle.ThingStart
如果您仍要稽核上表中所列的任何操作,您可編輯平台組態檔案 platform-settings.json 來啟用訊息。此外,如果您要禁用不使用的類別與事件訊息,也可藉由編輯此組態檔案來實現。
* 
您無法啟用或禁用 LIFECYCLE 類別中的個別事件。您必須使用標記法 "MessageKeys" : ["ALL"] 來啟用或禁用全部這些事件。
欲檢查哪些類別已禁用,請轉至 ThingWorx Composer,然後在左側導覽面板中,轉至「監視」 > ApplicationLog, 並搜尋已禁用的稽核類別。
* 
若要針對稽核類別與事件訊息對 platform-settings.json 檔案進行變更,需要重新啟動 ThingWorx Platform 實例。應盡量減少進行此類變更的頻率。
platform-settings.json 檔案中並不包含「稽核」的區段。欲啟用或禁用類別與訊息,您需要將 JSON 結構新增至檔案。針對您要稽核其訊息的 ThingWorx Platform 實例,需要使用者擁有找出並編輯 platform-settins.json 檔案,然後新增適當組態的權限。
* 
您必須將「稽核」部份作為同層級節點新增至 PlatformSettingsConfig 的 JSON 項目。它可位於 PlatformSettingsConfig 節點之前或之後,但不得位於相同節點層級。
欲啟用或禁用特定事件的稽核:
1. 導覽至 ThingWorxPlatform 目錄,並使用文字編輯器開啟 platform-settings.json 檔案。
2. 在檔案結尾,建立一個名為 "Audit" 的新群組,並遵循下列模式新增類別與事件訊息的群組與金鑰:
每個類別在 "Enabled" 群組或 "Disabled" 群組中都有它自己的 "CategoryKey" 項目。
每個類別金鑰後面都必須跟有一個 "MessageKeys" 項目。欲啟用或禁用整個類別,您必須同時擁有與下列範例類似的類別金鑰與訊息金鑰:

"CategoryKey" : "audit.AuditCategory.Audit"
"MessageKeys" : ["ALL"]
"CategoryKey" 可接受表 122 中所示類別的金鑰字串。例如,audit.AuditCategory.Lifecycle
"CategoryKey" 值一律由雙引號分隔。行一律以逗號結尾。
無論存在一個還是多個訊息金鑰,"MessageKeys" 項目一律使用方括弧括住值。如果存在多個訊息金鑰,則在每個金鑰結尾使用一個逗號,最後一個金鑰除外。
"MessageKeys" 可接受表 122 中所示的文字字串 ["ALL"] 與訊息金鑰。
請務必針對每個群組使用正確的方括弧,如以下範例所示。

"PlatformSettingsConfig:: {
"BasicSettings":( . . .
}
}
"Audit": {
"Disabled": [{
"CategoryKey": "audit.AuditCategory.Collaboration",
"MessageKeys": ["ALL"]
}, {
"CategoryKey": "audit.AuditCategory.Authentication",
"MessageKeys": [
"com.thingworx.things.security.SecurityMonitorThing.LoginSucceeded.Audit",
"com.thingworx.things.security.SecurityMonitorThing.ApplicationKeySucceeded.Audit"
]
}],
"Enabled": [{
"CategoryKey": "audit.AuditCategory.Lifecycle",
"MessageKeys": ["ALL"]
}, {
"CategoryKey": "audit.AuditCategory.Authentication",
"MessageKeys": [
"com.thingworx.things.security.SecurityMonitorThing.LoginFailed.Audit"
]
}, {
"CategoryKey": "audit.AuditCategory.ThingGroupMemberships",
"MessageKeys": [
"com.thingworx.thinggroups.ThingGroup.DeletdThingAsChildMember"
"com.thingworx.thinggroups.ThingGroup.DeletedThingGroupAsChildMember"
"com.thingworx.thinggroups.ThingGroup.DeletedAllChildMembers"
]
}, {
"CategoryKey": "audit.AuditCategory.Authentication",
"MessageKeys": [
"com.thingworx.things.security.SecurityMonitorThing.LoginFailed.Audit"
]
}]
}
3. 儲存並關閉檔案。
4. 如果要對 platform-settings.json 檔案進行任何變更,您需要停止並重新啟動 ThingWorx Platform。
如需詳細資訊,請參閱主題 platform-settings.json 組態詳細資訊中的「將已稽核事件部份新增至 platform-settings.json」一節。
這是否有幫助?