只读适用于AWS Elasticsearch 6.3的kibana仪表板

时间:2018-09-18 08:05:43

标签: amazon-web-services elasticsearch kibana dashboard readonly

我要求仅与客户共享仅查看模式下的Kibana仪表板。

这是我第一次与Elasticsearch和Kibana合作。这是我的第一个Stackoverflow问题。因此,请多多包涵。

我们的团队正在使用带有ES版本6.3的AWS Elasticsearch服务, AWS不提供对ElasticSearch服务器和Kibana应用服务器的访问。

Kibana具有对只读仪表板的本地支持,如此处所述-
Kibana dashboard only mode

Kibana 6.0及更高版本支持只读仪表板功能。 另外,还有针对Kibana版本的X-pack插件,其本身不支持此功能。

通过AWS ES Service,我在独立的EC2实例上安装了独立的Kibana,以使用其只读本机功能。
Download Kibana6.2.4

使用AWS文档,我已经配置了kibana.yml

独立式Kibana看上去与AWS ES的默认设置完全相同,没有用于用户管理的选项。

我使用以下命令安装了带有kibana6.2.4的X-pack插件:

sudo ./bin/kibana-plugin install x-pack

我有以下例外情况:

Authentication Exception :: {"path":"/_xpack","statusCode":401,"response":"{\"Message\":\"Your request: '/_xpack' is not allowed.\"}"}

如果我使用kibana6.3,它将自动开始引发错误-

Authentication Exception :: {"path":"/_xpack","statusCode":401,"response":"{\"Message\":\"Your request: '/_xpack' is not allowed.\"}"}

如果我禁用了x-pack安全功能,

xpack.security.enabled: false

kibana服务器将在我的aws ec2 t2.micro实例上无限期进入优化模式,CPU消耗将高达100%,并且在某个实例停止响应之后。

我发现对位于我们无法访问的ElasticSearch集群实例上的elasticsearch.yml进行了一些更改。

我向AWS举了一张支持票,他们说,到目前为止,无法查看kibana仪表板。我已要求他们将其接受为功能请求,但未提供ETA

然后,我再次走得更远,找到其他解决方案。 我发现,可以使用代理设置来限制某些ES REST API调用,以使kibana仪表板浏览体验为只读。

这是我使用的一些链接-
Nginx configuration for Kibana-ElasticSearch read-only/read-write access
Kibana readonly over internet
Elasticsearch readonly rest plugin

上面的rest插件需要访问我没有的ElasticSearch服务器。

作为另一种尝试,使用上面的链接,我设置了一个AWS EC2 t2.micro实例,并将nginx配置为充当代理,以限制后端ElasticSearch api调用以使Kibana变为只读。
这是我在nginx.conf中的配置片段-

  set $posting 11;
  if ( $request_method !~ ^(GET|POST|OPTIONS|HEAD)$ )                     { return 405; }
  if ( $request_method = POST )                                           { set $posting 1; }
  if ( $request_uri ~ ^/(.+)/(_search)(.*)$ ) { set $posting "${posting}1"; }
  if ( $request_method ~ ^(GET|OPTIONS|HEAD)$ )                           { set $posting 11; }
  if ( $posting != 11 ) { return 403; }

  # for elb health checks
  location /status {
    root /usr/share/nginx/html/ ;
  }

  location / {
    proxy_set_header Host search-<ES_DOMAIN>-<CRYPTO_STRING>.ap-south-1.es.amazonaws.com;
    proxy_set_header X-Real-IP <PUBLIC IP>;

    proxy_http_version 1.1;
    proxy_set_header Connection "Keep-Alive";
    proxy_set_header Proxy-Connection "Keep-Alive";
    proxy_set_header Authorization "";

    proxy_pass https://search-<ES_DOMAIN>-<CRYPTO_STRING>.ap-south-1.es.amazonaws.com/;
    proxy_redirect https://search-<ES_DOMAIN>-<CRYPTO_STRING>.ap-south-1.es.amazonaws.com/_plugin/kibana/ http://<PUBLIC IP>/kibana/;
  }

使用此nginx设置,Kibana的“发现/ Timelion / Dev工具/管理”页面链接将无法用于保存/删除,这很好。
“发现”页面为空白,这是正确的事情,因为没有人可以发送自己的查询。

Visualize和Dashboard的工作方式相似,都显示其项目列表,这很好,但是在这之后,两个页面都没有打开任何真实的图形。 我甚至希望“可视化”页面都应该空白,而不是“仪表板”页面。

当我查看firefox / chrome浏览器检查/开发工具时,Visualize和Dashboard页面均使用以下API进行调用-
“ _plugin / kibana / api / saved_objects / _bulk_get”,
“ _msearch”,
“ _plugin / kibana / api / timelion / run”

除了只能查看仪表板中的链接之外,我不确定如何停止所有UI元素,甚至应该完全限制Visualize页面。
我试图仅打开仪表板以查看其预定义的图形,而不进行任何编辑,保存或删除选项。

在对Stackoverflow进行了一些研究之后,我得到的答案很少,这些答案要么陈旧,要么不相关,甚至需要访问我没有的ES / Kibana服务器。
这些是Stackoverflow链接:-
Is custom kibana plugin installation in aws elasticsearch possible
Kibana read only dashboard
How to block selected kibana subpages using nginx
Kibana dashboard only mode

此链接Applying read only permission to kibana dashboard给出了另一种方法
但这会锁定.kibana索引,这对于其他使用它的用户来说是个问题。

任何帮助或指针将不胜感激。我无法自己解决很多天。

0 个答案:

没有答案