带role_descriptors的ApiKey访问Kibana无权限配置问题咨询
问题解决方法
1. ApiKey直接配置Kibana权限
你当前创建ApiKey时仅配置了Elasticsearch集群和索引级权限,缺少Kibana功能权限配置,因此无法访问Dashboard。你可以直接在role_descriptors的角色描述中新增kibana字段完成权限配置,修改后的创建请求如下:
POST /_security/api_key { "name": "kb-1234-9876", "expiration": "1d", "role_descriptors": { "role-a": { "cluster": ["all"], "indices": [ { "names": ["*"], "privileges": ["read"], "query": "{\"bool\": { \"filter\": { \"terms\": { \"customer.id_customer\": [ \"1234\", \"9876\" ] } }}" } ], "kibana": [ { "base": ["dashboard_user"], "spaces": ["default"] } ] } } }
你可以根据实际需求调整kibana配置项中的权限范围,比如指定具体功能权限、可访问的空间列表等。配置完成后生成的ApiKey会同时携带索引行级过滤规则和Kibana功能权限,直接传递Base64编码的ApiKey认证头给Kibana后端即可正常访问。
2. 替代方案
你也可以预先创建固定的Kibana权限角色,创建ApiKey时直接引用该角色叠加自定义索引过滤规则,无需每次创建ApiKey时重复声明Kibana权限:
- 提前创建通用角色,配置好对应空间的Dashboard、Discover等Kibana功能权限
- 创建ApiKey时,在
role_descriptors中声明继承该通用角色,再补充自定义的索引过滤规则即可
内容的提问来源于stack exchange,提问作者erbg
相关产品推荐
相关产品推荐

