我正在学习弹性搜索。我想知道如何安全(在访问控制和验证用户访问方面)直接从JavaScript API访问ES服务器而不是通过后端访问它?直接从Javascript API访问ES是否安全?
答案 0 :(得分:1)
取决于你所说的“安全”。
如果你的意思是“安全地暴露于互联网”,那么不,绝对不是,因为没有任何访问控制,任何人都可以插入数据甚至删除所有索引。
This讨论很好地概述了这个问题。相关部分:
正如您不会将数据库直接暴露给Internet并让用户发送任意SQL一样,您不应在不清理输入的情况下将Elasticsearch暴露给不受信任的用户。具体来说,这些是我们想要防止的问题:
- 公开私人数据。这需要将搜索限制为某些索引,和/或对搜索应用过滤器。
- 限制谁可以更新内容。
- 防止可能使节点和/或整个群集崩溃或崩溃的昂贵请求。
- 通过动态脚本防止任意代码执行。
答案 1 :(得分:1)
它当然是可能的,它可以是'#34;安全"如果说您将其用作某种身份验证背后的内部工具。一般来说,不,它不安全。 Elasticsearch API可以创建,删除,更新和搜索,这不是您希望客户端访问的内容,或者它们基本上可以执行任何或所有这些操作。
理论上,您可以使用ElasticSearch Shield创建基于角色的身份验证,但它远非标准做法。在你的后端实现搜索并不是那么困难,然后只需要一个简单的调用来返回搜索结果。