Golang调用Elasticsearch Ping接口遇403错误,需配置何种权限?
Elasticsearch Ping操作所需权限分析
Elasticsearch的Ping操作(以olivere/elastic/v7的client.Ping为例)本质是向集群发送只读监控请求,默认会访问/_cluster/health或/_nodes/http接口,因此执行Ping的用户需要具备以下集群级权限:
cluster:monitor/nodes/info:允许获取节点基本信息,部分ES版本的Ping依赖此接口cluster:monitor/health:允许查询集群健康状态,是Ping操作的核心依赖权限之一
这两个权限都属于集群监控类的只读权限,通常内置的monitor角色会包含这些权限,自定义的只读角色(比如你的reader)也会被配置这些权限——这就是为什么reader能正常Ping,而updater不行的原因:你的updater角色大概率只配置了索引级的读写权限(比如indices:data/write/*、indices:data/read/*),但缺失了集群级的监控权限。
解决办法
给updater角色添加以下任意一种权限配置即可:
- 直接赋予内置的
monitor角色(如果业务允许用户查看集群监控信息) - 自定义添加
cluster:monitor/nodes/info或cluster:monitor/health权限(遵循最小权限原则)
验证方式
可以用curl直接模拟Ping请求验证权限:
curl -u updater:your_password http://your-es-url/_cluster/health
如果返回403说明权限不足,添加权限后再次执行,返回正常的集群健康信息则表示权限配置生效。
内容的提问来源于stack exchange,提问作者plwie
相关产品推荐
相关产品推荐

