角色与权限
三档角色对应的 capability、每个功能落在哪一档、ES 写回和数据接入需要的 Splunk 权限、登录如何沿用 Splunk。
没有自己的账号体系。用户用 Splunk 登录,App 按角色带的 capability 决定能做什么;账号菜单只有「偏好设置」,改密码去 Splunk。
三档角色
default/authorize.conf 定义三个 capability 和三个角色,逐级继承:
| 角色 | capability | 能做什么 |
|---|---|---|
rst_copilot_viewer | copilot_use | 提问、解读、看所有页面;只写自己的数据(会话、反馈、偏好、常用查询) |
rst_copilot_analyst | + copilot_write | 分诊、调查、生成检测规则、生成报告、上传知识库、通知试发、写回 ES、开工单、存为 Report |
rst_copilot_admin | + copilot_admin | AI 配置、系统设置、许可、通道与工单配置、规则部署 / 启停 / 删除、资产导入、应用改写 / 降噪 / 数据接入写入、MCP 令牌 |
Splunk 自带的 admin 和 sc_admin 拿到全部三个 capability。1.5.x 的旧角色 copilot_user 等价 analyst,下一大版删除。
给用户分配角色在 Splunk 的 Settings → Roles / Users,或 authorize.conf。没有任何 rst 角色的普通 user 能打开 App 但没有 copilot_use,所有 AI 请求返回 forbidden。
闸门在哪
- 纯管理端点(AI 配置、许可、部署、资产导入、告警源设置)在
restmap.conf上要求copilot_admin,请求到不了 handler。 - 混合端点(知识库、基线、通道、报告、分诊结果、数据接入、MCP)在 handler 里按动作查 capability:读开放,写按上表分档。
- 被拒返回
{"code":"forbidden","params":{"capability":"copilot_write"}},界面上按钮显示原因而不是直接隐藏。 - 搜索栏命令
| copilot/| splexplain和 MCP 工具走同一套闸:MCP 令牌绑定签发者的档位,签不出高于自己的令牌。
功能需要的 Splunk 权限
App 用当前用户的会话跑搜索,用户在 Splunk 里看不到的索引,Copilot 也看不到。以下功能另需:
| 功能 | 需要 |
|---|---|
| 实时告警 / 安全态势 | 对告警索引(默认 notable)的搜索权限 |
| 写回 ES notable | Enterprise Security 已安装;用户对 notable_update 有权(ES 的 ess_analyst 及以上) |
| 检测规则部署 / 存为 Report / Alert | schedule_search;写到 search app 的 saved searches |
| 数据接入「写入」 | 目标 app local/props.conf 的写权限(edit_props 或 admin) |
| SPL 性能顾问 | 对 _audit 索引的搜索权限(默认只有 admin) |
| 平台健康 | /services/server/health、licenser、kvstore/status 的读权限(默认只有 admin;普通用户看到的项标 unknown) |
| 基线巡检 | CIM Endpoint / Change 数据模型的搜索权限 |
| 资产台账 | 有 ES 时读 asset_lookup_by_str / identity_lookup_expanded;没有 ES 用 CSV 导入 |
| 定时任务(基线、KB 同步、自动分诊、MCP) | 脚本输入以 splunk-system-user 跑;Splunk Free 许可没有这个用户,定时任务拿不到会话 |
脱敏与出网的管理员钉死
RST_MASKING_MODE环境变量(写在splunk-launch.conf)钉死脱敏档位,界面改不了。[limits] agentic_index_whitelist限制模型自主探查范围。- 威胁情报、工单、通道、MCP 各自的出网开关默认关。