当前位置: 首页 > 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;因比赛未结束故不开源...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下&#xff0c;大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性&#xff0c;吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型&#xff0c;成为释放其巨大潜力的关键所在&…...