跳转至
For the complete DHIS2 documentation index, see llms.txt.

审核

介绍

DHIS2 支持基于_Apache ActiveMQ Artemis_ 的新审计服务。Artemis 被 DHIS2 用作异步消息传递系统。

实体保存到数据库后,将创建一条审计消息,并发送到 Artemis 消息消费者服务。然后,该信息将在不同的线程中处理。

可从 DHIS2 数据库检索审计日志。目前还没有可用的用户界面或 API 端点来检索审计条目。

有关审计系统结构的详细说明,请参阅 此处。

我们记录的内容{ #what_we_log }

这是我们作为审计系统一部分而记录的操作列表:

  • 对用户账户进行操作(如但不限于创建和编辑个人资料)
  • 对用户角色、组和权限组的操作
  • 对元数据对象(如但不限于类别、组织单位、报告)进行操作
  • 对跟踪对象(如但不限于跟踪实体)进行操作
  • 工作配置
  • 打破玻璃操作

单审核表

所有审计条目(与跟踪实体相关的条目除外)都将保存到一个名为 "审计 "的表中

柱 类型 描述
受审核者 整数 主键。
审核类型 文本 读取,创建,更新,删除,搜索
审计范围 文本 元数据,汇总,跟踪器
克拉斯 文本 审计实体 Java 类名。
属性 jsonb 包含已审核对象属性的 JSON 字符串。示例:{"valueType": "TEXT", "categoryCombo": "SWQW313FQY", "domainType": "TRACKER"}.
数据 比蒂亚 审计实体的字节数组格式压缩 JSON 字符串(非人工可读)。
创建于 没有时区的时间戳 创建时间
由...制作 文本 执行审计操作的用户的用户名。
storedByDataValue 文本 被审计对象的 UID。
码 文本 被审计对象的代码。

审计服务使用了两个新概念:审计范围_和审计类型_。

审核范围

审计范围是可以审计的应用项目的逻辑区域。目前有三种审计范围。

范围 键 审计对象
追踪器 跟踪器 跟踪实体、注册、事件。
元数据 元数据 所有元数据对象(如数据元素、组织单位)。
总计 总计 汇总数据值。

审核类型

审计类型是触发审计操作的操作。目前,我们支持以下四种类型。

名称 键 描述
阅读 阅读 目标已宣读。
false 创建 对象已创建。
如果为 "true",它将跳过运行导入的任何项目规则 更新 对象已更新。
删除 删除 对象已删除。
残疾 禁用 禁用审计。

注意事项

READ 审计类型可能会在数据库中生成大量数据,并可能影响性能。

跟踪实体审计{ #tracked-entity-audits }

对跟踪实体的操作存储在 "trackedentityaudit "表中。

跟踪审计{ #trackedentityaudit }

柱 类型 描述
追踪的审计编号 整数 主键。
跟踪身份 文本 跟踪实体名称。
GET /api/metadata/proposals?filter=status:eq:ACCEPTED 没有时区的时间戳 创建时间
访问 文本 执行审计操作的用户的用户名。
审核类型 文本 读取,创建,更新,删除,搜索
描述 文本 被审计对象的代码。

可通过 [API](#webapi_tracked_entity_audits)检索这些数据。

打破玻璃

打破玻璃功能允许在特殊情况下访问 DHIS2 用户无权访问的记录。因此,用户必须输入理由才能访问这些记录。

在我们的 Youtube 频道 此处 中可以找到解释其工作原理的视频。

打碎玻璃事件存储在 "programtempownershipaudit "表中,如下所述:

柱 类型 描述
项目编号 整数 主键。
programid 整数 被跟踪实体所属的计划 ID。
trackedentityid 整数 属性值所属的跟踪实体 ID。
GET /api/metadata/proposals?filter=status:eq:ACCEPTED 没有时区的时间戳 创建时间
访问 文本 执行审计操作的用户的用户名。
提案的唯一标识符 文本 对话框中插入的原因。

设定

以下范围和类型默认启用审计系统。

范围(区分大小写):

  • 阅读
  • 项目阶段标识方案
  • 更新
  • 删除
  • 搜索
  • 已禁用

类型

  • 数据数据
  • 跟踪器
  • AGGREGATE

这意味着**无需任何操作**即可启用默认审计系统。默认设置相当于以下 dhis.conf 配置。

audit.metadata = 创建;更新;删除
audit.tracker = 创建;更新;删除
audit.aggregate = 创建;更新;删除

可以使用_审计矩阵_配置审计。审计矩阵表示范围和类型的有效组合,并在dhis.conf 配置文件中使用以下属性定义。每个属性都接受以分号 (;) 分隔的审计类型列表。

  • 审核元数据
  • audit.tracker
  • 审计汇总

Artemis{ #artemis }

Apache ActiveMQ Artemis是一个开源项目,旨在构建一个多协议、可嵌入、高性能、集群、异步的消息传递系统。自 2.31 版起,它已成为 DHIS2 的一部分,并被用作消耗审计日志的系统。

默认情况下,DHIS2 将启动一个嵌入式 Artemis 服务器,该服务器由应用项目内部使用,用于存储和访问审计事件。

但是,如果您已经有了一个 Artemis 服务器,您可以从 DHIS2 连接到它来发送审计事件,如我们的[官方文档](#webapi_amqp_configuration)所述:在这种设置下,审计事件将从 DHIS2 流向外部 Artemis 系统。

log4j2{ #log4j2 }

log4j2 是用于处理输出消息的默认 DHIS2 日志库。它用于控制在哪个文件中记录哪些事件。

应用项目会发送一个log4j2 默认配置文件,其中指示要记录哪些信息以及在哪里记录(控制台)。然后,DHIS2 会按照log4j 配置类 中的说明导入该文件并指示日志记录,即把输出从控制台重定向到文件。

从 2.36 到 2.38,审计日志文件 dhis-audit.log 每天午夜 被轮换。

这里]()提供了一个自定义 log4j2 配置的示例:它展示了如何配置 DHIS2 将所有日志保存到外部存储位置,每周轮换并保留 30 天。请阅读 应用项目日志部分 了解如何使用。

例子

本节演示如何在 dhis.conf 中配置审计系统。

仅对元数据和跟踪器的创建和更新进行审计:

属性 audit.metadata = 创建;更新 audit.tracker = 创建;更新 audit.aggregate = 禁用

只审核跟踪器相关对象的创建和删除:

```属性
audit.metadata = 禁用
audit.tracker = 创建;删除
audit.aggregate = 禁用

要完全禁用所有作用域的审计:

audit.metadata = 禁用
audit.tracker = 禁用
audit.aggregate = 禁用

我们建议按照 2.38 版的默认设置将审计跟踪保存到文件中。对于旧版本,以下配置可将审计日志保存到 $DHIS2_HOME/logs/dhis-audit.log 文件中:

属性 audit.database = 关闭 audit.logger = on

要将审计数据存储到数据库中,请在 `dhis.conf` 文件中添加以下内容(2.38 版之前为默认值):

属性
audit.database = 开
audit.logger = 关闭

要从 "审计 "表中提取日志,可以在运行 DHIS2 的系统中使用dhis2-audit-data-extractor:

$ python extract_audit.py extract

请阅读文件了解详情。

要解析日志文件中的条目,可以使用下面的 python 脚本:

$ grep "auditType" dhis-audit.log | python extract_audit.py 解析

或使用 jq 如下:

$ grep "auditType" dhis-audit.log | jq -r .

要选择特定日期内的事件,可以使用下面的 jq(在本例中,我们选择 2022 年 1 月至 2022 年 6 月底之间发生的所有事件):

$ grep "auditType" dhis-audit.log | jq -r '.[] | select ( (.datetime >="2022-01-01") and (.datetime <="2022-06-30") )'

与 extract_audit 相同:

$ python3 extract_audit.py extract -m stdout -f JSON | jq -r '.[] | select ( (.datetime >="2022-01-01") and (.datetime <="2022-06-30") )'