将ElasticSearch放在AWS上的代理后面吗?

时间:2018-12-14 20:45:35

标签: amazon-web-services elasticsearch

本文(以及有关ES的书籍和其他信息源)中的这篇文章都主张将ES置于代理服务之后:

https://dzone.com/articles/securing-your-elasticsearch-cluster-properly

  

我看到的一个非常常见的错误是,人们说“嘿,Elasticsearch是基于HTTP的REST,让我们直接从我们的智能HTML客户端直接访问它”。好吧,您真的不想这样做。

     

有一个单页应用程序,需要查询Elastic并获取   显示的JSON?将其通过可以执行的软件立面   请求过滤,审核日志记录,最重要的是-   密码保护您的数据。

     

如果没有,(a)您确定要绑定到公共IP,并且您   不应该,(b)您冒着对数据进行不必要的更改的风险,(c)和   最坏的情况–您无法控制谁访问哪些数据,而所有数据都是   所有人都看得到。那些现在正在发生的事情   Elasticsearch集群。

     

此外,请勿公开您的文档和索引结构,或者   将瘦客户机与为其提供数据的数据存储系统耦合。   您的客户端JavaScript确实不应该讲Elastic DSL。

     

您的客户端应与您的服务器端软件进行通讯,   依次将所有客户端请求转换为Elasticsearch DSL,   执行查询,然后有选择地转换响应   Elasticsearch返回您的客户期望的东西。显然   然后,您的服务器端应用程序可以在以下情况下验证用户登录:   验证和授权其针对   数据,然后才可以访问Elasticsearch。做到任何   否则只会使您面临不必要的风险,而您的数据   贪婪的黑客。

在私有云中运行自己的ES时,我完全同意此处所说的所有内容。但是,在AWS上运行它时通常会做什么?我是整个无服务器领域的新手,最近我遇到了Google Firebase教程视频,人们争辩说要直接从客户端向数据库进行查询。这在AWS中也很常见吗?

1 个答案:

答案 0 :(得分:0)

在与AWS一起工作了一段时间之后,我不得不清除一个误解。 AWS不等于无服务器。他们提供了许多云解决方案,而FAAS /功能即服务(AWS Lambda)只是其中之一。

并且无论您是使用FAAS,IAAS还是PAAS,您都可能总是有用例,您只想将Elasticsearch接口的一部分暴露给外界。如果您获得了软件即服务,例如ElasticCloud(由Elastic公司在AWS上托管)或使用X-PACK许可证部署了自己的Elastic Cluster,则可以考虑使用XPACK安全/索引限制功能。但是,这仅涉及安全性,而不涉及简单性。从事前端工作的人员需要了解索引的内部/映射以及如何在ES中进行(有效的)查询。

我什至不确定X-PACK是否可以防止繁重的计算查询(例如脚本查询,聚合和深度分页),因此,如果将API暴露给整个Internet,这可能不够安全。

现在,firebase视频中的人所做的事情(在客户端形成查询)非常好,并且使应用程序保持灵活,但是现在可能适合每种用例。例如,如果您想为拥有自己客户端的客户公开公共API。