kibana的RBAC
内置用户:
| 用户 | 角色 | 用途 |
|---|---|---|
| elastic | superuser | 超级管理员,本环境密码为 123456 |
| kibana_system | kibana_system | Kibana 服务连接 ES 专用 |
| logstash_system | logstash_system | logstash 集中写 ES |
| beats_system | beats_system | filebeat 等 beats 写 ES |
| apm_system | apm_system | APM Server |
1. 创建角色(RBAC 的核心)
角色由三段权限组成:
| 段 | 控制对象 | 典型内容 |
|---|---|---|
| cluster | 集群级操作 | monitor、manage_index_template、manage_security |
| indices | 索引级数据操作 | names(索引名模式,支持通配)+ privileges(read/write/all 等) |
| applications | Kibana 等应用功能 | feature_xxx.read / .write / .all + resources(空间) |
创建"日志只读查看员"角色,全部在界面点:
- 左侧导航最下方 Stack Management(齿轮图标)→ 左侧「安全」分区 → 角色 → 右上角创建角色
- 角色名称填
dawn_log_reader - 集群权限:勾选
monitor(集群只读监控) - 索引权限:点添加索引权限 → 「索引」填
dawn-log*,「权限」勾选read和view_index_metadata - Kibana 权限:点添加 Kibana 权限 → 「工作区」下拉选默认 → 在功能权限表里把 Discover、仪表板、可视化、地图 四行设为只读,其余保持无
- 保存



权限设计要点:
- indices 的索引模式用通配
dawn-log*,覆盖 dawn-log-nginx、dawn-log-filestream-、dawn-logstash- 等所有日志索引 - privileges 最小集:
view_index_metadata(Kibana 列索引、查字段必需)+read(检索);不给write就是只读用户 - Kibana 权限控制到功能按钮级:Discover 只给只读就只能看不能存检索,不给「开发工具」就用不了 Dev Tools
- 「工作区」控制空间:选「* 所有工作区」可进所有空间,只选「默认」就进不了别的空间
2. 创建用户并绑定角色
- Stack Management → 安全 → 用户 → 右上角创建用户
- 表单填写:
- 用户名:
elk_viewer - 密码 / 确认密码:
Dawn123456 - 全名:ELK 日志只读查看员
- 电子邮件地址:elk_viewer@dawn.com
- 角色:下拉选择
dawn_log_reader
- 用户名:
- 保存


用户与角色是多对多,一个用户可以配多个角色,最终权限取并集,我演示的是一个用户绑一个角色
3. 准备索引模式
- Stack Management →(Kibana 分组下)索引模式,确认列表里有
dawn-log-tomcat-errorlog(149 条 tomcat 错误日志,elk_viewer 授权范围内)和dawn-apps-*(授权范围外,作对照) - 列表里没有的,点创建索引模式补建:名称填索引模式名(如
dawn-log-tomcat-errorlog),下一步选时间字段@timestamp,保存


4. 用 elk_viewer 登录验证
开一个无痕窗口,用 elk_viewer / Dawn123456 登录

验证 1:空间切换器只剩「默认」。 看页面左上角的空间切换器,elk_viewer 只能看到「默认」;elastic 视角是「默认」+「运维空间」两个。原因是 dawn_log_reader 的 Kibana 权限只授权了「默认」工作区

验证 2:授权范围内有数据。 进 Discover → 左上角索引模式选 dawn-log-tomcat-errorlog → 文档列表正常展示

验证 3:授权范围外看得见对象、读不出数据。 在 Discover 左上角把索引模式切换成 dawn-apps-*,会报错或查不出数据。默认空间里能看到 dawn-apps-* 的索引模式对象名,但读数据仍然按角色里的索引权限卡

验证 4:界面是只读的。
- Discover 里改完检索条件,没有可用的「保存」入口(或提示无权限)——Discover 只授了只读
- 左侧导航没有 Stack Management 入口——本角色没有授予任何管理类功能
- 地址栏直接输入
http://11.0.1.114:5601/app/dev_tools也进不去(返回 403)——没给「开发工具」功能权限
验证 5:elk_viewer 自己建不了索引模式。 即使索引模式名指向授权索引(如 dawn-log-es*),elk_viewer 尝试创建索引模式同样会被拒,所以索引模式只能由 elastic 建好给大家用

5. Kibana 空间
Kibana 用"空间"给索引模式、仪表板、可视化分组,角色 Kibana 权限里的「工作区」决定用户能进哪些空间。
创建空间:
- 点左上角空间切换器 → 管理空间
- 点创建空间,ID 填
elk_ops,名称填「运维空间」 - 保存
