Skip to content

This document was written by AI and has been manually reviewed.

审核日志(Transparent Control)

本文档由 AI 撰写并经过人工审核。

Prism 会将与安全相关的操作记录到一个只追加(append-only)的审核日志中,并按三个作用域拆分。每个作用域仅对相应的负责人可见,并各自拥有实时 Webhook。

作用域可查看者记录内容
Transparent User Control用户本人,以及站点管理员自己的登录 / 授权 / 撤销访问 / 换绑 / 账户变更,以及自己拥有的应用的授权事件
Transparent Team Control团队 owner / co-owner,以及站点管理员团队中的所有编辑与人员变动,以及团队所拥有应用的授权事件
Transparent Platform Control平台管理员任何管理员操作

在哪里查看

  • 用户 — 仪表盘 →通知 → 审核日志标签页。
  • 团队 — 团队页面 →审核日志标签页(位于邀请设置之间)。
  • 平台 — 管理面板 →审核日志标签页。
  • 以管理员身份查看任意用户 — Admin → Users → 管理 →审计标签页(GET /api/audit/user/:userId/events)。

管理员可见性

站点管理员可以读取全部三个作用域。这不是模型上的漏洞,而是模型的另一半:当管理员对某个团队或账号执行操作时,记录会写入该作用域自己的日志,并标记 site_admin: true,使相应的负责人能看到别人对自己做了什么。一个能操作却看不到记录的运营者,只会产出无人核对的记录。

唯一不提供的是「以他人身份登录」。每一项管理员操作都带着操作者的名字;为他人签发的会话会把这些操作洗进用户自己的历史里。

导出

导出对每个作用域都可用,而不只是平台作用域:被要求就某事作出说明的团队,需要一份可以交出去的自己的日志;用户询问实例保存了哪些关于自己的记录,本质上是同一个请求。

GET /api/audit/<scope>/export?format=csv|json 接受与表格相同的筛选条件,因此导出的内容就是你正在查看的内容。上限 10000 条事件 —— 能拿到的截断导出胜过会超时的完整导出。CSV 中的时间戳是 ISO 字符串;JSON 导出保留原始的 Unix 秒。

每条事件记录的内容

每条事件都会存储并展示:

  • 时间 — 事件发生的时间。
  • 操作用户 — 执行操作的用户。展示解析出的名称,悬停可查看其 id。
  • 操作 — 稳定的操作标识,如 user.loginteam.member.add
  • 资源 — 受影响的对象,展示解析后的结果(如 用户 @wyf9)。悬停可查看资源类型 slug 与 id(如 user / 36b3…)。
  • 请求 IP — 仅展示前缀(IPv4 111.111.*,IPv6 2400:0000:*);悬停可查看完整地址。
  • 客户端 — 仅展示解析出的客户端类型;悬停可查看完整 User-Agent。
  • 查看详情 — 每行最右侧的按钮会打开弹窗,显示该事件的完整信息,包括原始元数据。

筛选

每个审核面板顶部都有时间区间筛选和操作类型筛选。点击任意行中的操作用户、操作或资源单元格即可设置对应筛选,清除筛选按钮可重置全部筛选。

Webhook

每个审核面板都有一个编辑 Webhook按钮(右上角),点击进入该作用域的 Webhook 管理页。Webhook 会将该作用域的审核事件实时推送到外部目标。提供三种预设:

Discord

填入 Webhook URL。事件以 embed 卡片形式发送。

Telegram

填入 Bot Token(必填),可选填 会话 IDThread ID。消息以格式化 HTML 发送。

通用 Webhook

填入 URL方法GET / POST)、请求头(JSON 对象)和请求体(用于 POST)。所有部分都支持 {placeholder} 动态值插值:

占位符
{id}事件 id
{action}操作标识
{actor_id}操作用户 id
{actor_name}操作用户名称
{resource_type}资源类型 slug
{resource_id}资源 id
{resource_name}解析后的资源名称
{ip}完整请求 IP
{user_agent}完整请求 User-Agent
{timestamp}unix 时间戳
{metadata}JSON 编码的元数据
{summary}一行可读摘要

每个 Webhook 都有一个事件字段:以逗号分隔的操作名称列表,或用 * 表示该作用域下的所有事件。

从旧 Webhook 系统迁移

旧的实例 / 用户 Webhook 功能已被本系统取代。管理员可在管理面板 → 设置 → 危险区域 → 迁移旧版 Webhook中将旧 Webhook 导入到新系统——每个旧 Webhook 会在对应作用域中变为一个通用 Webhook。该操作是幂等的,可安全地多次运行。

在 GPL-3.0 许可协议下发布.