干货 | Elasticsearch7.X X-Pack基础安全实操详解

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 背景:大家知道elasticsearch早期版本安全部分收费(7.1 & 6.8 版本之前),实际中各个公司6.x,5.x,2.x,1.x都有在用,且非少数。群随机投票结果如下:

image.png

通过留言发现,大家使用2的比较多,历史包袱重,真正升级7.X的企业还不太多。


Medcl在《给你 10 个升级到 Elastic Stack 7 的理由!》分享中提到升级到最新版本“更安全”的核心理由。

之前文章中也有过探讨:你的Elasitcsearch集群在裸奔吗?


的确,安全问题已经成为公司使用Elasticsearch必须考虑的问题之一。


2、说到Elasticsearch安全,你想到的是什么?

首先想到的是“不安全”、“暴露”、“攻击”、“泄露”、“隐私”等负面的关键词。


的确,如果9200或者改成其他端口的ES暴露在公网,一旦被扫到,集群及数据会受到灾难式影响。

稍微了解网络安全的朋友都知道,通过nmap等扫描工具,可以非常快速扫描出开放的外网端口。


安全无小事,本文以Elasticsearch7.2+为示例,串讲:


1)啥是X-Pack?基础免费版本哪些安全功能是免费?哪些收费呢?

2)单节点X-Pack安全如何配置?

3)多节点X-Pack安全如何配置?

非常基础但非常重要,希望对你有帮助。


3、啥是X-Pack?

X-Pack是Elastic Stack扩展功能,提供安全性,警报,监视,报告,机器学习和许多其他功能。 ES7.0+之后,默认情况下,当安装Elasticsearch时,会安装X-Pack,无需单独再安装。


自6.8以及7.1+版本之后,基础级安全永久免费。


基础版本安全功能列表如下:

image.png

4、单节点ES X-Pack安全如何配置?

4.1 安全配置

默认情况下,拥有安全免费许可证时,Elasticsearch安全功能被禁用。 要启用安全功能,需要设置xpack.security.enabled。

在每个节点的elasticsearch.yml配置文件中,新增:


xpack.security.enabled: true

1

4.2 为节点间通信配置传输层安全性(TLS / SSL)

使用范围:配置传输层安全性适用于具有多个节点的集群以及需要外网通信访问的单节点ES。

使用环回地址127.0.0.1的单节点ES可以不用配置。


4.2.1 加密通信

Elasticsearch节点可能存储是机密的数据,而无处不在的网络攻击对这些数据垂涎欲滴。


网络攻击包括对数据的嗅探,对数据的操纵,以及试图获得对服务器的访问权限,进而访问存储数据的文件。


保护节点的安全有助于降低来自网络的攻击的风险。


4.2.2 生成节点证书

1、证书实现加密通信的原理

TLS需要X.509证书(X.509 证书是一个数字证书,它使用 X.509 公有密钥基础设施标准将公有密钥与证书中包含的身份相关联。X.509 证书由一家名为证书颁发机构 (CA) 的可信实体颁发。CA 持有一个或多个名为 CA 证书的特殊证书,它使用这种证书来颁发 X.509 证书。只有证书颁发机构才有权访问 CA 证书)才能对与之通信的应用程序执行加密和身份验证。 为了使节点之间的通信真正安全,必须对证书进行验证。


在Elasticsearch集群中验证证书真实性的推荐方法是信任签署证书的证书颁发机构(CA)。


这样,只需要使用由同一CA签名的证书,即可自动允许该节点加入集群。


2、借助elasticsearch-certutil命令生成证书


bin/elasticsearch-certutil.bat ca -out config/elastic-certificates.p12 -pass ""

image.png

4.2.3 配置加密通信

启用安全功能后,必须使用TLS来确保节点之间的通信已加密。

在elasticsearch.yml中心新增配置如下:


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

1

2

3

4

4.3 设置集群密码

借助:elasticsearch-setup-passwords 设置集群密码。

elasticsearch-setup-passwords 支持的参数如下:


Commands

--------

auto - Uses randomly generated passwords

interactive - Uses passwords entered by a user


Non-option arguments:

command


Option         Description

------         -----------

-h, --help     show help

-s, --silent   show minimal output

-v, --verbose  show verbose output

核心:

auto - 随机生成密码。

interactive - 自定义不同用户的密码。


注意:必须配置好xpack之后,才能设置密码。否则会报错。

