首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Elasticsearch设置 X-Pack认证,设置账号和密码

  • 25-02-19 15:01
  • 3107
  • 9030
blog.csdn.net

前言

以下Elasticsearch版本:7.9.3

ES自带的X-Pack密码验证:

  • X-Pack是elasticsearch的一个扩展包,将安全,警告,监视,图形和报告功能捆绑在一个易于安装的软件包中,所以我们想要开启账号密码验证,就需要开启X-Pack密码校验。
  • 5.X版本之前:Elasticsearch没有自带X-Pack,X-Pack的各个功能(如安全、警报、监视、图形和报告)是独立的单元。
  • 5.X版本:Elasticsearch对原本的安全、警报、监视、图形和报告等功能做了一个封装,形成了X-Pack,但X-Pack仍需要额外安装。
  • 6.3版本及之后:X-Pack已经集成在一起发布,无需额外安装。不过,基础安全功能在付费黄金版中才可用。
  • 6.8及以上版本:默认带上了X-Pack认证插件且免费。
  • 7.0+版本:默认情况下,当安装Elasticsearch时,会安装X-Pack,无需单独再安装。

Elasticsearch的X-Pack 详细简介:点我查看

一、修改ES配置文件

在ES配置文件config 文件夹:elasticsearch.yml 添加如下配置

xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
  • 1
  • 2
  • 3

在这里插入图片描述

若想关闭x-pack密码验证,如下操作:

xpack.security.enabled: false
  • 1

二、重新启动ES

找到ES路径 bin 下面 双击 elasticsearch.bat 重新启动后,以上配置才生效
在这里插入图片描述
启动完成:
在这里插入图片描述

三:通过命令设置ES密码

通过管理员打开cmd窗口,切换到ES文件夹 bin 路径下面 执行以下命令:

elasticsearch-setup-passwords interactive 
  • 1

1、出现以下情况,输入:y
在这里插入图片描述
2、可以开始设置密码了,一次性需要设置多个密码,密码尽量保证一致
在这里插入图片描述
其中,用户权限分别如下:

  1. elastic 账号:拥有 superuser 角色,是内置的超级用户
  2. kibana 账号:拥有 kibana_system 角色,用户 kibana 用来连接 elasticsearch 并与之通信。Kibana 服务器以该用户身份提交请求以访问集群监视 API 和 .kibana 索引。不能访问 index。
  3. logstash_system 账号:拥有 logstash_system 角色。用户 Logstash 在 Elasticsearch 中存储监控信息时使用。

密码设置完成后,重新启动ES

四:访问ES 验证是否成功?

访问 127.0.0.1:9200

在这里插入图片描述

ES用户名:elastic
passWord: 刚才设置的密码
  • 1
  • 2

在这里插入图片描述
密码设置成功!

五:kibana 配置ES

1、修改kibana 配置文件 kibana.yml ,添加如下配置

elasticsearch.hosts: ["http://127.0.0.1:9200"]
elasticsearch.username: "elastic"
elasticsearch.password: "zxcv9527" 
  • 1
  • 2
  • 3

在这里插入图片描述
2、执行 bin下面的 kibana.bat 启动
在这里插入图片描述
3、浏览器访问 127.0.0.1:5601 输入账号和密码

备注:注意网站登录的账号和密码是ES

kibana 账号:elastic
passWord: zxcv9527
  • 1
  • 2

在这里插入图片描述

六:Spring Boot 配置ES

1、yml文件配置

在配置 Spring Data Elasticsearch 以使用带有身份验证的 Elasticsearch 客户端时,你需要确保配置文件中包含了正确的连接信息和认证细节。基于你提供的信息,你的 Elasticsearch 实例位于 127.0.0.1:9200,账号为 elastic,密码为 zxcv9527。

对于 Spring Boot 应用,你可以在 application.yml 或 application.properties 文件中设置这些配置。以下是如何在 application.yml 文件中配置这些信息的示例:

spring:  
  data:  
    elasticsearch:  
      client:  
        reactive:  
          endpoints: 127.0.0.1:9200  
          username: elastic  
          password: zxcv9527
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

或者,如果你使用的是 application.properties 文件,配置是这样的:

spring.data.elasticsearch.client.reactive.endpoints=127.0.0.1:9200  
spring.data.elasticsearch.client.reactive.username=elastic  
spring.data.elasticsearch.client.reactive.password=zxcv9527
  • 1
  • 2
  • 3

