首页 > 解决方案 > 在不通过 API 服务器的情况下从客户端访问 Elasticseach 是否安全?

问题描述

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

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 from public就可以了,虽然我没有准备API服务器,但我认为可以实现同样的事情使用上面的客户端代码,这是一个安全问题吗?(比如主机名落在客户端是否有危险)

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

谢谢你。

标签: reactjsapisecurityelasticsearchvue.js

解决方案


这不是一个好主意。

如果有一点编程知识的客户找到我们的 ElasticSearch IP 地址,你就完蛋了,他基本上可以在你不注意的情况下删除所有数据。

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

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


推荐阅读