X-Pack是Elasticsearch中非常重要的软件功能集合,为 Elastic Stack 带来了一系列深度集成的企业级功能,其中包括安全、告警、监测、报告、图表分析、专用 APM UI 和 Machine Learning,其中最重要的就是安全方面的功能。
SearchGuard是开源的、面向Elasticsearch和Elastic Stack的安全插件,在Elasticsearch领域应该算得上是应用最广泛的安全插件。
那么两者有什么区别,又该如何选择呢?本文全方面介绍两者发展的历史,功能和区别,探讨应该如何选择以构建完善的安全体系。
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可不止有安全告警的功能。
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,这是一次全新的发布,功能模块清晰,文档明确。
这里的功能对比基于目前最新的Search Guard FLX和最新版本的Elasticsearch所集成的X-Pack。
X-Pack有许多的功能,作为对比,我们这里主要讲关于安全方面的功能。
身份验证
支持通过 Active Directory、LDAP 或 Elasticsearch 原生 Realm 来进行身份验证,支持单点登录,支持自定义Realm来支持自行研发的身份认证管理系统。
权限管理
控制用户在 Elastic Stack 中的权限,管理不同的用户和角色,以支持不同职能的角色查看不同的内容。
防止信息泄露、篡改和监听
支持SSL/TLS,集群中节点间通信、HTTP传输、与Elastic Stack中其他组件的通信都能够安全进行。
分层安全控制
支持集群、索引、文档、字段不同级别的安全控制。
审计支持
支持审计功能,记录完整的用户操作活动,满足审计的要求。
合规要求
满足合规的要求,支持HIPAA、PCI DSS、FISMA、ISO 或 GDPR等多个标准,大多数是美国的标准。
身份认证
Search Guard 支持所有主要的身份验证和授权行业标准,例如LDAP、Active Directory、JWT、TLS客户端证书、代理认证、Kerberos、OpenID、JWKS、SAML等。
权限管理
实现了基于RBAC基于角色的访问控制,能够支持不同的角色不同的权限。
分层安全控制
支持文档级别和字段级别的安全控制。
审计支持
Search Guard 跟踪和监控集群内的所有数据流,并可以在多个级别生成审计跟踪。
合规要求
通过以上对比可以发现,最新的版本两者支持的功能差不多,Search Guard在身份认证支持的功能上更加全面一些,并且提供的工具使用非常方便;X-Pack则是集成在Elastic Stack中,无需独立安装。
如果你的Elasticsearch版本是7.X以前的版本,那么建议你仍然最优先选择Search Guard,免费及简便易用,能满足日常基础安全需求,虽然需要单独安装,但是相比之下无上大雅。
如果是Elasticsearch 7.X及以后的版本,特别是Elasticsearch 8的版本则可以优先选择使用集成的X-Pack,当然有两种情况除外:
我们要特别感谢Search Guard,如果不是Search Guard开放了这些免费基础的安全功能,我相信我们目前仍然有很大的可能还处于Elastic付费使用的情况之下,虽然Elastic宣称开源开放是他们的方向,但是没有Search Guard的倒逼的话,这事可能没那么快。
AWS曾经公开说Search Guard是他们很好的合作伙伴,被认为是安全有效的。Elastic曾经和Search Guard的运营公司floragunn GmbH打官司,认为Search Guard抄袭了X-Pack的代码,是否是事实不好说喽,但是Search Guard对社区的贡献是很大的,毋庸置疑。