
点击蓝字关注我们
Elasticsearch 是一个分布式搜索和分析引擎,广泛应用于日志分析、全文搜索和数据分析等场景。在企业级环境中,为了确保数据安全和操作合规性,角色与用户的权限管理是 组成Elasticsearch 安全性的重要部分。
安全性概览
Elasticsearch 的安全功能包括用户身份验证、权限控制和审计日志等。其核心思想是通过角色定义权限,并将角色分配给用户来实现精细化的权限管理。
用户 (User):执行操作的主体。
角色 (Role):一组权限的集合,定义用户可以执行的操作和访问的资源。
权限 (Privilege):具体的操作权限,如读、写、删除等。
要启用安全性功能,需要配置 Elasticsearch 的相关配置,常见的相关配置:
1.1 开启集群安全:
配置项:
xpack.security.enabled: true
功能:
启用或禁用 Elasticsearch 的安全功能。
默认值:false(默认情况下安全功能是关闭的)。
用法:
将其设置为 true 后,启用用户身份验证、权限管理、SSL/TLS 加密等功能。
需要重新启动 Elasticsearch 节点以应用更改。
1.2 SSL/TLS 加密配置
配置项:
xpack.security.transport.ssl.enabled: true
xpack.security.http.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
功能:
启用节点间通信的 SSL/TLS 加密和客户端 HTTP 请求的加密。默认值:false。
子配置:
xpack.security.transport.ssl.enabled:启用节点间通信加密。
xpack.security.http.ssl.enabled:启用 HTTP 客户端通信加密。
xpack.security.transport.ssl.verification_mode:
none:不验证 SSL。
certificate:验证证书是否受信任。
full:验证证书和主机名匹配。
1.3 配置证书路径、密钥路径等参数
配置项:
xpack.security.transport.ssl.key: path/to/key.key
xpack.security.transport.ssl.certificate: path/to/cert.crt
xpack.security.transport.ssl.certificate_authorities: ["/path/to/ca.crt"]
更多详细配置请参考:Security settings in Elasticsearch | Elasticsearch Guide [8.16] | Elastic
Elasticsearch 默认角色和用户
在 Elasticsearch 安装后,系统会默认创建一些常用角色和用户。
2.1 默认角色
1. superuser:
拥有所有权限,包括索引操作、集群管理等。
用于管理员账户。
2. kibana_admin:
用于管理 Kibana 配置的角色。
允许访问所有 Kibana 功能并管理用户仪表盘。
3. monitoring_user:
提供对监控数据的读取权限。
可用于监控 Elasticsearch 集群的状态。
4. logstash_system:
用于 Logstash 与 Elasticsearch 交互的内部角色。
5. beats_system:
用于 Beats(如 Filebeat、Metricbeat)与 Elasticsearch 交互的内部角色。
2.2 默认用户
1. elastic:
超级用户,默认密码需在首次启动后通过 `elasticsearchsetuppasswords` 工具设置。
自定义设置密码:
自定义密码:./bin/elasticsearch-setup-passwords interactive
2. kibana:
用于 Kibana 服务的内部用户,自动配置为 `kibana_system` 角色。
3. logstash_system:
Logstash 内部用户,默认用于与 Elasticsearch 的通信。
4. beats_system:
Beats 内部用户,默认用于与 Elasticsearch 的通信。
创建用户和角色
3.1 配置安全性
确保 Elasticsearch 安装了 XPack 插件并启用了安全性模块。修改 `elasticsearch.yml` 文件,添加以下配置:
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.http.ssl.enabled: true
重启 Elasticsearch 以应用配置。
3.2 创建角色
角色定义了具体的权限,可以通过 REST API 创建。例如,创建一个名为 `log_reader` 的角色,仅允许读取日志索引:
PUT _security/role/log_reader
{
"cluster": ["monitor"],
"indices": [
{
"names": ["logs*"],
"privileges": ["read"],
"field_security": {
"grant": ["@timestamp", "message"]
},
"query": "{\"match\": {\"status\": \"active\"}}"
}
]
}
复制
cluster: 授予集群级别的监控权限。
indices: 限制角色对 `logs*` 索引的访问权限。
field_security: 限制用户只能读取特定字段。
query: 进一步通过查询条件限制访问的数据范围。
3.3 创建用户
通过 REST API 创建用户并分配角色。例如,创建一个名为 log_monitor用户,并分配 log_reader角色:
POST _security/user/log_monitor
{
"password" : "securepassword",
"roles" : ["log_reader"],
}
复制
管理用户和角色:
列出所有角色:
GET _security/role
列出所有用户:
GET _security/user
修改用户的角色或其他信息:
PUT _security/user/log_monitor
{
"roles": ["log_reader", "another_role"]
}
复制
删除用户:
DELETE _security/user/ log_monitor
删除角色:
DELETE _security/role/ log_monitor
相关建议
在创建和管理我们的角色用户时,可以遵循以下相关建议:
1. 最小权限原则:为用户分配尽可能少的权限,以减少安全风险。
2. 分离职责:通过多个角色实现操作的分离,例如数据读写与系统管理。
3. 定期审计:定期检查用户和角色的配置,确保没有多余的权限。
4. 复杂密码策略:使用强密码并定期更换,防止密码泄露。
结论
通过角色与用户的管理,Elasticsearch 可以实现精细化的权限控制,从而提升数据安全性和系统可控性。本文介绍了角色与用户的基本概念、默认配置、创建和管理方法,并提供了一些基础的操作示例。希望能帮助大家更好地管理 Elasticsearch 。
关于公司
感谢您关注新智锦绣科技(北京)有限公司!作为 Elastic 的 Elite 合作伙伴及 EnterpriseDB 在国内的唯一代理和服务合作伙伴,我们始终致力于技术创新和优质服务,帮助企业客户实现数据平台的高效构建与智能化管理。无论您是关注 Elastic 生态系统,还是需要 EnterpriseDB 的支持,我们都将为您提供专业的技术支持和量身定制的解决方案。
欢迎关注我们,获取更多技术资讯和数字化转型方案,共创美好未来!
![]() | ![]() |
Elastic 微信群 | EDB 微信群 |

发现“分享”和“赞”了吗,戳我看看吧