【深入浅出】Elasticsearch安全教程,一文讲透核心原理
【深入浅出】Elasticsearch 安全教程,一文讲透核心原理
很多人上手 ES 第一步就是裸奔直接对外,这是最大隐患。ES
安全不只是加个账号密码,包含身份认证、授权、传输加密、审计、网络隔离、数据脱敏、集群防篡改整套体系,本文从原理到落地,适合运维、后端、搜索开发。
一、先搞懂:ES 安全到底在防什么?
未授权访问:公网裸奔,别人随意读、删索引、删集群
越权访问:A 用户只能访问索引 A,却能查到索引 B
明文传输:HTTP、节点间通信抓包拿到数据、账号密码
恶意注入:DSL 注入、超大查询打崩集群(查询洪水)
节点冒充:恶意节点加入集群,窃取数据或者破坏分片
操作无追溯:谁什么时候删了索引,无法审计定位
核心一句话:ES 安全 = 谁能来(认证)→ 能做什么(授权)→ 通信安不安全(加密)→ 干了啥记下来(审计)
二、ES 安全基础组件(Elastic Stack Security,原 X-Pack Security)
注意:7.0+ 安全模块内置,基础认证功能免费,高级功能(RBAC 细粒度审计、SSO、字段 / 文档级别权限)需要白金 / 企业版。核心四大模块:
Authentication 身份认证:校验你是谁(账号密码、API Key、证书、LDAP、OIDC SSO)
Authorization 授权(RBAC):校验你可以干什么,角色绑定权限
Encryption 加密:传输加密 TLS(节点间 + 客户端 HTTPS)、静态加密(磁盘数据加密)
Audit 审计日志:记录登录、查询、修改、删除、认证失败事件
2.1 身份认证原理
ES 认证流程:客户端携带凭证 → ES 安全模块校验凭证合法性,成功后生成安全上下文,用于后续鉴权。支持的认证方式:
内置 native:ES 本地存储用户(native域,最常用)
file:文件用户(老版本,不推荐大规模使用)
API Key:程序对接首选,短期密钥,可单独回收,比账号密码更安全
PKI 证书认证:客户端证书,无密码,适合服务间调用
LDAP/Active Directory、OIDC、SAML:对接企业统一登录
重点区分: elastic 是超级管理员内置账号,集群初始化自动生成,一定要改密码,不要业务程序直接用 elastic!
2.2 RBAC 权限模型(ES 安全核心)
ES 是用户 → 角色 → 权限模型
User 用户:登录主体
Role 角色:权限的集合
Privilege 权限:最小权限单元,分集群权限、索引权限、应用权限
权限两大分类:
集群级权限:操作整个集群,比如查看集群状态、创建索引模板、关闭节点、快照备份示例:cluster:monitor/*(集群监控)、cluster:admin/snapshot(快照管理)
索引级权限:针对一个 / 一类索引操作,支持通配符 log-* 示例:read 查询、write 写入、delete 删除、create_index 创建索引、manage 索引管理
进阶能力(白金版)
文档级安全 DLS:同一个索引,不同用户只能看到符合条件的文档(行级权限)
字段级安全 FLS:隐藏索引中敏感字段(手机号、身份证不返回)
2.3 TLS 传输加密原理
ES 有两层通信,都可以开启 TLS:
Transport 层(9300 端口):节点之间通信 分片复制、集群选主、节点发现全部走这个端口。集群内节点之间必须开启 TLS,防止中间人、恶意节点入网
HTTP 层(9200 端口):客户端和 ES 通信 Kibana、业务代码、curl 访问,开启后就是 HTTPS,明文 DSL、返回数据不再裸传
证书体系:CA 根证书 + 节点证书(所有节点共用 CA 签发),节点互相校验证书信任链。
常见误区:只开 HTTPS(9200),不开 transport TLS。集群内网被渗透后,攻击者伪造节点加入集群。
三、完整安全流程时序(客户端访问 ES)
客户端发起 HTTPS 请求,TLS 握手,验证 ES 服务端证书
客户端提交凭证(账号密码 / ApiKey / 客户端证书)
ES Security 模块认证凭证是否有效
认证通过,读取该用户绑定的所有角色
提取本次请求需要的权限(比如 log-2026-* 的 read)
校验角色权限是否覆盖本次操作: ✅ 通过 → 执行 DSL,返回数据 ❌ 拒绝 → 返回 403 权限不足
开启审计时,这条访问记录写入审计日志
四、必开基础安全配置(免费能力,生产最低底线)
4.1 开启安全,设置 elastic 密码
elasticsearch.yml
xpack.security.enabled: true
# 节点间TLS加密
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
# http HTTPS加密
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: elastic-certificates.p12
xpack.security.http.ssl.truststore.path: elastic-certificates.p12
密码初始化命令:
elasticsearch-setup-passwords auto
# 或者 interactive 手动设置
4.2 API Key 最佳实践(业务推荐)
不使用 elastic 账号给业务服务,单独创建 API Key,绑定最小权限角色,密钥泄露可以直接撤销,不用改集群账号密码。
POST /_security/api_key
{
"name": "app-log-writer",
"role_descriptors": {
"log_write_role": {
"index": [
{
"names": ["app-log-*"],
"privileges": ["write","create_index"]
}
]
}
}
}
五、安全边界:网络层 + 集群侧双重防护(非常重要)
ES 安全模块是应用层防护,不能替代网络隔离!
9200:禁止直接暴露公网,放 WAF / 反向代理,白名单 IP 访问
9300:节点通信端口,绝对禁止对公网开放,仅集群内网互通
Kibana 单独做登录,Kibana 本身也有角色映射,不要所有人都用 kibana 超级账号
禁用危险接口:_source 批量导出、_delete_by_query 高危操作,普通业务角色不给权限
六、常见安全漏洞 & 踩坑原理剖析
CVE-2021-42013、历史反序列化漏洞 原理:旧版本 ES 存在代码注入,解决方案:升级版本 + 网络隔离 + 鉴权,不能只靠安全模块。
权限过大,角色直接给 * 全权限 "privileges":["*"] 等于超级管理员,API Key 泄露集群直接沦陷,遵循最小权限原则。
证书过期没监控 TLS 证书到期 → 节点通信断裂、业务连不上 ES,必须加入证书过期告警。
审计日志没开,出事无法溯源 审计日志量大,生产可以按需开启:认证事件、索引删除、集群配置修改,过滤普通查询减少存储压力。
DSL 查询注入 原理:前端参数直接拼接 DSL,攻击者构造恶意查询。解决:使用 Query DSL 参数化,禁止原生 script 脚本权限给普通用户。
七、安全加固清单(速查)
✅ 开启 xpack.security.enabled=true,修改 elastic 默认密码
✅ transport 和 http 双层 TLS 加密,统一 CA 证书
✅ 业务访问使用 API Key,分配最小索引权限
✅ 9300 端口内网隔离,9200 限制 IP 白名单
✅ 禁止普通用户获取 _cluster/* 集群管理权限
✅ 关闭 / 限制 inline 脚本、自定义脚本权限
✅ 开启审计日志,持久化存储,不可篡改
✅ 定期轮换密码、轮换 API Key、轮换 TLS 证书
✅ 定期升级 ES 小版本,修补安全 CVE
✅ 快照单独权限,快照文件加密存放
八、配套学习资源
官方文档(权威)
Elastic Security 官方:https://www.elastic.co/guide/en/elasticsearch/reference/current/security.html
RBAC 角色权限:https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html
TLS 证书生成工具 elasticsearch-certutil
视频教程关键词(B 站)
Elasticsearch Xpack安全实战、ES TLS证书配置、ES API Key权限管控、ES文档级别安全DLS
工具
elasticsearch-certutil:ES 自带证书生成,一键生成 PKCS12 证书
Kibana 安全页面:可视化管理用户、角色、API Key,不用手写 DSL
九、补充:开源替代方案(没钱用白金版)
免费版限制:没有 DLS/FLS 字段文档权限、高级审计、SSO 替代思路:
上层封装网关(自定义代理),在网关层做行级过滤、字段脱敏
网关层做鉴权,转发请求到 ES,适合预算有限场景
- 上一页:软件安装免费替代方案合集
- 下一页:一文掌握SSH免密登录,效率提升300%
-
【深入浅出】Elasticsearch安全教程,一文讲透核心原理【深入浅出】Elasticsearch 安全教程,一文讲透核心原理很多人上手 ES 第一步就是裸奔直接对外,这是最大隐患。ES 安全不只是加个账号密码,包含身份认证、授权、传输加密、审计、网络隔离、数据脱敏、集群防篡改整套体系,本文从原理到落地,适合运维、后端、...
-
HBase面试题常见问题排查手册HBase 面试题常见问题排查手册面向后端、大数据开发面试,分为:基础概念、读写原理、架构、RowKey 设计、预分区、版本与删除、集群运维、线上故障排查、对比题、高频手写题。每个问题附带【标准答案】+【面试加分点】,适合背诵 + 排查线上问题。 一、基础概...
-
2026年AI数据库学习笔记最新趋势与技术选型2026年AI数据库技术趋势与选型指南2026年AI数据库赛道正在经历一场从"专用向量库"到"多模融合底座"的架构重构。大模型推理成本骤降90%以上,AI应用从试点走向规模化,数据基础设施反而成了新的瓶颈——Gartner预测超60%的AI项目将因数据底座不足而失败。 下面从趋势...
-
MySQL迁移教程详解:从理论到生产环境实践MySQL 迁移教程详解:从理论到生产环境实践适用场景:同版本迁移、跨大版本升级(5.7→8.0)、跨服务器迁移、上云迁移、主从拆分、数据库搬家;覆盖开发测试、预发、正式生产。核心原则:数据一致性优先、可回滚、业务影响最小化;禁止直接在生产裸操作,必须预演...
-
2026年Elasticsearch索引最新趋势与技术选型2026 年 Elasticsearch 索引最新趋势与技术选型说明:以下信息主要依据 Elastic 官方 Blog(Elastic 9.4、9.5 版本,2026 年发布)与 Search Labs 技术内容整理,聚焦索引相关的趋势与选型,不含商业立场。一、2026 年整体趋势:从 "搜索数据库" 走向 "统一数据平台"Elasticsearch 2026 年的...
-
反范式教程:数据库高手进阶之路反范式教程:数据库高手进阶之路反范式不是“把表设计乱”,而是在范式基础上,有目的地引入冗余,用空间换查询性能。高手和普通开发者的区别在于:普通人一上来就加冗余字段,高手会先确认瓶颈,再选最小冗余方案,并把一致性维护当成生产基础设施。1....