项目场景:

有时候我们也需要给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: basic

xpack.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

*/

@Bean

public 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() {

@Override

public 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" }'

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

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: