安全模型
Apache HertzBeat™ 是一个高可扩展的系统,其提供用户大量的自定义能力,用户可以通过自定义监控模板,自定义监控器,自定义插件等来对平台增强。在这种情况下,安全性是非常重要的。 本文档将介绍 Apache HertzBeat™ 的安全模型。 这里的安全模型主要涉及用户在扩展过程中需要注意的安全边界,以及如何保证用户的自定义不会对系统造成安全隐患。
下列管理自定义能力仅面向已获批准的管理员。
用户权限安全
1.9.1 的管理访问要求精确的 admin 角色。即使旧 sureness.yml 中仍配置 user 和 guest 角色,原账号也无法登录管理面。机器上报规则保留文档所述角色。管理员需手动编辑实际使用的 sureness.yml,仅将可信账号设置为 role: [admin],重启后重新登录。支持多个不同用户名的 admin 账号;admin 拥有平台全部管理权限,请谨慎分配。系统不会自动提权或删除原账号。
从 1.9.1 起,管理面仅支持 admin,这是有意的权限兼容性变更。旧 user/guest/自定义账号不会自动提权,部署方必须确认可信管理者后手动授予 admin;不授予者不得继续访问管理面。升级前请阅读权限迁移要求及账号配置,可先在测试环境验证。
admin 是全实例可信管理者,平台不承诺管理员之间的资源或凭据隔离。认证、防止未授权访问、已有秘密掩码及其他明确安全限制仍然保留;不能据此豁免秘密泄露或宣称旧漏洞不存在。公开和机器接入例外仅保留文档中列明的原有政策。
creator 字段仅记录资源创建者,不构成按所有者划分的授权、租户隔离或按监控对象划分的凭据隔离边界。
1.9.1 的监控配置导入与导出
以下限制适用于 1.9.1,不代表旧版本或尚未应用修复的部署已经具备此限制。
只有已认证且具有 admin 角色的用户,才能通过 GET /api/monitors/export 或 GET /api/monitors/export/all 导出监控配置,所有支持的导出格式均适用。user 和 guest 角色均无权导出。用户能够配置普通监控参数,不代表其有权导出这些敏感配置。
只有已认证且具有 admin 角色的用户,才能通过 POST /api/monitors/import 导入监控配置。user 和 guest 对所有文件格式(包括 JSON、Excel、YAML)和批量文件中的每个监控均无导入权限。管理员仍保留现有格式支持下的导入能力;权限检查不新增格式支持。只读监控模板定义与导入监控实例不同;模板管理同样要求 admin,文档中列明的公开应用层级接口保留原有政策。
后端会在导入文件进入解析器或生成导出文件之前检查角色,即使外置 sureness.yml 仍保留旧的宽泛监控规则,也不能绕过检查。界面同时对非管理员隐藏导入与导出入口。升级时还应将发行包 sureness.yml 中三条仅限 admin 的导入导出规则合并到自定义配置。挂载或单独维护的配置文件不会自动被替换。不要将这些接口加入认证排除列表;被排除的请求没有认证主体,也会被控制器拒绝。
管理员导出保留现有的导入导出格式,文件可能包含敏感凭据,包括加密后的凭据值。应将导出文件作为秘密信息妥善保管,仅与获授权的管理员共享。这些导入导出检查不重新设计凭据加密或复用机制,也不建立按资源划分的凭据隔离。
通知凭据与目标地址变更
通知配置属于 admin 的共享管理能力。隐藏已保存的凭据不代表按管理员划分所有权或隔离边界。请只向可信人员授予 admin。
Webhook 认证令牌、Telegram 机器人令牌、Discord 机器人令牌和 ntfy 令牌可以在配置未变时复用,无需显示明文。更改以下字段时,界面会清空对应凭据输入,并要求在保存或发送测试消息前重新填写:
- Webhook:URL 或认证方式(Basic/Bearer)。
- Telegram:聊天 ID 或消息线程 ID。
- Discord:频道 ID。
- ntfy:服务端 URL 或主题。
切换通知类型会清空原渠道的凭据输入,不会自动将其带入新渠道。保存和测试请求均在服务端执行相同的目标绑定校验,直接调用 API 也不能绕过。无效请求不会保存变更后的配置,也不会发送测试消息。仅修改名称或无关字段时,仍可正常复用原凭据。
原本未配置凭据的可选认证渠道仍可不填凭据。不更改 URL、仅移除 Webhook 认证仍然受支持。对于原本已配置凭据的渠道,更改目标时必须显式重新填写,不能提交空值或原凭据占位符。重新填写可以使用同一个真实凭据;此规则禁止的是隐式复用,不会在第三方服务处撤销或轮换凭据。取消编辑不会改变已保存的配置。
本绑定规则仅覆盖上述渠道和字段组合。其他通知服务的凭据与收件人语义可能不同。本规则不新增角色限制,不跟踪 DNS/IP 变化,也不改变 HTTP 重定向处理方式。
SMN 绑定覆盖范围
SMN 的 smnAk、smnSk 仍受现有掩码与掩码校验保护,但本次目标绑定没有覆盖它们与 smnProjectId、smnRegion、smnTopicUrn 的对应关系。修改这些 SMN 目标字段时,目前不会触发上述渠道所要求的凭据重新输入。
SMN 发送器将项目 ID、AK、SK 传给华为云 SDK,由 SmnRegion.valueOf 选择 region 对应的服务端点,并将 topic URN 交给发布请求。这种 SDK 端点选择并不等同于 HertzBeat 的凭据目标绑定,也不表示没有风险。应继续审查获授权操作人员及云端凭据权限;本次仅说明未覆盖边界,不新增 SMN 绑定机制,也不替代其他安全修复。
监控模板安全
Apache HertzBeat™ 提供了监控模板功能,用户可以通过配置自定义监控模板和自定义脚本来定义监控规则。
监控模版内包含 SQL SHELL JMX URL API 等脚本和其它内容,当用户自定义监控模版时需要自行保证模版内容的安全性,避免包含恶意代码等。
自定义插件安全
Apache HertzBeat™ 支持用户上传自定义代码插件在多个系统的生命周期下运行,用户需要自行保证自定义插件代码的安全性。
自定义采集器安全
Apache HertzBeat™ 支持用户自定义采集器来个性化采集监控指标等,用户需要自行保证自定义采集器的安全性。
自定义URL等参数安全
Apache HertzBeat™ 提供自定义参数配置能力,所有被授权配置 URL 等参数的用户都被认为是高度信任的,并且期望他们可以触发某些行为。
其它自定义下的安全约束
Apache HertzBeat™ 提供多种系统扩展方式和自定义能力,用户在使用过程中需注意自定义的安全性。当然所有扩展能力都是需在认证用户范围。
Reporting a Vulnerability
Please do not file GitHub issues for security vulnerabilities as they are public!
To report a new vulnerability you have discovered please follow the ASF vulnerability reporting process.