审计追踪
Xinye.wang(讨论 | 贡献)2021年8月11日 (三) 12:17的版本
审计追踪,可以对系统进行关键操作的时候,留下审计日志,以备今后查看。审计日志受到电子签名的保护,生成之后无法篡改。同时,所有的用户相关操作,会自动计入审计日志,以确保审计日志的生成者,是有迹可循的。审计追踪模块符合美国FDA Title 21 CFR Part 11的相关法律法规的规定。
术语解释
- 审计日志:在进行一些操作时,需要留下操作日志,并且该日志必须与某一操作人进行绑定。此种操作日志由电子签名来保护,只有持有操作人本人的私钥,才可以生成。且一经生成,无法修改。审计日志包含内容与电子签名两部分:
- 内容:即记录的信息本身,如某操作员在某时刻做了何种操作。
- 电子签名:用验证内容是否被修改的一段信息。
- 私钥:私钥是用来生成电子签名的一段信息,与某一操作员一一对应。使用私钥对某一审计日志生成电子签名,则在法律上视为该操作员的手动签名,具有法律效力。
- 私钥属于敏感信息,存储时以操作密码加密保存。拿到了私钥,意味着可以以某位操作员的身份生成审计日志。
- 私钥可以推导出与之为唯一对应的公钥,可以用来验证电子签名。
- 公钥:与私钥一一对应,可以由私钥推倒出来。可以用于验证电子签名。如其所名,公钥是可以公开的信息。
- 电子签名:由用户的私钥,对审计日志的内容进行运算,所生成的一段信息。
何种操作会被记入审计日志
- 在画面组态时,设定被记入审计日志的操作
- 一切对用户和用户组进行修改的操作
审计日志的字段
| 字段名 | 含义 | 说明 |
|---|---|---|
| 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虽然理论上可以在输出后修改,但是可以支持进行审计日志验证。任何修改都会导致该条审计日志签名验证失败,即无效。
- ↑ base58是一种可以将任意二进制数据,映射为数字1-9,以及英文字母A-Z的编码,且去除有歧义的字符,例如数字0、字母O,小写字母l等。此种编码是为了让任意二进制数据,可以由人类进行阅读。它与二进制数据可以互相转化。