在 Kibana 中使用 kibana_system 用户登录并提示 "You do not have permission to access the requested page" 是预期行为,因为 kibana_system 用户是一个系统用户,专门用于 Kibana 与 Elasticsearch 的后台通信,而非普通用户。这个账号不具备登录 Kibana UI 的权限。


解决方法

1. 理解 kibana_system 用户的用途

  • kibana_system 用户角色

    • 该用户在 Elasticsearch 中被分配了 kibana_system 角色。
    • 它的权限仅限于管理 Kibana 的内部索引(如 .kibana_*),用于执行后台任务。
  • 限制kibana_system 用户无法直接登录 Kibana UI。如果你需要访问 Kibana,请使用其他拥有适当角色(如 kibana_adminkibana_user)的用户。


2. 创建一个新的 Kibana 用户

如果需要登录 Kibana UI,应该创建一个具备适当权限的用户。

步骤 1: 创建用户

使用 elastic 超级用户创建一个新用户:

bash
curl -X POST "http://localhost:9200/_security/user/kibana_user" -u elastic:your_elastic_password -H 'Content-Type: application/json' -d '{ "password": "user_password", "roles": ["superuser"],
"enabled": true }'

步骤 2: 使用新用户登录

  • 用户名:kibana_user
  • 密码:user_password

3. 检查用户角色

确保用户拥有以下角色中的一个:

  • kibana_admin:允许完全管理 Kibana,包括设置和管理 Saved Objects。
  • kibana_user:允许访问和使用 Kibana,但无管理权限。

验证用户角色:

bash
curl -X GET "http://localhost:9200/_security/user/kibana_user" -u elastic:your_elastic_password

返回示例:

json
{ "kibana_user": { "username": "kibana_user", "roles": ["superuser"],
"enabled": true } }

4. 验证 kibana_system 配置

尽管 kibana_system 用户无法登录 Kibana UI,但它仍然需要正确配置,以确保 Kibana 与 Elasticsearch 的通信正常。

检查 kibana.yml 中的设置

打开 kibana.yml 文件,确认以下内容:

yaml
elasticsearch.username: "kibana_system" elasticsearch.password: "your_kibana_system_password"

测试连接

通过 kibana_system 用户验证是否可以正常访问 Elasticsearch:

bash
curl -X GET "http://localhost:9200" -u kibana_system:your_kibana_system_password

如果返回 Elasticsearch 的状态信息,则说明配置正确。


5. 检查 Kibana 日志

如果问题仍然存在,可以查看 Kibana 的日志,确认是否存在配置错误或权限问题:

bash
sudo tail -f /var/log/kibana/kibana.log

重点检查以下内容:

  • 是否有 401 Unauthorized 的错误。
  • 是否有关于 kibana_system 用户无法访问的提示。

总结

  • kibana_system 用户是一个系统用户,不允许登录 Kibana UI。如果你需要访问 Kibana,请创建并使用具备适当权限的用户(如 kibana_admin)。
  • 检查 kibana_system 用户的配置,以确保它能正常与 Elasticsearch 通信。

点赞(367) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部