各位 CSDN 的小伙伴们,大家好!博主正在参与 2025 年 CSDN 博客之星的评选活动,非常需要大家的支持!一直以来,博主专注于大数据、云计算、人工智能等融合方向研究,从基础概念到实战技巧,都精心撰写每一篇文章。博主致力于将复杂的技术知识以通俗易懂的方式呈现,帮助众多初学者快速入门,也为有经验的开发者提供新的思路与视角。在这个活动中,您的一票对我意义重大。您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!
投票链接 :https://www.csdn.net/blogstar2025/detail/112
OpenDistro/Elasticsearch 权限分类详解
- 1.权限系统概览
-
- [1.1 权限分类表格](#1.1 权限分类表格)
- [1.2 详细权限分类表](#1.2 详细权限分类表)
-
- [1.2.1 集群管理权限(cluster:admin)](#1.2.1 集群管理权限(cluster:admin))
- [1.2.2 集群监控权限(cluster:monitor)](#1.2.2 集群监控权限(cluster:monitor))
- [1.2.3 索引管理权限(indices:admin)](#1.2.3 索引管理权限(indices:admin))
- [1.2.4 数据读写权限(indices:data)](#1.2.4 数据读写权限(indices:data))
- [1.2.5 索引监控权限(indices:monitor)](#1.2.5 索引监控权限(indices:monitor))
- [1.2.6 OpenDistro 插件权限](#1.2.6 OpenDistro 插件权限)
- [1.2.7 其他系统权限](#1.2.7 其他系统权限)
- 2.权限组合示例
-
- [2.1 开发人员角色权限](#2.1 开发人员角色权限)
- [2.2 运维监控角色权限](#2.2 运维监控角色权限)
- [2.3 数据分析师角色权限](#2.3 数据分析师角色权限)
- 3.权限管理最佳实践
1.权限系统概览
OpenDistro/Elasticsearch 的权限系统采用分层结构,格式为:类别:子类别/操作/资源
1.1 权限分类表格
| 权限类别 | 子类别 | 权限格式 | 含义 | 典型权限示例 |
|---|---|---|---|---|
| 集群操作权限 | admin | cluster:admin/<操作>/<资源> |
管理集群级别的操作,需要最高权限 | cluster:admin/snapshot/create |
| monitor | cluster:monitor/<操作> |
监控集群状态,只读权限 | cluster:monitor/health |
|
| 索引操作权限 | admin | indices:admin/<操作> |
管理索引(创建、删除、设置等) | indices:admin/create |
| data | indices:data/<读写>/<操作> |
数据读写操作 | indices:data/read/search |
|
| monitor | indices:monitor/<操作> |
监控索引状态 | indices:monitor/stats |
|
| OpenDistro 插件权限 | opendistro | cluster:admin/opendistro/<插件>/<操作> |
OpenDistro 特有插件操作 | cluster:admin/opendistro/ad/detector/write |
1.2 详细权限分类表
1.2.1 集群管理权限(cluster:admin)
| 权限组 | 具体权限 | 含义 | 应用场景 |
|---|---|---|---|
| 快照管理 | cluster:admin/snapshot/* |
创建、删除、恢复、查看快照 | 数据备份恢复 |
cluster:admin/repository/* |
管理快照仓库 | 存储库配置 | |
| 索引生命周期 | cluster:admin/opendistro/ism/* |
Index State Management 管理 | 自动化索引生命周期 |
| 重新索引 | cluster:admin/reindex/* |
重新索引控制 | 数据迁移/重构 |
| 节点路由 | cluster:admin/reroute |
手动路由分片 | 集群平衡维护 |
| 脚本管理 | cluster:admin/script/* |
存储脚本管理 | 脚本化搜索/评分 |
| 集群设置 | cluster:admin/settings/update |
更新集群设置 | 动态调整配置 |
| 任务管理 | cluster:admin/tasks/* |
任务取消和管理 | 终止长时间运行任务 |
| 管道管理 | cluster:admin/ingest/pipeline/* |
Ingest Pipeline 管理 | 数据预处理管道 |
1.2.2 集群监控权限(cluster:monitor)
| 权限组 | 具体权限 | 含义 | 应用场景 |
|---|---|---|---|
| 健康状态 | cluster:monitor/health |
检查集群健康状态 | 监控告警 |
| 节点信息 | cluster:monitor/nodes/* |
获取节点信息、统计、热点线程 | 性能监控 |
| 集群状态 | cluster:monitor/state |
获取完整集群状态 | 诊断分析 |
| 集群统计 | cluster:monitor/stats |
集群级别统计信息 | 容量规划 |
| 任务监控 | cluster:monitor/task/* |
查看和管理任务 | 运维监控 |
| 分配解释 | cluster:monitor/allocation/explain |
解释分片分配 | 故障诊断 |
1.2.3 索引管理权限(indices:admin)
| 权限组 | 具体权限 | 含义 | 应用场景 |
|---|---|---|---|
| 索引生命周期 | indices:admin/create indices:admin/delete indices:admin/open indices:admin/close |
创建、删除、打开、关闭索引 | 索引管理 |
| 别名管理 | indices:admin/aliases/* |
索引别名管理 | 索引别名操作 |
| 映射管理 | indices:admin/mapping/* |
索引映射管理 | Schema 管理 |
| 设置管理 | indices:admin/settings/update |
更新索引设置 | 优化索引配置 |
| 维护操作 | indices:admin/refresh indices:admin/flush indices:admin/forcemerge |
索引维护操作 | 性能优化 |
| 模板管理 | indices:admin/template/* |
索引模板管理 | 标准化索引创建 |
| 分片管理 | indices:admin/shrink indices:admin/rollover |
分片管理操作 | 索引滚动/收缩 |
1.2.4 数据读写权限(indices:data)
| 权限组 | 子类别 | 具体权限 | 含义 | 应用场景 |
|---|---|---|---|---|
| 读取权限 | read |
indices:data/read/search |
搜索索引数据 | 普通查询 |
indices:data/read/get indices:data/read/mget |
获取文档 | 文档检索 | ||
indices:data/read/scroll |
滚动搜索 | 大数据量查询 | ||
indices:data/read/msearch |
多搜索请求 | 批量查询 | ||
indices:data/read/explain |
解释查询评分 | 查询优化 | ||
indices:data/read/field_caps |
字段能力查询 | 字段分析 | ||
| 写入权限 | write |
indices:data/write/bulk |
批量写入 | 数据导入 |
indices:data/write/index |
索引文档 | 新增文档 | ||
indices:data/write/update |
更新文档 | 文档修改 | ||
indices:data/write/delete |
删除文档 | 数据删除 | ||
indices:data/write/reindex |
重新索引 | 数据迁移 |
1.2.5 索引监控权限(indices:monitor)
| 权限组 | 具体权限 | 含义 | 应用场景 |
|---|---|---|---|
| 统计信息 | indices:monitor/stats |
索引统计信息 | 性能监控 |
| 段信息 | indices:monitor/segments |
索引段信息 | 存储优化 |
| 恢复状态 | indices:monitor/recovery |
索引恢复状态 | 故障恢复 |
| 设置查看 | indices:monitor/settings/get |
查看索引设置 | 配置检查 |
| 分片存储 | indices:monitor/shard_stores |
分片存储信息 | 数据分布 |
1.2.6 OpenDistro 插件权限
| 插件名称 | 权限前缀 | 主要功能 | 典型权限示例 |
|---|---|---|---|
| 异常检测 | cluster:admin/opendistro/ad/ |
机器学习异常检测 | detector/write - 创建检测器 detector/run - 运行检测 |
| 告警系统 | cluster:admin/opendistro/alerting/ |
监控告警 | monitor/write - 创建监控器 alerts/ack - 确认告警 |
| 索引管理 | cluster:admin/opendistro/ism/ |
索引状态管理 | policy/write - 创建策略 managedindex/add - 管理索引 |
| 报表系统 | cluster:admin/opendistro/reports/ |
报表生成 | definition/create - 创建报表定义 instance/get - 获取报表实例 |
| 数据汇总 | cluster:admin/opendistro/rollup/ |
数据汇总 | index - 创建汇总索引 start/stop - 启停作业 |
1.2.7 其他系统权限
| 权限组 | 具体权限 | 含义 | 应用场景 |
|---|---|---|---|
| 分析器 | indices:admin/analyze |
文本分析 | 测试分析器 |
| 验证查询 | indices:admin/validate/query |
验证查询语法 | 查询调试 |
| 全局检查点 | indices:admin/seq_no/global_checkpoint_sync |
同步检查点 | 数据一致性 |
2.权限组合示例
2.1 开发人员角色权限
json
{
"cluster_permissions": [
"cluster_monitor" // 监控集群状态
],
"index_permissions": [{
"index_patterns": ["app-*"],
"allowed_actions": [
"indices:data/read/*", // 读取数据
"indices:data/write/*", // 写入数据
"indices:admin/create", // 创建索引
"indices:admin/mapping/put" // 定义映射
]
}]
}
2.2 运维监控角色权限
json
{
"cluster_permissions": [
"cluster:monitor/*",
"cluster:admin/opendistro/alerting/*",
"cluster:admin/snapshot/*"
],
"index_permissions": [{
"index_patterns": ["*"],
"allowed_actions": [
"indices:monitor/*",
"indices:data/read/search"
]
}]
}
2.3 数据分析师角色权限
json
{
"cluster_permissions": [
"cluster:monitor/health",
"cluster:admin/opendistro/ad/detector/get",
"cluster:admin/opendistro/ad/result/search"
],
"index_permissions": [{
"index_patterns": ["data-*"],
"allowed_actions": [
"indices:data/read/*",
"indices:monitor/stats"
]
}]
}
3.权限管理最佳实践
- 1️⃣ 最小权限原则:只授予必要的最小权限集合。
- 2️⃣ 模式匹配:使用索引模式而非单个索引名。
- 3️⃣ 定期审计:定期审查和清理权限分配。
- 4️⃣ 角色继承:基于内置角色创建自定义角色。
- 5️⃣ 测试验证:在生产环境前测试权限配置。
这些权限构成了 OpenDistro/Elasticsearch 安全体系的核心,通过合理组合可以满足各种业务场景的安全需求。