问题描述
在Opendistro的 Permissions 页面上,Permissions提到了群集权限 cluster:monitor / main 。但是,我找不到任何有关此权限实际上允许访问的文档或信息。
我能够找到的最少信息量是,它可以访问 cluster 端点的根端点,并且该端点可以显示诸如群集版本和其他常规统计信息之类的信息。至少根据以下帖子:Discuss Elasticsearch。
我对该特定权限感兴趣的原因是,在使用 Serilog 使用C#登录群集中的多个节点时遇到了问题。使用Serilog记录的应用程序会收到未经授权的异常,Elasticsearch群集会显示以下消息:“ [cluster:monitor / main]无权限” 。授予与Serilog一起使用的内部Elasticsearch用户, cluster:monitor / main 权限可以解决此问题。但是我不知道该权限的用途是什么,或者为什么记录用户实际上实际上甚至需要该权限。
所以问题归结为:
权限cluster:monitor / main的作用是什么,为什么在使用带有Serilog的多节点群集时用户进行日志记录是必需的?
解决方法
您说得对,“它可以访问集群端点的根端点,并且端点可以显示集群版本和其他常规统计信息”。
为了进一步阐明操作正在执行的操作,请查看此操作的逻辑: https://github.com/elastic/elasticsearch/blob/7.9/server/src/main/java/org/elasticsearch/action/main/TransportMainAction.java#L49
它只是获取集群状态。
ClusterState clusterState = clusterService.state();