security - 如何在共享托管环境中保护面向 Internet 的 Elastic Search 实现?

标签 security elasticsearch

<分区>

我一直在查看 Elastic Search 的文档我是 忠实 粉丝,我想用它来处理对我的 ASP.NET MVC 应用程序的搜索。

然而,这引入了一些有趣的转折。如果 ASP.NET MVC 应用程序在专用机器上,则可以简单地假脱机 Elastic Search 实例并使用 TCP Transport在本地连接。

但是,我不在专门用于 ASP.NET MVC 应用程序的机器上,而且看起来我也不会很快转移到一台机器上。

剩下的就是在另一台机器上托管 Elastic Search(在 *NIX 世界中),我可能会在那里使用共享托管。

然而,Elastic Search 最大的不足之一是它不支持 HTTPS 和开箱即用的基本身份验证。如果是,那么这个问题就不存在了;我会简单地将它托管在某个地方,并确保拥有极其安全的密码并启用 HTTPS(可能使用自签名证书)。

但事实并非如此。

鉴于此,以安全的方式在 Internet 上公开 Elastic Search 的好方法是什么?

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

最佳答案

A plugin for elasticsearch that allows you to replace the HTTP transport with an embedded instance of Jetty现在可用。

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


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

经过多次讨论ElasticSearch mailing list ,我发现当前的解决方案是在另一个应用程序层后面托管 ElasticSearch,然后保护那个层。

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

我(和其他人)被绊倒的一点是,因为 ElasticSearch 使用 HTTP 作为传输并使用 JSON 作为操作语法,所以 ElasticSearch 是面向公众的。

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

关于security - 如何在共享托管环境中保护面向 Internet 的 Elastic Search 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4960298/

相关文章:

elasticsearch - 如何在Java的Elasticsearch中知道索引的类型是否具有父或子关系?

security - 身份管理

perl - 读取文件和执行文件一样危险吗

security - 表单中Grails隐藏ID字段的替代方法

linux - 64 位上的 ASLR 和内存布局 : Is it limited to the canonical part (128 TiB)?

ajax - 如何通过 SSL HTTPS 制作安全的登录页面?

elasticsearch - 如何在Elasticsearch中过滤聚合结果?

elasticsearch - has_parent查询如何与Elasticsearch中的join数据类型一起使用?

php - elasticsearch查询不适用于php的嵌套查询

elasticsearch - 单词字典在Kibana可视化上