一. 前言

Elasticsearch 是一个开源的分布式搜索和分析引擎,它基于 Apache Lucene 搜索引擎库。Elasticsearch 可以用于全文搜索、结构化搜索、分析以及实时数据聚合等功能。它被广泛应用于各种场景,包括企业搜索、日志分析、安全信息与事件管理(SIEM)、商业分析等。

Elasticsearch 具有以下主要特点:

  • 分布式:Elasticsearch 能够在多台服务器之间自动分布数据,并提供高可用性和横向扩展性。
  • 实时性:Elasticsearch 可以快速存储、搜索和分析海量数据,并且支持实时查询和更新。
  • 多样化的数据类型支持:Elasticsearch 支持各种数据类型,包括文本、数值、日期、地理位置等,让用户能够更灵活地进行搜索和聚合。
  • RESTful API:Elasticsearch 提供了基于 RESTful 风格的
    API,使得用户能够使用各种编程语言和工具与其进行交互。
  • 插件生态系统:Elasticsearch 生态系统非常丰富,拥有众多插件和工具,扩展了其功能,满足了不同用户群体的需求。

二. elaticsearch/kibana安装使用

参考链接:Elaticsearch/kibana安装使用

三.使用账户密码后报错问题

Unable to connect to Elasticsearch. Error: security_exception
        Root causes:
                security_exception: action [indices:admin/mappings/get] is unauthorized for user [root] with effective roles [myrole] on restricted indices [.kibana], this action is granted by the index privileges [view_index_metadata,manage,all]
[2024-11-22T16:11:14.408+08:00][INFO ][plugins.screenshotting.chromium] Browser executable: D:\DevTools\kibana-8.12.2-windows-x86_64\kibana-8.12.2\node_modules\@kbn\screenshotting-plugin\chromium\chrome-win\chrome.exe

遇到的 security_exception 错误表明用户 root 没有足够的权限来执行 indices:admin/mappings/get 操作,特别是在 .kibana 索引上。为了修复这个问题,你需要确保 root 用户的角色 myrole 包含必要的权限。

四. 解决步骤

  • 检查现有角色权限: 确认 myrole 角色的权限是否包含 view_index_metadata 和 manage 权限。
  • 更新角色权限: 如果 myrole 缺少必要的权限,可以更新该角色以包含所需的权限。
  • 验证索引存在: 确保 .kibana 索引存在,因为如果索引不存在,也会导致类似的错误。

1. 检查现有角色权限

使用 curl 查看现有角色的权限(也可以使用postman调用):

curl -X GET -u elastic:mysecurepassword -H "Content-Type: application/json" http://localhost:9200/_security/role/myrole

这里说明一下,使用elastic账户直接设置下载好的kibana.yml文件中的账户密码是不能登录的,不允许直接使用超级用户登录的。


如果你还没有创建新的用户,那么下面先创建新的用户,我直接使用postman创建

创建新的用户

url: http://xxxx:9201/_security/user/root

参数:

{
  "password" : "123456",
  "roles" : [ "myrole" ],
  "full_name" : "root"
}

elasticsearch -【kibana】使用教程及报错【action [indices:admin/mappings/get] is unauthorized for user】_搜索引擎

2.更新用户角色

url:http://xxxxxxx:9201/_security/user/root

参数

{
  "password" : "123456",
  "roles" : ["kibana_system", "superuser"],
  "full_name" : "root",
  "email" : "user@example.com",
  "metadata" : { /* Any metadata */ },
  "enabled" : true
}

elasticsearch -【kibana】使用教程及报错【action [indices:admin/mappings/get] is unauthorized for user】_大数据_02

3.查看用户和用户角色权限

url:http://xxxxxxx:9201/_security/user?pretty

elasticsearch -【kibana】使用教程及报错【action [indices:admin/mappings/get] is unauthorized for user】_大数据_03


现在就可以使用【kibana】了

双击kibana.bat文件运行,访问链接http://localhost:5601/即可使用

注意事项

  • 权限粒度:确保为用户分配的权限是最小必要的,以遵循最小权限原则。
  • 索引名称变化:从 Elasticsearch 7.x 版本开始,Kibana 的内部索引名称可能发生变化,例如 .kibana 可能变为
    .kibana_task_manager。确保你使用的是正确的索引名称。
  • 用户和角色管理:在生产环境中,建议使用更细粒度的用户和角色管理策略,以确保系统的安全性和稳定性。

通过以上步骤,解决 security_exception 错误,并确保用户 root 具有执行所需操作的权限。

以上就是elasticsearch -【kibana】报错【action [indices:admin/mappings/get] is unauthorized for user】的解决过程