【免费下载链接】Perseus
采集管家
Perseus(采集管家)是一款开源数据采集平台,在兼容 Zabbix、Prometheus 等第三方监控平台的同时,内置了一套完整的RBAC 权限体系与Session 共享机制。本文带你快速看懂:Perseus 如何做到"谁能看什么、谁能改什么",以及如何通过登录保护、会话签名与动态 Token 鉴权,守护监控数据的安全。🛡️
一、为什么监控平台必须重视权限安全?
监控数据往往包含服务器 IP、网络拓扑、告警阈值等敏感信息,一旦越权访问,风险很大。Perseus 用三层防线来应对:
| 防线 | 解决的问题 | 对应机制 |
|---|---|---|
| 角色访问控制 | 不同岗位只能看到自己该看的功能 | RBAC(Role-Based Access Control) |
| 会话安全 | 防止会话被伪造、被盗用 | Session 签名 + 登录防爆破 |
| 集成鉴权 | 嵌入页面/API 调用不被冒用 | Session 共享 + 动态 Token |
二、RBAC 权限体系:用户 → 角色 → 规则
Perseus 的权限模型是经典的"用户绑定角色、角色关联规则"三层结构,相关数据表结构定义在 resource/schemes/users.php、resource/schemes/role.php 和 resource/schemes/role_rule.php:
- users 表:
roleid字段把用户直接关联到角色,一人一角色,职责清晰; - role 表:角色带
readonly(只读)属性,可轻松创建"只读观察员"这类角色; - role_rule 表:规则可精细到菜单、模块甚至具体路由。
真正体现"细粒度"的地方,在权限数据文件 resource/data.rules.ini 中。以模板管理为例:
[60750002] name='模板管理' routes[0]=/zapi/template/* [60750004] name='编辑模板' routes[0]=/zapi/template/update可以看到,Perseus 把"查看模板""新增模板""编辑模板""删除模板"拆成了独立权限项,分别对应/zapi/template/create、/zapi/template/update、/zapi/template/delete等路由。这意味着:你可以给值班同事"只读 + 主机查看"的权限,而让他无法删除任何模板 ——权限精确到每一个按钮级别。🔐
此外,resource/schemes/rights.php 还定义了用户组到主机组(hstgrp)的数据级授权,permission字段控制"仅查看/可写",实现了功能权限 + 数据权限的双重隔离。
三、登录防线:防爆破与会话签名
1. 连续登录失败自动锁定
Perseus 默认最多允许 5 次错误尝试,锁定 30 秒。这两项全局配置定义在 resource/schemes/config.php:
'login_attempts' => ['default' => '5'] ; 最大尝试次数 'login_block' => ['default' => '30s'] ; 锁定时长同时 users 表中的attempt_failed、attempt_ip、attempt_clock字段会记录失败次数、来源 IP 与时间戳,为锁定策略提供依据,有效抵御暴力破解。🔒
2. 会话 Cookie 双重签名,防会话伪造
登录成功后,会话 ID 不会以明文形式直接暴露在 Cookie 中,而是带上签名。根据 CHANGELOG.md 记录的签名算法:
hash_hmac('sha256', json_encode(['sessionid' => $sessionId]), $key, false);其中$key来自 config 表中的session_key字段(见 resource/schemes/config.php)。攻击者即使拿到zbx_sessionCookie,没有服务端的session_key也无法伪造出合法签名,会话被窃取后难以直接复用。
sessions 表结构(resource/schemes/sessions.php)中还包含secret字段与lastaccess最近访问时间,配合 users 表默认的autologout(15 分钟自动登出),让闲置会话自动失效,进一步缩小攻击窗口。
四、Session 共享与 iframe 集成:免重复登录的安全接入
Perseus 常被嵌入到运维工作台等第三方系统中,这里它做了两件事:
1. Session 共享,一次登录处处通行
Perseus 保持与 Prometheus、Zabbix 等一致的用户权限体系,支持Session 共享:嵌套页面与 API 查询遵循同样的角色访问控制,用户在主系统登录后嵌入 Perseus 页面无需二次登录,既提升体验又不降低安全等级。
2. iframe 沙箱 + 动态 Token 鉴权
嵌入页面的安全开关同样定义在 resource/schemes/config.php:
iframe_sandboxing_enabled:默认开启(值为 1)iframe 沙箱隔离;iframe_sandboxing_exceptions:配置沙箱例外名单;x_frame_options:默认SAMEORIGIN,防止页面被恶意第三方网站嵌套。
对于 API 调用,Perseus 采用动态 Token机制,结构见 resource/schemes/token.php:每个 Token 绑定userid、tokenid,并带有expires_at过期时间与lastaccess最近访问时间。Token 可随时吊销、到期自动失效,接口调用因此可控、可审计。📡
五、相关代码与配置路径速查
| 关注点 | 文件路径 |
|---|---|
| 模块免授权路由白名单 | config/access.php |
| 模块权限规则(路由级) | resource/data.rules.ini |
| 用户 / 角色 / 规则表结构 | resource/schemes/users.php、resource/schemes/role.php、resource/schemes/role_rule.php |
| 主机组数据授权 | resource/schemes/rights.php |
| 会话 / API Token 结构 | resource/schemes/sessions.php、resource/schemes/token.php |
| 登录策略与 iframe 沙箱配置 | resource/schemes/config.php |
| 全局配置常量封装 | common/helpers/SettingsHelper.php |
| 用户个人配置读写 | common/user/Profile.php |
六、总结
Perseus 的安全设计可以概括为一句话:用 RBAC 管住"谁能做什么",用登录防爆破 + 会话签名管住"你是谁",用 Session 共享 + 动态 Token 管住"集成接入是否合法"。
- 对用户:登录一次,嵌入页面与 API 全程通行,体验丝滑;
- 对管理员:权限细到单个按钮,只读角色开箱即用;
- 对安全团队:沙箱隔离、过期 Token、闲置自动登出,层层兜底。
理解了这套机制,你就能放心地把 Perseus 纳入自己的运维监控体系,在统一数据入口的同时守住安全底线。✅
【免费下载链接】Perseus
采集管家
相关推荐
AssetRipper安全机制:权限控制与数据保护
AssetRipper安全机制:权限控制与数据保护 AssetRipper作为一款专业的Unity资产提取工具,在处理游戏资源文件时面临着多重安全挑战。本文深入
逆向工程开发工具游戏开发桌面应用OpenPencil 图形绘制指南:矩形、椭圆、线、框架、Sektion 与多边形/星形的完整实战手册
OpenPencil 图形绘制指南:矩形、椭圆、线、框架、Sektion 与多边形/星形的完整实战手册 导读 本文是 OpenPencil 中图形绘制的完整实战
桌面应用开发工具前端人工智能AI 应用MCP 服务代码生成CLI插件系统documenso安全机制详解:数据加密与权限控制
documenso安全机制详解:数据加密与权限控制 引言:文档安全的核心挑战 在数字化协作时代,文档管理系统面临双重安全威胁: 数据传输过程中的拦截风险 与 未
后端前端企业应用
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考