如何用Docker Compose启用Elasticsearch和Kibana用户角色?配置面板缺失求助
我来帮你搞定这个问题,针对Elasticsearch 6.2.4铂金版和Kibana 6.2.4的场景,咱们一步步排查解决:
一、先搞定「安全配置面板不显示」的问题
Elasticsearch铂金版的安全模块在6.x版本里有严格的配置要求,没满足的话Kibana就不会显示安全管理入口,你可以按下面的步骤检查:
确认Elasticsearch安全模块已启用并配置SSL
打开你的Elasticsearch节点配置文件(elasticsearch.yml),确保有以下配置:xpack.security.enabled: true xpack.security.transport.ssl.enabled: true划重点:6.x版本里启用安全模块必须同时开传输层SSL,不然安全功能根本跑不起来。
检查Kibana的安全配置是否正确
打开Kibana的配置文件(kibana.yml),添加或修改这些参数:xpack.security.enabled: true elasticsearch.username: "kibana" elasticsearch.password: "你的kibana账号密码"这里的
kibana是Elasticsearch专门给Kibana用的系统账号,如果你之前配置安全时没自动创建,得手动在ES里先建好这个账号(用超级管理员账号通过API或后续出现的安全面板创建)。重启服务生效
修改完配置后,用Docker Compose重启两个服务:docker-compose restart elasticsearch docker-compose restart kibana重启后重新登录Kibana,去Management页面看看,应该就能看到Security(安全)选项卡了。
二、创建仅能读仪表盘的用户
安全面板正常显示后,按下面的步骤创建只读用户:
进入用户管理页面
登录Kibana后,点左侧导航栏的Management,然后选Security下的Users选项。新建用户
点页面右上角的Create user,填好基础信息:- Username:比如叫
dashboard_reader - Password:设置一个安全的密码
- 全名、邮箱这些可选填
- Username:比如叫
配置只读角色
切换到Roles标签页,咱们需要给用户配一个自定义的只读角色(比内置角色更精准):- 先点Create role新建角色(比如命名
dashboard_read_only):- 在Indices板块,添加Kibana相关索引(默认是
.kibana*),权限选read和view_index_metadata - 在Kibana Privileges板块,选默认空间
Default,然后把权限设为read(只读) - 保存这个角色
- 在Indices板块,添加Kibana相关索引(默认是
- 回到新用户的配置页,把刚创建的
dashboard_read_only角色分配给用户就行(如果需要基础的Kibana访问权限,也可以叠加内置的kibana_user角色,但注意这个内置角色有少量编辑权限,优先用自定义角色更稳妥)
- 先点Create role新建角色(比如命名
验证权限
用新创建的dashboard_reader账号登录Kibana,试试编辑仪表盘、新建可视化内容,确认只能查看不能修改就OK了。
应急方案:如果还是看不到安全面板
要是按上面配置后还是没显示安全面板,直接用Elasticsearch的API来创建角色和用户也行:
1. 创建只读角色
用超级管理员账号发PUT请求:
curl -u elastic:你的超级管理员密码 -XPUT "http://localhost:9200/_xpack/security/role/dashboard_read_only" -H 'Content-Type: application/json' -d' { "indices": [ { "names": [".kibana*"], "privileges": ["read", "view_index_metadata"] } ], "kibana": [ { "base": [], "feature": { "dashboard": ["read"], "visualize": ["read"] }, "spaces": ["default"] } ] } '
2. 创建用户并分配角色
同样用超级管理员账号发PUT请求:
curl -u elastic:你的超级管理员密码 -XPUT "http://localhost:9200/_xpack/security/user/dashboard_reader" -H 'Content-Type: application/json' -d' { "password": "你的用户密码", "roles": ["dashboard_read_only"], "full_name": "Dashboard Read Only User" } '
创建完后用这个账号登录Kibana,权限应该就生效了。
内容的提问来源于stack exchange,提问作者Guid

