0、背景

2019年5月21日,Elastic官方发布消息: Elastic Stack 新版本6.8.0 和7.1.0的核心安全功能现免费提供。

这意味着用户现在能够对网络流量进行加密、创建和管理用户、定义能够保护索引和集群级别访问权限的角色,并且使用 Spaces 为 Kibana
提供全面保护。

免费提供的核心安全功能如下:
1)TLS 功能。 可对通信进行加密;
2)文件和原生 Realm。 可用于创建和管理用户;
3)基于角色的访问控制。 可用于控制用户对集群 API 和索引的访问权限;通过针对 Kibana Spaces 的安全功能,还可允许在Kibana 中实现多租户。
网上千篇一律都是这篇通稿,不实践一把,感觉还是不好理解。

结合大家最关心的问题,从下面几个认知维度,对Elasticsearch安全进行全面探讨。

1、x-pack演变
干货 | Elasticsearch 7.1免费安全功能全景认知_第1张图片

5.X版本之前:没有x-pack,是独立的:security安全,watch查看,alert警告等独立单元。
5.X版本:对原本的安全,警告,监视,图形和报告做了一个封装,形成了x-pack。
6.3 版本之前:需要额外安装。
6.3版本及之后:已经集成在一起发布,无需额外安装,基础安全属于付费黄金版内容。 7 .1版本:基础安全免费。
2、开源!=免费

2018年2月28日X-Pack 特性的所有代码开源,主要包含:
Security、Monitoring、Alerting、Graph、Reporting、专门的 APM UI、Canvas、Elasticsearch SQL、Search Profiler、Grok Debugger、Elastic Maps Service zoom levels 以及 Machine Learning。

2019年5月21日免费开放了文章开头的基础安全功能,在这之前的版本都是仅有1个月的适用期限的。

如下功能点仍然是收费的。

付费黄金版&白金版提供功能:

审核日志
IP 筛选
LDAP、PKI*和活动目录身份验证
Elasticsearch 令牌服务
付费白金版提供安全功能:

单点登录身份验证(SAML、Kerberos*)
基于属性的权限控制
字段和文档级别安全性
第三方整合(自定义身份验证和授权 Realm)
授权 Realm
静态数据加密支持
FIPS 140-2 模式
干货 | Elasticsearch 7.1免费安全功能全景认知_第2张图片

官方地址:
https://www.elastic.co/cn/subscriptions
3、安全部分免费之前,大家怎么保证基础安全?

场景一:全部“裸奔”,相信这在国内占据了非常大的比重。
内网部署,不对外提供服务。或者ES作为业务基础支撑,不公网开放9200等常用端口,开放的是业务的服务端口。

可能暴露问题:公司或团队内部开放9200、5601端口,基本head插件、kibana都能连接,极易导致线上索引或数据可能被误删。

场景二:加了简单防护。
一般使用Nginx身份认证+防火墙策略控制。

场景三:整合使用了第三方安全认证方案。
比如:SearchGuard、ReadonlyREST。

场景四:付费购买了Elastic-Xpack黄金版或白金版服务。

一般是银行等土豪大客户,对安全、预警、机器学习等付费功能需求迫切,如:宁波银行付费购买白金服务。

4、基于免费安全认证,我们能做什么?

4.1 TLS 功能。

可对通信进行加密。

实践一把。在本机win10环境,部署了2节点7.1集群。

部署官网已经介绍非常详细了:

https://www.elastic.co/cn/blog/getting-started-with-elasticsearch-security。

核心步骤:

第一步:下载+基础配置,2ES node+1kibana。
第二步:配置TLS和认证。
bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
注意:
1、此配置适用于具有多个节点的集群以及具有侦听外部接口的单个节点的集群。
2、使用环回接口的单节点集群没有此要求。

第三步:设置ES等相关登录密码。
bin/elasticsearch-setup-passwords auto
自动生成相对安全,也可以手动设置密码。

干货 | Elasticsearch 7.1免费安全功能全景认知_第3张图片

第四步:配置kibana。
自此,多节点集群之间的通信在传输层通过加密通信加了安全性(TLS / SSL)保护。
4.2 文件和原生 Realm。

可用于创建和管理用户。
1、head插件安全登录:

干货 | Elasticsearch 7.1免费安全功能全景认知

2、kibana安全登录:

干货 | Elasticsearch 7.1免费安全功能全景认知_第4张图片

相比于未使用x-pack安全防护的集群,节点之间的通信wireshark抓包已不能解密。
4.3 基于角色的访问控制。

可用于控制用户对集群 API 和索引的访问权限;

通过针对 Kibana Spaces 的安全功能,还可允许在 Kibana 中实现多租户。
权限部分分解为3个维度(相对不严谨,Space更偏向于Kibana维度):

1、Space维度、
2、角色维度、
3、用户维度。

干货 | Elasticsearch 7.1免费安全功能全景认知_第5张图片

Space是Elastic6.5版本引入的新特性,便于便于企业分组管理。

比如:开发、测试、运维、产品可以是不同的视角。

干货 | Elasticsearch 7.1免费安全功能全景认知_第6张图片

角色:设置Elasticsearch数据的权限并控制对Kibana空间的访问。
干货 | Elasticsearch 7.1免费安全功能全景认知_第7张图片

用户:关联对应的角色。1个角色下可以有多个用户,但一个用户唯一对应一个角色。
干货 | Elasticsearch 7.1免费安全功能全景认知_第8张图片
4.4 其他

不尽兴怎么办? 其他内容待实践后补充完善。

5、小结

关于安全:之前文章“你的Elasticsearch在“裸奔”吗?”有过总结,“裸奔”Elastic集群的风险非常大,我们必须提前加强重视。
关于费用:中小企业客户基本是没有也不可能付费买商业版的(坊间传闻:x-pack黄金版40000+每年;白金版60000+每年)。基础安全免费给大家带来非常利好的消息。
关于选型:Elastic7.1的基础安全免费,基本解决了中小企业的安全问题,在后续7.X版本的选型中,7.1 较7.0更有鲜明的安全特点,应该优先选择。
参考:
https://www.elastic.co/cn/blog/heya-elastic-stack-and-x-pack
https://www.elastic.co/cn/blog/getting-started-with-elasticsearch-security