Elasticsearch设置 X-Pack认证,设置账号和密码
前言
以下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
若想关闭x-pack密码验证,如下操作:
xpack.security.enabled: false
二、重新启动ES
找到ES路径 bin 下面 双击 elasticsearch.bat 重新启动后,以上配置才生效
启动完成:
三:通过命令设置ES密码
通过管理员打开cmd窗口,切换到ES文件夹 bin 路径下面 执行以下命令:
elasticsearch-setup-passwords interactive
1、出现以下情况,输入:y
2、可以开始设置密码了,一次性需要设置多个密码,密码尽量保证一致
其中,用户权限分别如下:
- elastic 账号:拥有 superuser 角色,是内置的超级用户
- kibana 账号:拥有 kibana_system 角色,用户 kibana 用来连接 elasticsearch 并与之通信。Kibana 服务器以该用户身份提交请求以访问集群监视 API 和 .kibana 索引。不能访问 index。
- logstash_system 账号:拥有 logstash_system 角色。用户 Logstash 在 Elasticsearch 中存储监控信息时使用。
密码设置完成后,重新启动ES
四:访问ES 验证是否成功?
访问 127.0.0.1:9200
ES用户名:elastic
passWord: 刚才设置的密码
密码设置成功!
五:kibana 配置ES
1、修改kibana 配置文件 kibana.yml ,添加如下配置
elasticsearch.hosts: ["http://127.0.0.1:9200"]
elasticsearch.username: "elastic"
elasticsearch.password: "zxcv9527"
2、执行 bin下面的 kibana.bat 启动
3、浏览器访问 127.0.0.1:5601 输入账号和密码
备注:注意网站登录的账号和密码是ES
kibana 账号:elastic
passWord: zxcv9527
六: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
或者,如果你使用的是 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
这些配置设置将确保 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管理的Beanpublic 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;}@Beanpublic ElasticSearchUtil elasticSearchUtil() {return new ElasticSearchUtil();}
}
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>
- 安全性:确保你的密码和其他敏感信息不会硬编码在源代码或配置文件中,特别是在生产环境中。考虑使用环境变量或外部配置服务来管理敏感信息。
- 连接测试:在应用启动后,测试连接是否成功,可以通过查看日志或使用一些简单的查询来验证。
这样配置后,你的 Spring 应用应该能够成功连接到需要身份验证的 Elasticsearch 实例。
七:修改密码
命令中,elastic是要修改密码的用户名。执行完命令后,输入新密码即可完成密码修改
bin/elasticsearch-users passwd elastic
服务器修改、rest api:
语法示例:
curl -H "Content-Type:application/json" -XPOST -u elastic 'http://192.168.157.132:9200/_xpack/security/user/用户名/_password' -d '{ "password" : "修改后的密码" }'
修改 elastic 示例:
curl -H "Content-Type:application/json" -XPOST -u elastic 'http://127.0.0.1:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "zxcv9527" }'
忘记密码处理:
- 修改elasticsearch.yml 配置,将身份验证相关配置屏蔽掉;
- 重启ES,查看下索引,发现多了一个.security-7索引,将其删除
- 到此就回到ES没有设置密码的阶段了,如果想重新设置密码,请重新开始
备注:ES 整体路径不要存在中文名称和特殊符号,空格、等,防止出现一些其他问题。
相关文章:

Elasticsearch设置 X-Pack认证,设置账号和密码
前言 以下Elasticsearch版本:7.9.3 ES自带的X-Pack密码验证: X-Pack是elasticsearch的一个扩展包,将安全,警告,监视,图形和报告功能捆绑在一个易于安装的软件包中,所以我们想要开启账号密码验证…...

机器学习——量子机器学习(Quantum Machine Learning)
机器学习——量子机器学习(Quantum Machine Learning) 量子机器学习(Quantum Machine Learning)——未来的智能计算量子机器学习的核心概念使用Qiskit进行量子机器学习——代码示例代码解析量子机器学习的应用结论 量子机器学习&a…...

Android Studio 的 Gradle 任务列表只显示测试任务
问题现象如下: 问题原因: 这是因为Android Studio 设置中勾选了屏蔽其他gradle任务的选项。 解决方法: File -> Settings -> Experimental 取消勾选Only include test tasks in the Gradle task list generated during Gradle Sync&…...
Keepalived:高可用性的守护神
Keepalived:高可用性的守护神 在现代企业IT系统中,高可用性是确保业务连续性和服务质量的关键要素。系统面对硬件故障、软件错误、人为失误或自然灾害时,依然能保持正常运行,这样的能力对于企业来说至关重要。为此,业界开发了一系列高可用性解决方案,其中Keepalived以其…...

