「审计追踪」修訂間的差異

出自先虑百科
跳至導覽 跳至搜尋
第1行: 第1行:
=== 术语解释 : ===
== 术语解释 ==


* 审计日志:在进行一些操作时,需要留下操作日志,并且该日志必须与某一操作人进行绑定。此种操作日志由电子签名来保护,只有持有操作人本人的私钥,才可以生成。且一经生成,无法修改。审计日志包含'''内容'''与'''电子签名'''两部分:
* 审计日志:在进行一些操作时,需要留下操作日志,并且该日志必须与某一操作人进行绑定。此种操作日志由电子签名来保护,只有持有操作人本人的私钥,才可以生成。且一经生成,无法修改。审计日志包含'''内容'''与'''电子签名'''两部分:
第12行: 第12行:
** 可以用公钥来验证,审计日志的内容是否是有效的(未被篡改)。
** 可以用公钥来验证,审计日志的内容是否是有效的(未被篡改)。
** 验证:使用公钥,对审计日志的内容与电子签名做验证的运算,可以知道此内容与此签名是否匹配。匹配则说明,此电子签名是由该公钥的对应的私钥所生成。而私钥对应于某一操作员,那就可以认定,该审计日志确实是由该操作员所生成。
** 验证:使用公钥,对审计日志的内容与电子签名做验证的运算,可以知道此内容与此签名是否匹配。匹配则说明,此电子签名是由该公钥的对应的私钥所生成。而私钥对应于某一操作员,那就可以认定,该审计日志确实是由该操作员所生成。
== 何种操作会被记入审计日志 ==
* 在画面组态时,设定被记入审计日志的操作
* 一切对用户和用户组进行修改的操作
== 审计日志的字段 ==
{| class="wikitable"
|+
!字段名
!含义
!说明
|-
|signature_timestamp
|日期
|生成的日期
|-
|operator_id
|操作人的ID
|操作人的数据库主键
|-
|operator_name
|操作人姓名
|在本日志生成时,操作人的姓名
|-
|operator_key_id
|私钥ID
|签名所使用私钥的主键
|-
|private_key_fingerprint
|私钥指纹
|签名所使用的私钥的指纹
|-
|category
|类别
|在组态时设定的审计追踪,类别为<code>user_action</code>。由系统自动记录的审计日志,分别有他们自己的类别
|-
|action
|动作
|何种操作的详细描述
|-
|target_id
|关联记录ID
|与<code>target_type</code>一起,可以定位到一条与该审计日志相关联的记录。由组态生成的审计日志,此项与<code>target_type</code>为空
|-
|target_type
|关联记录类型
|见<code>target_id</code>
|-
|extra
|额外信息
|对本操作有帮助的额外信息,以键值对形式存储。组态时可以将一些变量的当前值存在这里,以备今后查阅
|-
|remark
|操作备注
|在生成审计日志时,由操作员记录的可选信息。
|-
|nonce
|随机数
|为避免完全相同的审计日志出现,加入一个随机数
|-
|signature
|电子签名
|以上除本字段,均为审计日志的'''内容''',是生成电子签名,与验证电子签名的主体
|}
== 审计追踪的操作事项 ==
* 一个项目需要在项目属性里开启审计追踪,才可以启用审计追踪的功能。
* 项目在开发模式下,可以任意添加和编辑用户。这些操作不产生审计日志。
* 在项目预览时,第一次执行需要审计日志的操作之前,会要求进行审计日志初始化。
* '''审计追踪初始化''',在用户管理模块中进行。进行这个操作,会要求设置当前操作员的操作密码。之后,之前所有的,在开发模式下建立的用户、权限等信息,都被视为由该初始化用户所建立。
** 该用户的私钥,也会一并初始化
* 非初始化用户,在第一次触发需要使用审计日志的操作时,会要求设置操作密码。此时私钥也将生成
* 如果在开发预览模式下,初始化过审计日志,此时如果再在开发模式下添加、编辑用户,这些操作也不会记入审计日志。因此如果审查审计日志的完整性,将会出现问题,例如某用户找不到创建对应的审计日志,或其编辑历史与其当前状态不符合。这是正常现象。
* 在部署时,在部署的机器上,仍然需要'''审计追踪初始化'''。此时不会有开发模式进行编辑用户,因此审计日志是严格的。
== 审计日志的展示、导出与验证 ==
在'''审计日志'''组态模块中,可以直接浏览与搜索审计日志。同时审计日志支持以Excel与PDF格式进行导出。PDF格式仅能查看,但是普通手段无法修改。Excel虽然理论上可以在输出后修改,但是可以支持进行'''审计日志验证'''。任何修改都会导致该条审计日志签名验证失败,即无效。

於 2021年8月11日 (三) 12:13 的修訂

