项目场景:

有时候我们也需要给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" }'

这时候会要你输入原来的密码,输入正确后就会自动修改这时候会要你输入原来的密码,输入正确后就会自动修改这时候会要你输入原来的密码,输入正确后就会自动修改的