Golang笔记_day08
Go面试题(一) 1、空切片 和 nil 切片 区别 空切片: 空切片是指长度和容量都为0的切片。它不包含任何元素,但仍然具有切片的容量属性。在Go语言中,可以使用内置的make函数创建一个空切片,例如:…...
如何在 React 中更新状态对象的某个值
在 React 中,我们经常需要更新组件的状态来反映 UI 的变化。如果状态是一个复杂的对象,比如一个包含多个筛选条件的对象,我们希望只更新其中的某个键,而不是整个状态对象。今天,我将向大家展示如何在更新状态时保留已有…...

edge浏览器:你的连接不是专用连接
最近在使用edge浏览器打开github时,发现打不开了,提升你的连接不是专用连接。试了很多种方法甚至重装了浏览器,都没有用。 直到看到了这篇文章,才得到解决: 10 个修复此站点在 Windows Edge 上的连接不安全的问题htt…...

PDF 软件如何帮助您编辑、转换和保护文件
如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的…...
如何使用Java爬虫处理API接口返回的JSON数据?
处理API接口返回的JSON数据是Java爬虫开发中的一个常见任务。在Java中,有多个库可以帮助我们解析JSON数据,其中最流行的是Jackson和Gson。以下是使用这两个库处理JSON数据的基本步骤和示例代码。 使用Jackson处理JSON Jackson是一个功能强大的JSON处理…...
Ajax是什么?
Ajax是什么? Ajax是创建交互式网页应用的网页开发技术。简单来说就是网页在不加载的情况下,可以跟服务器交换数据,并更新页面的内容。 原理: 1. 创建xhr(xmlHttpRequest)对象; 2, 通过xhr对象的open()方法和…...
技术方向简介
掌握 Java基础,包括OOP思想、集合、常用的设计模式;熟悉基本的数据结构和算法; 掌握JVM虚拟机和Java多线程并发编程,熟悉线程池、线程安全机制、锁的使用; 熟悉MySQL、Oracle等关系型数据库锁、事务、索引相关知识,了解DDL原理&…...

延迟队列实现及其原理详解
1.绪论 本文主要讲解常见的几种延迟队列的实现方式,以及其原理。 2.延迟队列的使用场景 延迟队列主要用于解决每个被调度的任务开始执行的时间不一致的场景,主要包含如下场景: 1.比如订单超过15分钟后,关闭未关闭的订单。 2.比如用户可以…...

web APIs
目录 Web APIs第一天Dom获取&属性操作Web API基本认知变量声明作用和分类什么是DOMDOM树DOM对象 获取Dom对象根据CSS选择器来获取DOM元素(重点)其他获取DOM元素方法(了解) 操作元素内容对象.innerText 属性对象.innerHTML 属性…...

【Web前端概述】
HTML 是用来描述网页的一种语言,全称是 Hyper-Text Markup Language,即超文本标记语言。我们浏览网页时看到的文字、按钮、图片、视频等元素,它们都是通过 HTML 书写并通过浏览器来呈现的。 一、HTML简史 1991年10月:一个非正式…...

文献阅读:一种基于艾伦脑图谱的空间表达数据可视化、空间异质性描绘和单细胞配准工具
::: block-1 文献介绍 文献题目: AllenDigger,一种基于艾伦脑图谱的空间表达数据可视化、空间异质性描绘和单细胞配准的工具 研究团队: 王晓群(北京师范大学) 发表时间: 2023-03-16 发表期刊:…...

Redis学习笔记(三)--Redis客户端
文章目录 一、命令行客户端二、图形界面客户端1、Redis Desktop Manager2、RedisPlus 三、java代码客户端 本文参考: Redis学习汇总(已完结) Redis超详细入门教程(基础篇) Redis视频从入门到高级,redis视频…...
面试知识梳理
一、vue篇章 1.vue2和vue3性能方面的提升最主要的原因是什么? 1、1响应式的系统优化: vue3使用了es6的proxy对象来实现响应式系统,取代了vue2中基于Object.defineProperty的方法。Proxy提供了更强大和灵活的拦截能力,可以更有效地…...
Unity3D ScrollView 滚动视图组件详解及代码实现
前言 在Unity3D中,ScrollView(滚动视图)是一种常用的UI组件,它允许用户通过滚动来查看超出当前视图范围的内容。ScrollView通常用于显示长列表、大量文本或图像等。本文将详细介绍Unity3D中的ScrollView组件,并提供代…...
13.java面向对象:封装
java面向对象:封装 我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。 封装(数据的隐藏)通常应禁止直接访问一个对象中…...

记录:网鼎杯2024赛前热身CRYPT01密码学
题目 下载并打开附件 判断为凯撒密码,尝试移位解密 在第10位发现flag字样 提交得分 解密脚本为个人自用,因比赛未结束故不开源...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...