从客户端访问Elasticseach而不通过API服务器是否安全?

时间:2019-01-11 16:53:56

标签: reactjs api security elasticsearch vue.js

例如,假设您将以下Javascript代码嵌入Vue.js或React.js中。

var elasticsearch = require ('elasticsearch');
var esclient = new elasticsearch.Client ({
   host: 'Elasticsearch host name of Elascticsearch Cloud's(URL?')
   });
   esclient.search ({
         index: 'your index',
           body: {
             query: {
              match: {message: 'search keyword'}
   },
   aggs: {
       your_states: {
          terms: {
            field: 'your field',
            size: 10
           }
         }
       }
    }
  }
 ).then (function (response) {
       var hits = response.hits.hits;
 }
);

针对像stackoverflow这样的应用程序的搜索引擎时, 如果仅使用Elasticseach云的ROLE设置从公众那里获得GET可以, 即使我没有准备API服务器,我仍认为上述客户端代码可以实现相同的目的, 这是安全问题吗? (例如主机名落在客户端是否有危险)

如果没有问题,搜索引擎的响应速度会更快,实现成本也会降低, 我想知道为什么很多人不会这样做。 (因为这样的示例代码很难在网上看到)

谢谢。

1 个答案:

答案 0 :(得分:2)

这不是一个好主意。

如果任何一位具有一定编程知识的客户端找到了您的ElasticSearch IP地址,那么您就被搞砸了,他基本上可以删除所有数据,甚至无需您注意。

我对XPack安全性一无所知,但是如果您不使用XPack安全性,则绝对被迫将ES隐藏在API后面。

然后,您还必须保护您的ES域安全,以仅允许从API服务器进行访问,并阻止世界其他地方。