TLS 与鉴权机制
为了确保 Elasticsearch 集群通信的安全性,启用 TLS 加密 和 身份认证机制 是生产环境的必备步骤。Elasticsearch 提供灵活的方式来保护集群、用户和数据的安全。
1. TLS 加密通信(HTTPS)
启用加密通信可防止中间人攻击与数据泄露。
a. 为节点间通信启用 TLS(transport 层)
在 elasticsearch.yml 添加:
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.key: certs/node.key
xpack.security.transport.ssl.certificate: certs/node.crt
xpack.security.transport.ssl.certificate_authorities: [ "certs/ca.crt" ]
`
所有节点需信任相同 CA。
b. 启用 REST API 的 TLS(HTTP 层)
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.key: certs/node.key
xpack.security.http.ssl.certificate: certs/node.crt
xpack.security.http.ssl.certificate_authorities: [ "certs/ca.crt" ]
启用后,必须通过 HTTPS 请求 Elasticsearch。
2. 生成 TLS 证书
使用 Elastic 官方工具一键生成:
elasticsearch-certutil ca
elasticsearch-certutil cert --ca elastic-stack-ca.p12
或使用 openssl 自签证书,或部署企业颁发的证书。
3. 鉴权机制类型
Elasticsearch 支持多种身份认证机制,满足不同安全策略:
| 鉴权类型 | 描述 | 授权级别 |
|---|---|---|
| Basic Auth | 默认内置用户名/密码认证 | 所有版本支持 |
| API Key | 创建一次性访问凭证,用于系统间通信 | 所有版本支持 |
| LDAP / AD | 企业目录集成,支持用户组继承 | 商业功能 |
| SAML / OIDC | 单点登录(SSO)方案,如连接企业登录系统 | 商业功能 |
| PKI 证书认证 | 基于客户端证书身份验证 | 商业功能 |
4. API Key 示例(系统对接推荐)
生成 API Key:
POST /_security/api_key
{
"name": "my-service-key",
"role_descriptors": {
"limited_access": {
"cluster": ["monitor"],
"index": [
{
"names": ["logs-*"],
"privileges": ["read"]
}
]
}
}
}
请求时使用:
Authorization: ApiKey <Base64(api_key_id:api_key)>
5. 示例:配置 Basic 认证用户访问
- 创建用户:
POST /_security/user/devuser
{
"password": "devpass",
"roles": ["read_logs"],
"full_name": "Dev User"
}
- 访问集群:
curl -u devuser:devpass https://localhost:9200
6. 安全建议
- 禁止默认 elastic 用户外部访问,或使用强密码
- 所有生产环境必须启用 TLS
- 推荐服务间通信使用 API Key 或 PKI
- 使用 Kibana 的 Stack Management 管理证书和身份认证更便捷
通过启用 TLS 与多重身份认证机制,Elasticsearch 可有效防止未经授权访问和数据泄露,构建一个更安全的搜索平台。
相关内容
- 定义与用途 本章介绍 Elasticsearch 的定义、核心功能与适用场景,帮助读者理解它为何成为现代搜索与日志分析的首选解决方案。
- 使用场景 本章总结 Elasticsearch 在全文搜索、日志分析、监控告警、推荐系统等领域的典型应用场景,助力理解其强大用途。
- 核心概念简介 本章概览 Elasticsearch 的核心构成,包括索引、文档、映射、节点、集群等关键概念,为后续使用和架构设计打下基础。
- 本地安装 本章介绍如何在本地环境中安装 Elasticsearch,适配 Windows、macOS 和 Linux 系统,便于开发测试与入门学习。
- Docker 安装 本章讲解如何通过 Docker 安装和运行 Elasticsearch,适合开发者快速搭建测试环境并集成至容器化工作流中。
- 与 Kibana 一起部署 本章介绍如何将 Elasticsearch 与 Kibana 一起部署,使用 Docker Compose 快速构建可视化分析平台,适合开发与测试环境使用。