Opensearch设置副本数权限不足:索引管理策略执行失败求助
问题描述
在为新创建的索引执行索引管理策略(ISM)时,执行set number_of_replicas步骤时触发权限错误:
{ "cause": "no permissions for [indices:admin/settings/update] and associated roles [index_management_full_access, own_index, security_rest_api_access]", "message": "Failed to set number_of_replicas to 2 [index=sample.name-2022.10.22]" }
相关环境与配置:
- 索引由Logstash通过模板生成,命名格式为
sample.name-YYYY.MM.DD - ISM策略使用
sample.name-*作为索引匹配模式,策略内容如下:
{ "policy_id": "sample.name-*", "description": "sample.name-* policy ", "schema_version": 16, "error_notification": null, "default_state": "set replicas", "states": [ { "name": "set replicas", "actions": [ { "replica_count": { "number_of_replicas": 2 } } ] } ], "ism_template": [ { "index_patterns": [ "sample.name-*" ], "priority": 1 } ] }
- 问题现象:策略自动执行失败,但手动通过Dashboards或API将策略重新分配给索引时可正常生效
- 使用版本:OpenSearch 2.3.0
原因分析
核心问题是ISM自动执行时使用的内置服务账户权限不足:
当Logstash创建索引时,ISM模板会自动绑定策略到新索引,但ISM后台执行策略的是opensearch-ism内置服务账户,而非你手动操作时使用的用户账户。当前该账户关联的index_management_full_access等角色,没有针对sample.name-*索引的indices:admin/settings/update权限。
解决方案
1. 确认opensearch-ism账户的角色绑定
通过API查看内置服务账户的角色配置:
curl -XGET "http://<你的OpenSearch地址>:9200/_plugins/_security/api/internalusers/opensearch-ism" -u <管理员账户>:<管理员密码>
2. 为角色添加目标索引的权限
方式一:通过OpenSearch Dashboards操作
- 登录Dashboards,进入Security > Roles
- 找到
index_management_full_access角色并编辑 - 在Index Permissions区域,添加
sample.name-*索引模式,勾选indices:admin/settings/update权限 - 保存角色配置
方式二:通过API更新角色
curl -XPUT "http://<你的OpenSearch地址>:9200/_plugins/_security/api/roles/index_management_full_access" -u <管理员账户>:<管理员密码> -H "Content-Type: application/json" -d '{ "cluster": [ "cluster:admin/opensearch/ism/*", "cluster:admin/indices/monitor/*", "cluster:admin/indices/template/*", "cluster:admin/settings/update" ], "indices": [ { "names": [ "*", "sample.name-*" ], "privileges": [ "indices:admin/settings/update", "indices:admin/mapping/update", "indices:admin/delete", "indices:admin/close", "indices:admin/open", "indices:admin/rollover", "indices:admin/shrink", "indices:admin/split", "indices:data/write/index", "indices:data/write/bulk", "indices:data/read/search", "indices:monitor/*", "indices:admin/aliases/*" ] } ] }'
3. 验证策略自动执行
等待Logstash创建新索引(或手动创建测试索引sample.name-test),观察ISM策略是否能自动完成set replicas操作,不再触发权限错误。
内容的提问来源于stack exchange,提问作者den_mko
相关产品推荐
相关产品推荐

