保护 Elasticsearch 集群

3
我想创建一个安全的Elasticsearch集群。
关于我的用例,我想要一个多租户系统。用户必须对自己的命名空间具有管理访问权限。经过几次尝试,我现在只是通过docker为用户提供他们自己的集群。
尝试1:专用节点上的Shield与多租户。这需要我为每个用户修改角色yml文件。这很麻烦和痛苦。
尝试2:Docker容器+Shield:经过一些试错后,这看起来可以工作得不错,但我不喜欢许可证,并且我也不明白它如何保护tcp传输。
尝试3:Docker容器+nginx反向代理&htpasswd:这对于保护http传输效果很好,并且现在在Kibana中支持基本身份验证方面表现出色。不幸的是,这限制了我的集群能力,因为9300是完全开放的。
尝试4:我即将尝试docker容器+Search Guard:这看起来是一个不错的选择,但我仍然不确定tcp传输应该如何受到保护。

人们如何实际保护多租户 Elasticsearch 集群?

1个回答

0

你正在正确的方向上前进。ES本身并不是多租户的,你无法确定你是否已经正确地保护了/命名空间访问。此外,ES缺乏身份验证和https,因此你还需要处理这些问题。我知道你可以为此付费,并且还有一些其他的技巧可以解决这个问题,但实际上,该系统是针对每个客户而非多租户的。

我也要警告你不要假定使用docker进行多租户是可行的解决方案。同样,docker安全性还没有得到很好的解决。当你在内核之上虚拟化时,存在风险。主要风险是内核是大量代码,与硬件上接受的虚拟化技术相比。以运行在hypervisor上的亚马逊EC2实例为例。Hypervisor通过硬件实现了许多VM之间的边界 - 即,特殊的CPU过程,有助于在硬件级别上隔离不同的VM。

由于hypervisor只是一小部分代码(与内核相比),因此更容易进行审计。由于hypervisor使用硬件功能来强制执行隔离,因此更加安全。

从一个维度来看,Docker实际上可以在每个进程的基础上增加安全性(例如,如果运行nginx的应用程序被黑客攻击并且docker设置良好,则入侵者还必须打破docker实例)。从另一个维度来看,它与机器虚拟化相比不如那么好。

我的建议是为每个客户创建一个集群VM,并在每个VM集群上运行ES docker以及其他应用程序dockers。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接