一. 前言
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"
}
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
}
3.查看用户和用户角色权限
url:http://xxxxxxx:9201/_security/user?pretty
现在就可以使用【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】的解决过程