当前位置: 首页 > news >正文

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、可以开始设置密码了,一次性需要设置多个密码,密码尽量保证一致
在这里插入图片描述
其中,用户权限分别如下:

  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: 刚才设置的密码

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

五: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" }'

忘记密码处理:

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

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

相关文章:

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

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

机器学习——量子机器学习(Quantum Machine Learning)

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

Android Studio 的 Gradle 任务列表只显示测试任务

问题现象如下&#xff1a; 问题原因&#xff1a; 这是因为Android Studio 设置中勾选了屏蔽其他gradle任务的选项。 解决方法&#xff1a; File -> Settings -> Experimental 取消勾选Only include test tasks in the Gradle task list generated during Gradle Sync&…...

Keepalived:高可用性的守护神

Keepalived:高可用性的守护神 在现代企业IT系统中,高可用性是确保业务连续性和服务质量的关键要素。系统面对硬件故障、软件错误、人为失误或自然灾害时,依然能保持正常运行,这样的能力对于企业来说至关重要。为此,业界开发了一系列高可用性解决方案,其中Keepalived以其…...

Golang笔记_day08

Go面试题&#xff08;一&#xff09; 1、空切片 和 nil 切片 区别 空切片&#xff1a; 空切片是指长度和容量都为0的切片。它不包含任何元素&#xff0c;但仍然具有切片的容量属性。在Go语言中&#xff0c;可以使用内置的make函数创建一个空切片&#xff0c;例如&#xff1a;…...

如何在 React 中更新状态对象的某个值

在 React 中&#xff0c;我们经常需要更新组件的状态来反映 UI 的变化。如果状态是一个复杂的对象&#xff0c;比如一个包含多个筛选条件的对象&#xff0c;我们希望只更新其中的某个键&#xff0c;而不是整个状态对象。今天&#xff0c;我将向大家展示如何在更新状态时保留已有…...

edge浏览器:你的连接不是专用连接

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

PDF 软件如何帮助您编辑、转换和保护文件

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案&#xff0c;还是尝试组织和编辑主文档&#xff0c;PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时&#xff0c;请考虑这些因素。 1. 确定您的…...

如何使用Java爬虫处理API接口返回的JSON数据?

处理API接口返回的JSON数据是Java爬虫开发中的一个常见任务。在Java中&#xff0c;有多个库可以帮助我们解析JSON数据&#xff0c;其中最流行的是Jackson和Gson。以下是使用这两个库处理JSON数据的基本步骤和示例代码。 使用Jackson处理JSON Jackson是一个功能强大的JSON处理…...

Ajax是什么?

Ajax是什么&#xff1f; Ajax是创建交互式网页应用的网页开发技术。简单来说就是网页在不加载的情况下&#xff0c;可以跟服务器交换数据&#xff0c;并更新页面的内容。 原理&#xff1a; 1. 创建xhr&#xff08;xmlHttpRequest&#xff09;对象; 2, 通过xhr对象的open()方法和…...

技术方向简介

掌握 Java基础&#xff0c;包括OOP思想、集合、常用的设计模式&#xff1b;熟悉基本的数据结构和算法; 掌握JVM虚拟机和Java多线程并发编程&#xff0c;熟悉线程池、线程安全机制、锁的使用; 熟悉MySQL、Oracle等关系型数据库锁、事务、索引相关知识&#xff0c;了解DDL原理&…...

延迟队列实现及其原理详解

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

web APIs

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

【Web前端概述】

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

文献阅读:一种基于艾伦脑图谱的空间表达数据可视化、空间异质性描绘和单细胞配准工具

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

Redis学习笔记(三)--Redis客户端

文章目录 一、命令行客户端二、图形界面客户端1、Redis Desktop Manager2、RedisPlus 三、java代码客户端 本文参考&#xff1a; Redis学习汇总&#xff08;已完结&#xff09; Redis超详细入门教程&#xff08;基础篇&#xff09; Redis视频从入门到高级&#xff0c;redis视频…...

面试知识梳理

一、vue篇章 1.vue2和vue3性能方面的提升最主要的原因是什么&#xff1f; 1、1响应式的系统优化&#xff1a; vue3使用了es6的proxy对象来实现响应式系统&#xff0c;取代了vue2中基于Object.defineProperty的方法。Proxy提供了更强大和灵活的拦截能力&#xff0c;可以更有效地…...

Unity3D ScrollView 滚动视图组件详解及代码实现

前言 在Unity3D中&#xff0c;ScrollView&#xff08;滚动视图&#xff09;是一种常用的UI组件&#xff0c;它允许用户通过滚动来查看超出当前视图范围的内容。ScrollView通常用于显示长列表、大量文本或图像等。本文将详细介绍Unity3D中的ScrollView组件&#xff0c;并提供代…...

