尽pipe事实上弹性search的安装是极其可利用的,但似乎还是缺乏这方面的信息。
我使用它的主要担心是,作为一个非专家,我不知道可能的漏洞是什么以及如何closures它们。
有人可以向我解释一个locking弹性search的方法,以便我可以在一个安全的环境中执行以下操作:
每个用户有多个索引。 假设我可以预先为他们创build,用户不应该能够对其他用户的索引执行操作,除非在授予权限的情况下可能查询它们。 (可能在每个用户的URL的某种forms的秘密密钥?)
用户可以根据需要从索引中添加和删除对象,但不会删除索引。
对用户的内存大小有一些限制,所以如果出现问题,他们不能重载服务。
我猜这些必须在应用程序级别完成,我不能指望你为我写这个,但是默认的configuration是太开放了,即使我提供了一个自定义的API层,这个人可以很容易绕过它并直接与服务器通信。
在我看来,以你要求的方式保护ES的唯一方法是将其locking在另一个应用程序层后面,并使该层处理https / ssl传输,身份validation和授权控制。
在ES方面,开发了一个ES安全插件,不知道它是否成功,当我第一次部署ES时,插件即将被释放,所以看看它:
ES JETTY插件
我想你需要创build一个介于所有这些“业务逻辑”之间的HTTP代理,并且只允许从本地主机进行ElasticSearch访问。 这种方式直接访问ES被阻止,你可以确定和执行你想要的任何策略(yay!;)
即使我为这个人提供了一个自定义的API层,也可以很容易地绕过它:如果ES只接受来自本地主机的连接,他们就不能这样做。
我不认为内存使用限制是可能的,也许你可以预先批准代理层内的查询?
我使用运行在ES前面的Nginx做了类似的事情。 可以根据URL中的关键字在Nginx中设置“授权”。 请参阅本文档中定义的用例: http : //www.elasticsearch.org/blog/playing-http-tricks-nginx/
我将elasticsearch绑定到openvpn隧道:
在/etc/elasticsearch/elasticsearch.yml中:
network.host: 172.16.xxx.xxx
其中172.16.xxx.xxx是openvpn分配的IP地址。