项目场景:

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

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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