跳到主要内容
版本:1.9.1

1.9.1 仅管理员管理面的权限迁移

1.9.1 起仅保留 admin 管理权限,旧配置中的 user、guest 账号也无法登录。请由管理员手动修改 sureness.yml,仅将可信用户角色改为 admin,重启后重新登录。admin 拥有平台全部管理权限,请谨慎分配;不会自动提权或删除账号。

有意的权限兼容性变更​

HertzBeat 1.9.1 有意取消管理面的 user、guest 和自定义非管理员角色。管理面仅支持精确的 admin 角色,包括原本允许低权限读取的操作。这是权限兼容性变更:升级不会删除旧账号、不会自动赋予 admin,也不会删除生产用户数据或迁移其资源所有权。

admin 是全实例可信管理者。部署方必须确认人员或自动化确实可信、确有需要后,才手动授予此角色。平台不承诺管理员之间的资源或凭据隔离,但仍须保护未授权访问,认证绕过、秘密泄露和其他安全问题仍需修复;不能据此宣称旧漏洞不存在。已有秘密默认掩码保持不变,本迁移不新增明文显示功能。

升级前准备​

  1. 盘点部署账号源中的 user、guest、自定义角色及自动化凭据;盘点浏览器会话、旧 JWT、refresh token 和受管理 API token,确认其所有者和用途。
  2. 逐一确认哪些人员和自动化可以管理整个实例,只有确认可信者才由部署方手动赋予 admin。角色列表包含 admin 才算管理员,administrator 等别名不算。不要执行批量自动提权脚本,不要将所有旧账号统一改成 admin。
  3. 不愿授予 admin 的人员,升级后不得继续访问管理 UI 或管理 API;本版本没有替代的管理只读角色。不要通过旧外置宽泛权限规则或认证排除列表绕过此限制。
  4. 将发行包 sureness.yml 的管理规则合并到挂载或自定义配置,同时保留经审查的实际账号凭据及下列机器接入规则。不要用示例文件覆盖部署账号。升级不会改写部署账号记录或自动增加权限。
  5. 可以先在测试环境验证:admin 正常登录和读写;旧 user/guest/自定义角色的登录、刷新和管理请求被拒;旧非 admin JWT/API token 被拒;已删除、禁用或降权的 admin 被拒;下列每种集成仍正常。修改文档账号源后需重启,让缓存账号信息重新加载。
  6. 获批管理员重新登录,按需替换和撤销管理自动化 token。新签发的管理 access/API token 仅包含 admin。旧非 admin access/API token 不会因账号后来获批而自动获得 admin;refresh 也只对当前已获批 admin 的账号成功,不能将它理解成自动迁移账号。

不要仅为恢复集成而将采集凭据换成 admin token:admin token 拥有其获批所有者的管理能力。必须单独审查这些权限,或保留集成当前已允许的机器认证方式并安排其后续生命周期。

后端强制边界​

Servlet 认证过滤器同时要求:已认证主体精确具有 admin,且当前账号仍存在、有效并仍有 admin。该边界覆盖 /api 下的管理读写及未来未列规则的操作,包括新建、编辑、克隆、检测、导入导出、通知测试、配置、模板、插件、chat/SOP、MCP,也覆盖管理类 Actuator、OpenAPI 和 H2 控制台路径。它不依赖外置角色或排除规则。无主体返回 401,非 admin 或失效的当前管理员返回 403;认证和既有 managed-token 撤销校验保持启用。

登录和刷新检查凭据及当前账号状态,拒绝非 admin 管理会话。创建管理 API token 同时要求 admin 主体与当前 admin 账号。前端对整个管理路由和菜单做门禁,并拒收非 admin 登录响应;本地角色存储不是安全边界。

旧外置配置即使允许 user/guest 或排除管理路径,也不能重新开放管理面。错误排除会使 admin 也没有认证主体而被拒,应修正配置而非关闭认证。既有明确限制(如禁止通过接口读取系统签名/加密密钥)对 admin 仍然有效。

公开和机器入口例外​

以下仅保留原有认证、授权和协议用途,不代表全部匿名、不增加任何凭据的权限,也不提供管理旁路。只有列出的路径及方法免于新增 admin 管理门禁,仍执行原有 Sureness 与协议校验。

用途方法与路径保留的原政策
登录、刷新POST /api/account/auth/form、/api/account/auth/refresh公开认证入口,但服务仅给当前 admin 签发管理会话
UI 元数据GET/HEAD /api/i18n/{lang}、/api/apps/hierarchy既有公开读取;其他模板定义读取属于管理面
公开状态页GET/HEAD /api/status/page/public/org、/component、/component/{id}、/incident既有公开状态响应;写入不在例外内
Prometheus pushPOST /api/push/prometheus/**保留现有匿名 push 政策及协议校验
OTLP HTTPPOST /api/otlp/v1/logs、/metrics、/traces保留原有已认证 admin/user 采集规则,不增加 guest 权限
旧 OTLP 日志别名POST /api/logs/otlp/v1/logs、/api/logs/ingest/otlp保留采集认证,不新增其他协议
Alertmanager 接入POST /api/v2/alerts保留原有已认证 admin/user 机器接入规则
健康探针GET/HEAD /actuator/health、/actuator/health/liveness、/actuator/health/readiness保留部署原认证;发行包 Actuator 规则仍限 admin,不新增默认公开健康接口
Prometheus 抓取GET/HEAD /actuator/prometheus保留原认证;发行包规则仍限 admin
采集器传输既有 1158 端口协议不改协议或认证,本次是 HTTP 管理面迁移

为避免给机器凭据提权或破坏现有接入,旧 user 名称只在已受保护的机器采集规则中保留,不再授予任何管理操作。旧机器凭据继续按原机制过期或撤销;本次不新增受限自动化 token 系统。静态资源仍可读取,以加载登录和公开状态页。

验证与上线​

先用合成凭据与本地目标验证,同时检查 API 和按钮可见性,保持认证启用,保留经审查的部署配置副本。本迁移与 1.9.1 其他校验、凭据处理和诊断加固修复分开,不替代这些修复,也不代表完整安全面已经测试通过。

登录指引与更新提示​

登录页在认证前说明迁移要求。登录或刷新失败统一返回非敏感提示,不确认账号是否存在,也不返回账号角色。请联系部署管理员审查账号配置,登录界面不会执行权限迁移。

首次访问本版本管理界面时,现有“关于”弹框展示 1.9.1 权限迁移说明,即使用户曾关闭旧版提示也会显示。浏览器记忆已展示版本,普通刷新不重复弹出;首次迁移提示保留至手工关闭。后续登录沿用原有“下次不再显示”和定时关闭机制,也可从用户菜单重新打开。浏览器提示偏好不会影响后端鉴权。