X-Pack还是SearchGuard,Elasticsearch安全功能怎么选?

2023-02-22 10:20:08 浏览数 (1)

X-Pack是Elasticsearch中非常重要的软件功能集合,为 Elastic Stack 带来了一系列深度集成的企业级功能,其中包括安全、告警、监测、报告、图表分析、专用 APM UI 和 Machine Learning,其中最重要的就是安全方面的功能。

SearchGuard是开源的、面向Elasticsearch和Elastic Stack的安全插件,在Elasticsearch领域应该算得上是应用最广泛的安全插件。

那么两者有什么区别,又该如何选择呢?本文全方面介绍两者发展的历史,功能和区别,探讨应该如何选择以构建完善的安全体系。

一、X-Pack的发展历史

Elasticsearch在5.X版本之前,提供了一些很基础的安全和告警功能,以独立的功能模块存在,这个时期的安全功能是比较弱的,也是被大家所诟病的。

Elastic团队在5.X以后的版本,对基础的安全、告警、监控等功能进行了封装,形成了X-Pack,但是此时的X-Pack并不是与Elasticsearch集成在一起的,需要独立安装。

直到6.3版本及以后,X-Pack终于与Elasticsearch集成,所有免费 X-Pack 功能(Monitoring、Search Profiler、Grok Debugger、Elastic Maps Service 中的缩放级别、专用 APM UI 等)随 Elasticsearch、Kibana、Beats 和 Logstash 的默认分发版提供,无需额外安装,更加方便了。但是致命的问题在于基础的安全功能仍然属于付费功能,这让很多应用的企业非常纠结,这也是其他第三方的开源安全软件能够发挥作用的重要原因。直到7.X版本,Elastic才终于宣布X-Pack的基础安全功能免费提供,而这时候已经经历了好几个大版本了。

目前Elasticsearch 8 X-Pack的功能默认开启,默认启用SSL,自动生成证书,使用非常方便了,满足企业的基本安全需求毫无问题。

特别提一个事情:2018年,Elastic将所有X-Pack特性相关的所有代码进行了开源,一是为了结合开源的力量让X-Pack的功能更完善;二是可以让人家对X-Pack的功能有更多的了解,毕竟X-Pack可不止有安全告警的功能。

二、SearchGuard的发展历史

2013年Hendrik Saly开发了一个Elasticsearch安全插件,由于受到欢迎,后来组件了团队进行专门的开发工作,被命名为Search Guard。

到了2015年Search Guard 1.X正式在Github上发布,且支持Elasticsearch 2.2.0 SSL功能。

2016年Search Guard 5支持了审计日志以及对新的REST API的支持,且免费提供,这对于开发者以及企业应用来说都是一个非常好的消息,Search Guard快速发展,且开始被广泛应用。

2017年~2021年Search Guard稳步推进,支持越来越多的功能,发布了Search Guard 6和Search Guard 7,支持Kibana插件、支持告警、支持SAML 和 OpenID、更加完善和易于使用的TLS工具等,由于基础安全功能均是免费,Search Guard占据了非常大的市场,是很多团队做Elasticsearch安全体系建设的首选。

2022年Search Guard FLX GA发布,支持了Elasticsearch 8 和OpenSearch,这是一次全新的发布,功能模块清晰,文档明确。

三、X-Pack和Search Guard功能对比

这里的功能对比基于目前最新的Search Guard FLX和最新版本的Elasticsearch所集成的X-Pack。

3.1 X-Pack的功能

X-Pack有许多的功能,作为对比,我们这里主要讲关于安全方面的功能。

  • 身份验证 支持通过 Active Directory、LDAP 或 Elasticsearch 原生 Realm 来进行身份验证,支持单点登录,支持自定义Realm来支持自行研发的身份认证管理系统。
  • 权限管理 控制用户在 Elastic Stack 中的权限,管理不同的用户和角色,以支持不同职能的角色查看不同的内容。
  • 防止信息泄露、篡改和监听 支持SSL/TLS,集群中节点间通信、HTTP传输、与Elastic Stack中其他组件的通信都能够安全进行。
  • 分层安全控制 支持集群、索引、文档、字段不同级别的安全控制。
  • 审计支持 支持审计功能,记录完整的用户操作活动,满足审计的要求。
  • 合规要求 满足合规的要求,支持HIPAA、PCI DSS、FISMA、ISO 或 GDPR等多个标准,大多数是美国的标准。
3.2 Search Guard的功能
  • 身份认证 Search Guard 支持所有主要的身份验证和授权行业标准,例如LDAP、Active Directory、JWT、TLS客户端证书、代理认证、Kerberos、OpenID、JWKS、SAML等。
  • 权限管理 实现了基于RBAC基于角色的访问控制,能够支持不同的角色不同的权限。
  • 分层安全控制 支持文档级别和字段级别的安全控制。
  • 审计支持 Search Guard 跟踪和监控集群内的所有数据流,并可以在多个级别生成审计跟踪。
  • 合规要求

通过以上对比可以发现,最新的版本两者支持的功能差不多,Search Guard在身份认证支持的功能上更加全面一些,并且提供的工具使用非常方便;X-Pack则是集成在Elastic Stack中,无需独立安装。

四、X-Pack和Search Guard如何选择?

如果你的Elasticsearch版本是7.X以前的版本,那么建议你仍然最优先选择Search Guard,免费及简便易用,能满足日常基础安全需求,虽然需要单独安装,但是相比之下无上大雅。

如果是Elasticsearch 7.X及以后的版本,特别是Elasticsearch 8的版本则可以优先选择使用集成的X-Pack,当然有两种情况除外:

  1. 有需要Search Guard支持较好而X-Pack支持较弱或者不支持的情况,例如上面提到的身份认证的某种场景下。
  2. 公司存在多个旧的版本,为了兼容以及统一,可以使用Search Guard。
五、Search Guard倒逼了X-Pack

我们要特别感谢Search Guard,如果不是Search Guard开放了这些免费基础的安全功能,我相信我们目前仍然有很大的可能还处于Elastic付费使用的情况之下,虽然Elastic宣称开源开放是他们的方向,但是没有Search Guard的倒逼的话,这事可能没那么快。

AWS曾经公开说Search Guard是他们很好的合作伙伴,被认为是安全有效的。Elastic曾经和Search Guard的运营公司floragunn GmbH打官司,认为Search Guard抄袭了X-Pack的代码,是否是事实不好说喽,但是Search Guard对社区的贡献是很大的,毋庸置疑。

0 人点赞