術語解釋

  • 審計日誌:在進行一些操作時,需要留下操作日誌,並且該日誌必須與某一操作人進行綁定。此種操作日誌由電子簽名來保護,只有持有操作人本人的私鑰,才可以生成。且一經生成,無法修改。審計日誌包含內容電子簽名兩部分:
    • 內容:即記錄的信息本身,如某操作員在某時刻做了何種操作。
    • 電子簽名:用驗證內容是否被修改的一段信息。
  • 私鑰:私鑰是用來生成電子簽名的一段信息,與某一操作員一一對應。使用私鑰對某一審計日誌生成電子簽名,則在法律上視為該操作員的手動簽名,具有法律效力。
    • 私鑰屬於敏感信息,存儲時以操作密碼加密保存。拿到了私鑰,意味着可以以某位操作員的身份生成審計日誌。
    • 私鑰可以推導出與之為唯一對應的公鑰,可以用來驗證電子簽名。
  • 公鑰:與私鑰一一對應,可以由私鑰推倒出來。可以用於驗證電子簽名。如其所名,公鑰是可以公開的信息。
  • 電子簽名:由用戶的私鑰,對審計日誌的內容進行運算,所生成的一段信息。
    • 原始內容是二進制信息,打印輸出時,採用base58[1]編碼進行輸出,目的是方便人類閱讀,其實質是與底層二進制完全一樣的,可以互相轉化。
    • 可以用公鑰來驗證,審計日誌的內容是否是有效的(未被篡改)。
    • 驗證:使用公鑰,對審計日誌的內容與電子簽名做驗證的運算,可以知道此內容與此簽名是否匹配。匹配則說明,此電子簽名是由該公鑰的對應的私鑰所生成。而私鑰對應於某一操作員,那就可以認定,該審計日誌確實是由該操作員所生成。

何種操作會被記入審計日誌

  • 在畫面組態時,設定被記入審計日誌的操作
  • 一切對用戶和用戶組進行修改的操作

審計日誌的字段

字段名 含義 說明
signature_timestamp 日期 生成的日期
operator_id 操作人的ID 操作人的數據庫主鍵
operator_name 操作人姓名 在本日誌生成時,操作人的姓名
operator_key_id 私鑰ID 簽名所使用私鑰的主鍵
private_key_fingerprint 私鑰指紋 簽名所使用的私鑰的指紋
category 類別 在組態時設定的審計追蹤,類別為user_action。由系統自動記錄的審計日誌,分別有他們自己的類別
action 動作 何種操作的詳細描述
target_id 關聯記錄ID target_type一起,可以定位到一條與該審計日誌相關聯的記錄。由組態生成的審計日誌,此項與target_type為空
target_type 關聯記錄類型 target_id
extra 額外信息 對本操作有幫助的額外信息,以鍵值對形式存儲。組態時可以將一些變量的當前值存在這裏,以備今後查閱
remark 操作備註 在生成審計日誌時,由操作員記錄的可選信息。
nonce 隨機數 為避免完全相同的審計日誌出現,加入一個隨機數
signature 電子簽名 以上除本字段,均為審計日誌的內容,是生成電子簽名,與驗證電子簽名的主體

審計追蹤的操作事項

  • 一個項目需要在項目屬性里開啟審計追蹤,才可以啟用審計追蹤的功能。
  • 項目在開發模式下,可以任意添加和編輯用戶。這些操作不產生審計日誌。
  • 在項目預覽時,第一次執行需要審計日誌的操作之前,會要求進行審計日誌初始化。
  • 審計追蹤初始化,在用戶管理模塊中進行。進行這個操作,會要求設置當前操作員的操作密碼。之後,之前所有的,在開發模式下建立的用戶、權限等信息,都被視為由該初始化用戶所建立。
    • 該用戶的私鑰,也會一併初始化
  • 非初始化用戶,在第一次觸發需要使用審計日誌的操作時,會要求設置操作密碼。此時私鑰也將生成
  • 如果在開發預覽模式下,初始化過審計日誌,此時如果再在開發模式下添加、編輯用戶,這些操作也不會記入審計日誌。因此如果審查審計日誌的完整性,將會出現問題,例如某用戶找不到創建對應的審計日誌,或其編輯歷史與其當前狀態不符合。這是正常現象。
  • 在部署時,在部署的機器上,仍然需要審計追蹤初始化。此時不會有開發模式進行編輯用戶,因此審計日誌是嚴格的。

審計日誌的展示、導出與驗證

審計日誌組態模塊中,可以直接瀏覽與搜索審計日誌。同時審計日誌支持以Excel與PDF格式進行導出。PDF格式僅能查看,但是普通手段無法修改。Excel雖然理論上可以在輸出後修改,但是可以支持進行審計日誌驗證。任何修改都會導致該條審計日誌簽名驗證失敗,即無效。

  1. base58是一種可以將任意二進制數據,映射為數字1-9,以及英文字母A-Z的編碼,且去除有歧義的字符,例如數字0、字母O,小寫字母l等。此種編碼是為了讓任意二進制數據,可以由人類進行閱讀。它與二進制數據可以互相轉化。