各位 CSDN 的小伙伴们,大家好!博主正在参与 2025 年 CSDN 博客之星的评选活动,非常需要大家的支持!一直以来,博主专注于大数据、云计算、人工智能等融合方向研究,从基础概念到实战技巧,都精心撰写每一篇文章。博主致力于将复杂的技术知识以通俗易懂的方式呈现,帮助众多初学者快速入门,也为有经验的开发者提供新的思路与视角。在这个活动中,您的一票对我意义重大。您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!
投票链接 :https://www.csdn.net/blogstar2025/detail/112
OpenDistro/OpenSearch 内置系统角色分析
- 1.心角色分类
- 2.详细角色分析
-
- [2.1 Kibana 角色组](#2.1 Kibana 角色组)
- [2.2 告警系统角色组](#2.2 告警系统角色组)
- [2.3 数据访问角色组](#2.3 数据访问角色组)
- [2.4 管理角色组](#2.4 管理角色组)
- [2.5 快照与复制角色组](#2.5 快照与复制角色组)
- [2.6 机器学习角色组](#2.6 机器学习角色组)
- [2.7 工具插件角色组](#2.7 工具插件角色组)
- 3.重要字段说明
- 4.实际使用模式
-
- [4.1 定义映射示例](#4.1 定义映射示例)
- [4.2 多租户数据隔离](#4.2 多租户数据隔离)
- [4.3 团队权限分配](#4.3 团队权限分配)
- [5.与原生 Elasticsearch 的区别](#5.与原生 Elasticsearch 的区别)
- 6.安全最佳实践
1.心角色分类
| 类别 |
包含角色 |
特点 |
| Kibana 相关 |
kibana_user、kibana_server、kibana_read_only |
管理 Kibana 访问权限 |
| 告警相关 |
alerting_full_access、alerting_read_access、alerting_ack_alerts |
OpenDistro Alerting 插件权限 |
| 数据访问 |
readall、readall_and_monitor、own_index |
数据读取和监控权限 |
| 系统管理 |
all_access |
超级管理员权限 |
| 跨集群复制 |
cross_cluster_replication_* |
跨集群数据复制 |
| 机器学习 |
anomaly_full_access、anomaly_read_access |
异常检测权限 |
| 工具插件 |
reports_*、notebooks_*、asynchronous_search_* |
报表、笔记本、异步搜索等 |
2.详细角色分析
2.1 Kibana 角色组
| 角色 |
权限说明 |
应用场景 |
kibana_user |
• 集群组合操作权限 • Kibana 相关索引读写(.kibana*) |
Kibana 普通用户,可以创建/保存仪表板、可视化 |
kibana_read_only |
• 只读权限 |
只查看 Kibana 内容的用户 |
kibana_server |
• 集群监控权限 • Kibana 索引管理 • 模板管理权限 |
Kibana 服务器账户,用于 Kibana 服务自身运行 |
2.2 告警系统角色组
| 角色 |
权限说明 |
应用场景 |
alerting_full_access |
• 集群监控 • 所有告警管理操作 (cluster:admin/opendistro/alerting/*) • 所有索引访问 |
告警系统管理员,可以创建、修改、删除告警规则 |
alerting_read_access |
• 查看告警、监控器、目的地 |
告警查看者,只能查看告警状态 |
alerting_ack_alerts |
• 确认/处理告警(alerts/*) |
运维人员,可以确认和处理告警 |
2.3 数据访问角色组


| 角色 |
权限说明 |
应用场景 |
readall |
• 只读集群操作(cluster_composite_ops.ro) • 所有索引读取权限 |
数据分析师,需要读取所有数据但不需要写入 |
readall_and_monitor |
• 集群监控权限 • 只读集群操作 |
监控人员,需要读取数据和监控集群状态 |
own_index |
• 集群组合操作 • 只能访问与自己用户名相同的索引(${user_name}) |
多租户场景,每个用户有独立的索引空间 |
2.4 管理角色组


| 角色 |
权限说明 |
应用场景 |
all_access |
• 所有集群权限(*) • 所有索引权限(*) • 关联内部用户:admin |
系统超级管理员 |
security_rest_api_access |
安全 REST API 访问权限 |
安全管理员,管理用户和角色 |
2.5 快照与复制角色组


| 角色 |
权限说明 |
应用场景 |
manage_snapshots |
• 管理快照权限 • 所有索引权限 • 关联后端角色:snapshotrestore |
备份管理员,管理快照和恢复操作 |
cross_cluster_replication_leader/follower |
跨集群复制管理权限 |
跨集群数据同步管理员 |
2.6 机器学习角色组
| 角色 |
权限说明 |
应用场景 |
anomaly_full_access |
• 集群监控 • 所有异常检测操作(cluster:admin/opendistro/ad/*) • 所有索引访问 |
机器学习工程师,创建和管理异常检测作业 |
anomaly_read_access |
• 查看异常检测信息、搜索结果 |
业务分析人员,查看异常检测结果 |
2.7 工具插件角色组



| 角色 |
权限说明 |
应用场景 |
reports_*_access |
报表系统操作权限 |
报表生成和管理人员 |
notebooks_*_access |
笔记本操作权限 |
数据科学家,使用 Notebook 分析数据 |
asynchronous_search_*_access |
异步搜索操作权限 |
大数据量查询用户 |
3.重要字段说明
| 字段 |
说明 |
示例 |
Internal users |
自动分配该角色的内部用户 |
own_index → *(所有用户) all_access → admin |
Backend roles |
来自外部系统的角色自动映射 |
logstash → logstash(LDAP 组) manage_snapshots → snapshotrestore |
Tenants |
Kibana 多租户空间的访问权限 |
Kibana Spaces 功能相关 |
Customization |
Reserved 表示系统保留,不可修改 |
所有内置角色都标记为 Reserved |
4.实际使用模式
4.1 定义映射示例
# Logstash 服务账户配置
logstash.yml:
xpack.security.authc:
roles_mapping:
logstash:
backend_roles: ["logstash"] # 自动获得 logstash 角色权限
4.2 多租户数据隔离
own_index 角色实现:用户 alice 只能访问索引 alice
- 适合 SaaS 平台,每个客户有独立索引
4.3 团队权限分配
开发团队:
backend_roles: ["developers"]
映射到: readall_and_monitor + kibana_user
运维团队:
backend_roles: ["operations"]
映射到: alerting_full_access + manage_snapshots
5.与原生 Elasticsearch 的区别
| 特性 |
OpenDistro/OpenSearch |
原生 Elasticsearch |
| 告警系统 |
cluster:admin/opendistro/alerting/* |
cluster:monitor/elastic_alerting/* |
| 机器学习 |
cluster:admin/opendistro/ad/* |
cluster:monitor/ml/* |
| 角色名称 |
all_access(超级管理员) |
superuser |
| 插件集成 |
深度集成 OpenDistro 插件 |
模块化 X-Pack 插件 |
6.安全最佳实践
-
1️⃣ 避免直接使用 all_access
错误: 所有操作都用 admin 账户
正确: 创建细分角色,如 data_engineer、monitoring_admin
-
2️⃣ 利用后端角色映射
// 将 LDAP 组映射到 OpenDistro 角色
PUT /_opendistro/_security/api/rolesmapping/logstash
{
"backend_roles": ["logstash-team"],
"hosts": [],
"users": []
}
-
3️⃣ 定期审计角色使用
- 检查
Reserved 角色是否被修改
- 监控异常权限使用
这些内置角色为 OpenDistro/OpenSearch 提供了完整的安全框架,特别是针对其特有的插件功能进行了优化设计。