es集群开启密码验证
elastic search简称为es,为一个分布式的搜索引擎,默认的es部署是没有密码验证的,很容易会出现安全问题。 但是本文设置密码之后,发现是使用base64加密的,呵呵,安全性也好不到哪里去。。
在es7.0版本以后安装包默认自带了xpack功能,所以只需要在es包下的config目录修改一下es的默认配置文件elasticsearch.yml即可,在elasticsearch.yml中配置以下参数:
xpack.security.enabled: true ## 加密方式 xpack.license.self_generated.type: basic xpack.security.transport.ssl.enabled: true这里的配置参见官网链接: 官网出处1 官网出处2
然后重启es让配置文件生效,再到es包下bin目录执行以下命令 win10中是反斜杠哦~
.\elasticsearch-setup-passwords interactive
PS:这些用户权限都是相同的。 设置完成以后,这时候再访问es的地址,就会提示安全错误信息了,到此,es的密码设置完成。
curl -H “Content-Type:application/json” -XPOST -u elastic ‘http://127.0.0.1:9200/_xpack/security/user/elastic/_password’ -d ‘{ “password” : “123456” }’
这个没太懂这个命令的来源,curl可以在kibana上使用~
当es设置完成密码后,就不能再像之前那样随心所欲的访问了,否则会返回安全错误异常。 这时候我们在访问的时候就需要把用户名和密码的认证信息附加上去,如果你平时使用的是curl命令进行操作es, 那么只需要在curl后增加–user 用户名:密码 即可,按照如下示例命令操作 :
curl ip:9200 --user elastic:888888
我是windows,我没有curl ~
在postman中请求加密的es就比较麻烦一点,要在request head里新增Authorization参数,而该参数的值获取来源有以下三种:
这时候会让你输入用户名和密码,当输入后,会跳转到首页。 然后打开浏览器的调试功能,从该请求中获取到Authorization参数,如下: 我这里Google浏览器开的太多,就使用Firefox了。
因为在es的配置文件中,选用的加密方式为basic,也就是该项xpack.license.self_generated.type: basic, 所以我们也可以对用户名密码进行手动加密,访问https://www.base64encode.org/地址,在输入框中输入elastic:123456,进行加密,并在头部加上“Basic ”字符串就是最终的Authorization的值了,该值与第一种方式获取的是一致的。
获取到Authorization以后,在postman进行设置,即可如常访问。
由 这里可以看出来,其实这种加密方式用处也不是很大,可以使用浏览器就把密码获取到了。。