项目场景:
有时候我们也需要给ES设置账号密码,避免别人使用自己的ES操作,以保证自己的ES的数据安全
前言:
ES版本
我用的是Elasticsearch示例版本:7.8.0
ES自带的X-Pack密码验证
在ES版本7.0之后,默认的情况下,安装了ES,都会默认下载了X-Pack,不再需要自己独自下载,
X-Pack是elasticsearch的一个扩展包,将安全,警告,监视,图形和报告功能捆绑在一个易于安装的软件包中,所以我们想要开启账号密码验证,就需要开启X-Pack密码校验。
解决步骤:
1、修改配置
先进入es的config里,找到elasticsearch.yml
在elasticsearch.yml 追加三句配置:
##开启X-Pack密码验证xpack.security.enabled: true## 加密方式xpack.license.self_generated.type: basicxpack.security.transport.ssl.enabled: true
2、重启es
然后需要重启es,使配置生效(若是使用docker安装ES的请忽略这一步骤,自己使用docker重启一下es)
(1)先查看es服务:
ps -ef | grep elastic
(2)再根据进程号杀死es进程:
kill -9 23035
(3)再查看es进程是否存在:
ps -ef | grep elastic
(4)es已经停止后,再转换到es用户(自己之前安装es的时候新创建的用户):
su es
(5)再进到es的bin目录,后台运行:
bin/elasticsearch -d
3、设置账号密码
进入es的bin目录下执行下面语句:
./elasticsearch-setup-passwords interactive
这里要设置6个账号和密码,包括elasticsearch、kibana等
4、使用账号密码登录
(1)如果是使用浏览器登录es或者kibana,就需要在弹窗输入账号密码
(2)使用java代码连接
/** * es的连接客户端(账号默认是elastic) * @return */@Beanpublic RestHighLevelClient restHighLevelClient() {//es验证账号密码final CredentialsProvider provider = new BasicCredentialsProvider();//填写账号密码provider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials("elastic", "123456"));return new RestHighLevelClient(RestClient.builder(new HttpHost("47.113.201.128", 9200, "http")).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {httpClientBuilder.disableAuthCaching();return httpClientBuilder.setDefaultCredentialsProvider(provider);}}).setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {@Overridepublic RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {return requestConfigBuilder.setConnectTimeout(5000 * 1000) // 连接超时(默认为1秒) .setSocketTimeout(6000 * 1000);// 套接字超时(默认为30秒)}}));}
5、若想关闭x-pack密码验证
先进入es的config里,找到elasticsearch.yml:
xpack.security.enabled: false
6、修改密码
在虚拟机或者服务器输入
curl -H "Content-Type:application/json" -XPOST -u elastic'http://192.168.157.132:9200/_xpack/security/user/用户名/_password' -d '{ "password" : "修改后的密码" }'
如:
curl -H "Content-Type:application/json" -XPOST -u elastic'http://192.168.157.132:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "12345678" }'
这时候会要你输入原来的密码,输入正确后就会自动修改这时候会要你输入原来的密码,输入正确后就会自动修改这时候会要你输入原来的密码,输入正确后就会自动修改的