这些配置设置将确保 Spring Data Elasticsearch 使用提供的用户名和密码连接到指定的 Elasticsearch 端点。

2、java 代码配置类

只是一个简单的配置类,主要是连接测试,参考使用

import com.lingxu.plus.es.utils.ElasticSearchUtil;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author ajie
 *
 * @since 20241014
 */
@Configuration
public class ElasticSearchClientConfig {

    @Value("${spring.data.elasticsearch.client.reactive.endpoints}")
    private String endpoints;

    @Value("${spring.data.elasticsearch.client.reactive.username}")
    private String userName;

    @Value("${spring.data.elasticsearch.client.reactive.password}")
    private String password;

    @Bean  // 标记这个方法生成的对象是一个Spring管理的Bean
    public RestHighLevelClient restHighLevelClient() {
        // 将端点字符串分割成数组
        String[] points = endpoints.split(",");
        // 创建一个与端点数组长度相同的HttpHost数组
        HttpHost[] httpHosts = new HttpHost[points.length];

        // 遍历端点数组,创建HttpHost对象并填充到数组中
        for (int i = 0; i < points.length; i++) {
            String point = points[i];
            String[] hostPort = point.split(":");
            httpHosts[i] = new HttpHost(hostPort[0], Integer.parseInt(hostPort[1]), "http");
        }

        // 创建一个凭证提供者,用于存储用户名和密码
        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        // 设置凭证提供者的认证范围(这里设置为ANY,表示对所有主机都使用这些凭证)
        // 并使用用户名和密码创建基本认证凭据
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));

        // 自定义RestClientBuilder,以便在创建HTTP客户端时使用凭证提供者
        RestClientBuilder builder = RestClient.builder(httpHosts)
                .setHttpClientConfigCallback(httpClientBuilder -> {
                    // 在HTTP客户端构建器中设置凭证提供者
                    return httpClientBuilder
                            .setDefaultCredentialsProvider(credentialsProvider);
                    // 这里可以根据需要添加其他配置,比如SSL设置等
                });

        // 使用自定义的构建器创建RestHighLevelClient对象
        RestHighLevelClient client = new RestHighLevelClient(builder);
        // 返回创建的RestHighLevelClient对象
        return client;
    }

    @Bean
    public ElasticSearchUtil elasticSearchUtil() {
        return new ElasticSearchUtil();
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71

3、注意事项

  • 版本兼容性:检查你使用的 Spring Data Elasticsearch 版本与你的 Elasticsearch 服务器版本是否兼容。
  • 依赖关系:确保你的项目中包含了 Spring Data Elasticsearch 的依赖。对于使用 Spring Boot 的项目,你可以添加类似以下的依赖到你的 pom.xml(如果你使用 Maven):
<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-data-elasticsearch-reactive</artifactId>  
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 安全性:确保你的密码和其他敏感信息不会硬编码在源代码或配置文件中,特别是在生产环境中。考虑使用环境变量或外部配置服务来管理敏感信息。
  • 连接测试:在应用启动后,测试连接是否成功,可以通过查看日志或使用一些简单的查询来验证。
    这样配置后,你的 Spring 应用应该能够成功连接到需要身份验证的 Elasticsearch 实例。

七:修改密码

命令中,elastic是要修改密码的用户名。执行完命令后,输入新密码即可完成密码修改

bin/elasticsearch-users passwd elastic
  • 1

服务器修改、rest api:
语法示例:

curl -H "Content-Type:application/json" -XPOST -u elastic  'http://192.168.157.132:9200/_xpack/security/user/用户名/_password' -d '{ "password" : "修改后的密码" }'
  • 1

修改 elastic 示例:

curl -H "Content-Type:application/json" -XPOST -u elastic 'http://127.0.0.1:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "zxcv9527" }'
  • 1

忘记密码处理:

  1. 修改elasticsearch.yml 配置,将身份验证相关配置屏蔽掉;
  2. 重启ES,查看下索引,发现多了一个.security-7索引,将其删除
  3. 到此就回到ES没有设置密码的阶段了,如果想重新设置密码,请重新开始

备注:ES 整体路径不要存在中文名称和特殊符号,空格、等,防止出现一些其他问题。

注:本文转载自blog.csdn.net的菜鸟小杰子的文章"https://blog.csdn.net/lijie0213/article/details/142910025"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

112
数据库
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top