保护弹性搜索

时间:2014-01-17 08:01:30

标签: security nginx proxy elasticsearch

我对弹性搜索完全不熟悉,但我非常喜欢它。我唯一无法找到并且无法完成的事情就是确保生产系统的弹性搜索。我在弹性搜索前面阅读了很多关于使用nginx作为代理的内容,但我从未使用过nginx而且从未使用过代理。

这是在生产系统中保护弹性搜索的典型方法吗?

如果是这样,是否有任何教程或精彩的读取可以帮助我实现此功能。我真的想在我们的生产系统中使用elasticsearch而不是solr和tomcat。

4 个答案:

答案 0 :(得分:2)

有一篇关于保护Elasticsearch的文章,其中包含了很多要注意的要点:http://www.found.no/foundation/elasticsearch-security/(完全披露:我写了它并为Found工作)

这里还有一些你应该知道的事情:http://www.found.no/foundation/elasticsearch-in-production/

总结摘要:

目前,Elasticsearch并不认为安全性是其工作。 Elasticsearch没有用户的概念。从本质上讲,任何可以向您的群集发送任意请求的人都是“超级用户”。

  1. 禁用动态脚本。它们很危险。
  2. 了解有时需要严格的配置来限制对索引的访问控制。
  3. 考虑多个租户的性能影响,一个弱点或一个糟糕的查询会导致整个集群崩溃!

答案 1 :(得分:2)

通过nginx代理ES流量,例如,启用基本身份验证是处理此问题的一种方法(但使用HTTPS来保护凭据)。即使代理规则中没有基本身份验证,您也可以限制对特定用户或特定IP地址的各种端点的访问。

我们在其中一个环境中所做的是使用Docker。如果您明确定义Docker容器,则只能访问世界和/或其他Docker容器。默认情况下,他们是盲人。 在我们的docker-compose设置中,我们定义了以下容器:

  • nginx - 处理所有网络请求,向名为'

  • 的容器提供静态文件和代理API查询
  • 中间件 - 处理和验证所有API请求的Java服务器。它与以下三个容器交互,每个容器仅暴露给中间件

    • redis的
    • mongodb的
    • elasticsearch

这种安排的净效果是对弹性搜索的访问只能通过中间件,这可以确保在发送任何查询之前正确处理身份验证,角色和权限。

完整的docker环境比简单的nginx代理更需要设置,但最终结果是更灵活,可扩展且更安全。

答案 2 :(得分:0)

这是上面答案中提供的信息的一个非常重要的补充。我会把它添加为评论,但是还没有这样做的声誉。

虽然这个帖子很旧(ish),但像我这样的人仍然会通过谷歌来到这里。

要点:此链接在Alex Brasetvik的帖子中引用:

https://www.elastic.co/blog/found-elasticsearch-security

他已经用这段话更新了它:

  

2015年4月7日更新:Elastic发布了Shield,这是一种为Elasticsearch提供全面安全性的产品,包括加密通信,基于角色的访问控制,AD / LDAP集成和审计。以下文章是在Shield可用之前撰写的。

您可以在此处找到有关盾牌的大量信息:here

需要注意的一个非常关键的问题是这需要1.5或更新版本。

答案 3 :(得分:0)

Ya我也有同样的问题,但我发现一个插件由elasticsearch团队提供,即屏蔽它是生产的限量版本,您需要购买许可证,请找到附件链接供您阅读。

https://www.elastic.co/guide/en/shield/current/index.html