13.java面向对象:封装

java面向对象&#xff1a;封装 我们程序设计要追求“高内聚&#xff0c;低耦合”。高内聚就是类的内部数据操作细节自己完成&#xff0c;不允许外部干涉&#xff1b;低耦合&#xff1a;仅暴露少量的方法给外部使用。 封装(数据的隐藏&#xff09;通常应禁止直接访问一个对象中…...

记录:网鼎杯2024赛前热身CRYPT01密码学

题目 下载并打开附件 判断为凯撒密码&#xff0c;尝试移位解密 在第10位发现flag字样 提交得分 解密脚本为个人自用&#xff0c;因比赛未结束故不开源...

GitHub加速

GitHub加速 终端命令行 支持终端命令行 git clone , wget , curl 等工具下载. 支持 raw.githubusercontent.com , gist.github.com , gist.githubusercontent.com 文件下载.注意&#xff1a;不支持 SSH Key 方式 git clone 下载. git clone git clone https://ghp.ci/https:…...

每天学习一个Linux命令:xrandr

xrandr 是一个用于在 X Window 系统中管理显示器的命令行工具。它可以用来设置显示器的分辨率、刷新率、旋转方向和连接状态等。下面是 xrandr 的详细用法和案例。 基本用法 xrandr [选项]常用选项 -q 或 --query: 查询当前显示器的状态。-s 或 --size: 设置显示器的分辨率。…...

路由表来源(基于华为模拟器eNSP)

概叙 在交换网络中&#xff0c;若要实现不同网段之间的通信&#xff0c;需要依靠三层设备&#xff08;路由器、三层交换机等&#xff09;&#xff0c;而路由器只知道其直连网段的路由条目&#xff0c;对于非直连的网段&#xff0c;在默认情况下&#xff0c;路由器是不可达的&a…...

并查集(Union-Find)

并查集&#xff08;Disjoint Set&#xff0c;也称为Union-Find数据结构&#xff09;是一种用于高效处理不相交集&#xff08;即集合内元素互相独立&#xff0c;没有交集&#xff09;的数据结构。它主要用于解决以下两种操作&#xff1a; 查找&#xff08;Find&#xff09;&…...

Linux上的AI框架都有哪些?哪些AI框架适合驱动EACO地球链自动发展完善?

Linux上的AI框架种类繁多&#xff0c;涵盖了深度学习、机器学习、自然语言处理等多个领域。以下是一些常用的AI框架&#xff1a; 深度学习框架 Deeplearning4j 简介&#xff1a;Deeplearning4j&#xff08;Deep Learning For Java&#xff09;是Java和Scala环境下的一个开源分…...

java的第一个游戏界面

看视频02_大鱼吃小鱼_添加背景图_尚学堂_哔哩哔哩_bilibili 学习方法&#xff1a; 就对的视频小代码&#xff0c;书籍没有&#xff0c;遇到不懂的问ai 今日成果&#xff0c; 界面代码 package new_gameobj;import java.awt.Graphics; import java.awt.Image; import java.…...

【AIGC】ChatGPT提示词Prompt高效编写模式:Self-ask Prompt、ReACT与Reflexion

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;自我提问 (Self-ask Prompt)如何工作应用实例优势结论 &#x1f4af;协同思考和动作 (ReACT)如何工作应用实例优势结论 &#x1f4af;失败后自我反思 (Reflexion)如何工作…...

android studio无法下载依赖包问题

新建Flutter项目Android项目后&#xff0c;点击运行出现报错&#xff01; error.png 这是镜像站点无法访问造成的&#xff01;只需要修改为国内可访问的站点即可。 第一步:修改项目Android目录下的build.gradle buildscript { ext.kotlin_version 1.3.50 repositorie…...

SQL入门

一、SQL 语言概述 数据库就是指数据存储的库&#xff0c;作用就是组织数据并存储数据&#xff0c;数据库如按照&#xff1a;库 -> 表 -> 数据三个层级进行数据组织&#xff0c;而 SQL 语言&#xff0c;就是一种对数据库、数据进行操作、管理、查询的工具&#xff0c;通过…...

Java中的Math类

关于Math类的介绍&#xff0c;这是一个在Java和其他许多编程语言中常见的内置库或模块&#xff0c;主要用于提供各种数学运算的方法。在Java中&#xff0c;Math类位于java.lang包下&#xff0c;它包含大量静态方法执行基本的数学函数&#xff0c;如三角函数、指数函数、对数函数…...