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

Easysearch 基础运维扫盲指南:从 HTTP 到 HTTPS、认证与安全访问全解析

Easysearch 基础运维扫盲指南:从 HTTP 到 HTTPS、认证与安全访问全解析

众所周知,原生 Elasticsearch 默认开启的是 HTTP 明文接口,并且不开启任何身份认证或传输加密。若想启用 TLS/SSL 加密及账号密码验证,通常需要配置繁琐的安全模块。

而 Easysearch 在此基础上做了极大的简化,通过官方提供的 initialize.sh 脚本,一键完成初始化即可自动生成证书、配置 HTTPS,并启用密码认证。

当然,对于本地开发或临时测试场景,我们也可能希望关闭 HTTPS 与认证,直接通过 HTTP 调试服务。本文将从配置文件出发,逐步讲解如何根据不同需求配置 Easysearch 的安全策略、通信协议与外网访问权限。


🛠 一、初始化输出与默认账号密码

执行以下初始化命令后:

bin/initialize.sh

终端及 initialize.log 文件中将输出初始的访问方式和管理员账号密码,例如:

curl -ku admin:160824cab0b02193226e https://localhost:9200

默认情况下,Easysearch 启用了 HTTPS 通信及密码认证。


⚙ 二、修改配置文件:easysearch.yml

配置文件路径:

config/easysearch.yml

例如,你可以修改集群名称:

cluster.name: my-application

修改前访问输出:

"cluster_name": "easysearch"

修改后:

"cluster_name": "my-application"

🌐 三、开放外网访问(单节点部署)

若希望在局域网或公网访问 Easysearch,可以加入以下配置:

network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node

此外,为增强对原生 Elasticsearch 客户端的兼容性,建议添加:

elasticsearch.api_compatibility: true

🔐 四、控制 HTTPS 与认证功能开关

Easysearch 提供两个核心参数控制安全行为:

参数说明
security.enabled控制是否启用身份认证和安全模块
security.ssl.http.enabled控制是否启用 HTTPS(SSL/TLS)

你可以根据环境选择配置组合:

security.enabledsecurity.ssl.http.enabled效果
truetrue默认配置,启用 HTTPS 和认证(推荐)
truefalse明文 HTTP + 启用认证
falsetrue启用加密但无身份认证(不常见)
falsefalse完全开放,无认证 + HTTP(⚠️ 不建议生产使用)

📸 五、示例:启用 HTTP 并保留认证

如果你希望使用 HTTP 而不启用 HTTPS,可修改如下配置:

security.enabled: true
security.ssl.http.enabled: false

访问时依然需要提供账号密码,效果如下图所示:

image-20250425120123219


🔧 六、用户认证与密码管理

初始化完成后,Easysearch 默认会创建一个管理员用户 admin,其信息存储在:

config/security/user.yml

示例如下:

admin:hash: "$2y$12$rmNDJxpQdRDb3F1dqk.uweSZqH3VAqeEpkP298vJ6QS99K80kbRoO"reserved: trueexternal_roles:- "admin"description: "Admin user"

你可以使用 Postman 或 Python 脚本验证访问:

import requestsurl = "http://localhost:9200"
headers = {'Authorization': 'Basic YWRtaW46MTYwODI0Y2FiMGIwMjE5MzIyNmU='
}
response = requests.get(url, headers=headers)
print(response.text)

👤 七、新建用户与管理接口

你可以通过以下接口查询当前用户信息:

GET /_security/account

在这里插入图片描述

也可以访问:

GET /_security/user

在这里插入图片描述

用于列出所有用户。

虽然 user.yml 文件默认只包含 admin 用户,但通过 API 添加的新用户同样生效。如下图所示,通过 Postman 创建的新用户已成功生效:

  • 新用户创建界面:

    新建用户

  • 使用新用户访问验证成功:

    新用户访问


✅ 总结

场景推荐配置
本地测试(无加密、无认证)security.enabled: false + security.ssl.http.enabled: false
本地调试(加认证、无加密)security.enabled: true + security.ssl.http.enabled: false
生产环境(安全通信)security.enabled: true + security.ssl.http.enabled: true
特殊用途(加密但无认证)security.enabled: false + security.ssl.http.enabled: true

EasySearch 提供了非常灵活的配置机制,开发者可以根据具体需求,自由切换 HTTP/HTTPS、开启或关闭认证模块。理解并掌握这两个核心安全参数,将大大提升你对 EasySearch 的运维掌控力。

🔐 附录:关于 Basic Auth 的原理与使用方式

在 Easysearch 默认开启认证的情况下,我们在请求中经常会看到如下的 Authorization 头:

Authorization: Basic YWRtaW46MTYwODI0Y2FiMGIwMjE5MzIyNmU=

这其实就是标准的 HTTP Basic 认证,格式如下:

Authorization: Basic <Base64 编码后的 用户名:密码>

🧠 举个例子:

Base64 编码前是:

admin:160824cab0b02193226e

编码后变成:

YWRtaW46MTYwODI0Y2FiMGIwMjE5MzIyNmU=

也就是说,以下请求:

headers = {'Authorization': 'Basic YWRtaW46MTYwODI0Y2FiMGIwMjE5MzIyNmU='
}

等价于:

curl -u admin:160824cab0b02193226e http://localhost:9200

⚠️ 安全提示:

Base64 只是编码 不是加密,账号密码依然是明文形式,因此 必须配合 HTTPS 使用,否则容易被中间人监听。


🌐 使用 URL 携带用户名密码(不推荐但有时方便)

除了 Header 或 curl -u 的方式,HTTP 协议还允许通过 URL 携带账号密码:

curl http://admin:160824cab0b02193226e@localhost:9200

浏览器中也可以直接访问:

http://admin:160824cab0b02193226e@localhost:9200

相关文章:

  • OpenCV 图形API(64)图像结构分析和形状描述符------在图像中查找轮廓函数findContours()
  • AI编程:[体验]从 0 到 1 开发一个项目的初体验
  • 如何在IDEA中高效使用Test注解进行单元测试?
  • 产品动态|千眼狼sCMOS科学相机捕获单分子荧光信号
  • 前端面试(Vue React)内容目录与备考建议
  • websheet 之 sheet操作
  • Spark-Streaming(三)
  • 逐行解析性能奥秘:借助 `line_profiler` 深入优化热点函数
  • Node.js 开发项目
  • Antd Modal Drawer 更改默认项
  • 【leetcode刷题日记】lc.73-矩阵置零
  • 一些有关ffmpeg 使用(1)
  • Z-Wave正通过自我革新,重塑在智能家居领域新定位
  • [FPGA基础] DMA
  • 0基础 | Proteus仿真 | 51单片机 | 继电器
  • MySQL的MVCC【学习笔记】
  • 01.oracle SQL基础
  • Django之旅:第七节--模版继承
  • IDEA配置将Servlet真正布署到Tomcat
  • Matplotlib高阶技术全景解析(续):动态交互、三维可视化与性能优化
  • 龚曙光:散文家永远只有一个视角,就是“我与时代”
  • 马上评|起名“朱雀玄武敕令”?姓名权别滥用
  • 滁州一交通事故责任认定引质疑:民警和司法鉴定人被处罚,已中止诉讼
  • 商务部谈中欧汽车谈判进展
  • 神十九乘组视频祝福第十个中国航天日,展望中华民族登月梦圆
  • 张文宏团队公布广谱抗猴痘药物研发进展,将进入临床审批阶段