image.png

自此:单节点安全配置完毕,访问9200会出现用户名和密码的提示窗口。

image.png

5、多节点集群X-Pack安全如何配置?

最简单的方法,

假定是初始部署集群阶段。


步骤1:清空data文件;

步骤2:将配置好的带证书的文件copy到另一台机器;

步骤3:根据集群配置ip、角色等信息即可。

6、小结

X-Pack安全配置的核心三步骤:


第一:设置:xpack.security.enabled: true。

第二:生成TLS证书。

第三:配置加密通信。

第四:设置密码。

这些对于安全来说只是皮毛,更多的角色、权限、Space需要借助Kibana实现。

你的Elasticsearch安全吗? 欢迎留言交流。


参考:

[1] https://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/x509-certs.html

[2] https://www.elastic.co/cn/blog/getting-started-with-elasticsearch-security

[3] https://www.elastic.co/cn/blog/security-for-elasticsearch-is-now-free

[4] https://www.elastic.co/cn/blog/configuring-ssl-tls-and-https-to-secure-elasticsearch-kibana-beats-and-logstash

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
|
安全 大数据 Java
elasticsearch|大数据|低版本的elasticsearch集群的官方安全插件x-pack的详解
elasticsearch|大数据|低版本的elasticsearch集群的官方安全插件x-pack的详解
68 0
|
1月前
|
数据安全/隐私保护
spring-boot-starter-data-elasticsearch es带x-pack后台配置
spring-boot-starter-data-elasticsearch es带x-pack后台配置
33 0
|
1月前
|
安全 Java 大数据
elasticsearch|大数据|elasticsearch低版本集群的部署安装和安全增强---密码设置问题
elasticsearch|大数据|elasticsearch低版本集群的部署安装和安全增强---密码设置问题
47 0
|
12月前
|
存储 运维 监控
大数据数据存储的搜索引擎Elasticsearch的集群运维的集群安全
Elasticsearch是一个可扩展的搜索引擎,可以在同一个集群中部署多个Elasticsearch节点,以提高性能和可用性。
71 0
|
安全
禁用Kibana安全提示(Elasticsearch built-in security features are not enabled)
禁用Kibana安全提示(Elasticsearch built-in security features are not enabled)
166 0
|
监控 安全 数据安全/隐私保护
《Elastic(中国)基础开发宝典》——集群安全配置功能大升级,单机模拟运行 Elasticsearch 8.1.2 三节点集群
《Elastic(中国)基础开发宝典》——集群安全配置功能大升级,单机模拟运行 Elasticsearch 8.1.2 三节点集群
|
数据安全/隐私保护
Elasticsearch 7.12 启用 x-pack 组件
Elasticsearch 7.12 启用 x-pack 组件
201 0
|
JSON 安全 Java
Docker操作Elasticsearch和Kibana增加用户密码安全验证
昨天公司说现场生产的机器ES和Kibana没有增加密码等安全验证,我想这不是最基础的嘛,怎么连密码都没有,赶紧围绕着生产环境自己写了一个方案,马上让现场人员进行部署,具体的操作流程如下:
2349 0
Docker操作Elasticsearch和Kibana增加用户密码安全验证
|
SQL 机器学习/深度学习 安全
干货 | Elasticsearch 7.1免费安全功能全景认知
2019年5月21日,Elastic官方发布消息: Elastic Stack 新版本6.8.0 和7.1.0的核心安全功能现免费提供。 这意味着用户现在能够对网络流量进行加密、创建和管理用户、定义能够保护索引和集群级别访问权限的角色,并且使用 Spaces 为 Kibana 提供全面保护。 免费提供的核心安全功能如下: 1)TLS 功能。 可对通信进行加密; 2)文件和原生 Realm。 可用于创建和管理用户; 3)基于角色的访问控制。 可用于控制用户对集群 API 和索引的访问权限; 通过针对 Kibana Spaces 的安全功能,还可允许在Kibana 中实现多租户。
332 0
干货 | Elasticsearch 7.1免费安全功能全景认知
|
机器学习/深度学习 Web App开发 监控
Elasticsearch6.2.2 X-Pack部署及使用详解
X-Pack已经开源,预计Elasticsearch6.3版本会全面集成,不再收费。 赶紧体验一下强大的X-pack吧!
2688 0
Elasticsearch6.2.2 X-Pack部署及使用详解