如何在共享托管环境中保护面向Internet的弹性搜索实现?

cas*_*One 26 security elasticsearch

我一直在浏览Elastic Search的文档,我是一个很大的粉丝,我想用它来处理我的ASP.NET MVC应用程序的搜索.

然而,这引入了一些有趣的曲折.如果ASP.NET MVC应用程序位于专用计算机上,则可以很容易地清空Elastic Search实例并使用TCP传输进行本地连接.

但是,我不是在ASP.NET MVC应用程序的专用机器上,也不会看到我将很快移动到一个.

这使得Elastic Search在另一台机器上保存(在*NIX世界中),我可能会在那里使用共享主机.

然而,Elastic Search缺少的最大问题之一是它不支持开箱即用的HTTPS和基本身份验证.如果确实如此,那么这个问题就不存在了; 我只是将它托管在某个地方,并确保有一个令人难以置信的安全密码和HTTPS启用(可能带有自签名证书).

但事实并非如此.

那么,通过互联网以安全的方式公开Elastic Search的好方法是什么?

注意,我正在寻找一些有希望的东西,不需要编写代码来为我想要的方法提供垫片(换句话说,编写转发器).

cas*_*One 24

一个用于elasticsearch插件,可以让你与码头的嵌入式实例替代HTTP传输现已推出.

因为它使用Jetty来处理HTTP传输,所以它可以处理SSL连接以及配置用于身份验证.


(注意,以下仍然是合理的建议,因为以这种方式抽象出你的操作通常是好的做法)

在对ElasticSearch邮件列表进行了多次讨论后,我发现当前的解决方案是在另一个应用层后面托管ElasticSearch,然后保护层.

理由很扎实; ElasticSearch类似于数据库,您不会让您的数据库面向所有人.

我(和其他人)绊倒的事情是因为ElasticSearch使用HTTP作为传输并使用JSON作为操作的语法,ElasticSearch意味着面向公众.

但是,目前有一个请求添加HTTPS传输支持(假设提供了证书)以及基本(摘要)身份验证.


ska*_*man 6

你必须以某种方式防火墙,只允许来自appserver的流量,例如在linux上使用iptables,或在windows上使用某种个人防火墙.

这会带你进入serverfault.com领域 - 这个没有编程解决方案.