Kibana:如何让用户匿名访问 Kibana 中的 Dashboard
2021年6月23日 | by mebius
在我之前的文章 “如何让匿名的用户访问受限的资源” 中,我介绍了如何让开发者在不输入用户名和密码的情况下访问 Elasticsearch 集群中的索引(ES 集群配置有用户名及密码)。在很多的场合这个是非常有用的。针对 Kibana,我们可能也会遇到同样的情况。比如我们有一个很好的 Dashboard,我们想分析这个 Dashboard 给没有访问权限的人进行查看。当然这种也使用大屏幕 Canvas。我们可以让一个实时动态的 Canvas 给大众访问。在这种情况下,我们必须使用一种匿名的访问方式才能完成。在今天的文章中,我来介绍如何完成这个。
安装
首先,我们先要安装 Elasticsearch 及 Kibana。我们可以参考之前的文章:
- 如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch
- Kibana:如何在 Linux,MacOS 及 Windows上安装 Elastic 栈中的 Kibana
当然按照上面的按照还是是不够的,我们需要给 Elasticsearch 及 Kibana 配置好安全。我们可以参考之前的文章 “Elasticsearch:设置 Elastic 账户安全”。这样当我们访问 Elasticsearch 或者 Kibana 的时候,我们需要输入用户名及密码。
创建一个 Space
在这里,我们希望创建一个完全不同于 Default 的一个 Space。在这个 Space 里,我们只能展示可视化的部分和一些基本的管理部分。打开 Kibana:
如上所示,我们在 Analytics 的部分值启动了 Dashboard。为了下面的操作方便,我同时也启动了 Management。我们在完成我们的目的过后,可以把这个也去掉。点击上面的 Create space 按钮。
这样就创建我们所需要的 visualization_only 这个 space。我们点击上面的 D,并进入这个空间。
首先,我们可以看到只有 Kibana (Visualize & analyze ->)在上面显示。我们点击 Try our sample data:
点击上面的 Add data 按钮,我们可以加载我们想要的kibana_sample_data_logs 索引到这个空间:
如上所示,在这个 space 里,我们只看到 Analytics 和 Management 两个部分。我们点击 Dashboard:
里面已经有一个创建好的 Dashboard。我们的目的是在用户不使用用户名和密码的情况下就访问这个 Dashboard:
在上面的浏览器的 url 中,我们可以看到一个以 /app 为起始的字符串。我们把这个字符串拷贝下来。针对我的情况是:
/app/dashboards#/view/edf84fe0-e1a0-11e7-b6d5-4dc382ef7f5b?_g=(filters:!())&_a=(description:'Analyze%20mock%20web%20traffic%20log%20data%20for%20Elastic!'s%20website',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),tags:!(),timeRestore:!t,title:'%5BLogs%5D%20Web%20Traffic',viewMode:view)
我们重新回到 Stack Management/Advanced settings 页面:
我们把刚才拷贝下来的 /app/xxxx 的内容拷贝到如下的一个设置中:
它的意思是当打开这个 Space 后,默认的页面就是到这个页面,也就是 Web Trtgcodeaffic Dashboard。点击上面的 Save changes 按钮。我么接下来切回到 Default space,然后在切换回到 visualization_only space,我们看看默认的页面是否有所变化:
从上面,我们可以看到每当这个 visualization space 被打开的时候,这个 Dashboard 就会自动被打开。
创建 role
我们接下来创建一个叫做 kibana_data_analyst 的 role。当然我们必须切回到 Default 的 space 下来完成这个工作。在进行下面的操作之前,我们也必须仿照之前在 visualization_only space 下加载kibana_sample_data_logs 索引一样的方法来进行加载。
在上面,我们定义 kibana_data_analyst 这个 role。它只允许访问kibana_sample_data_logs 索引,并只具有 read 权限。我们同时也为它定义相应的 space:
点击上面的 Create role。这样我们就完成了 kibana_data_analyst 的 role 创建。
创建一个用户
在上面我们已经创建了一个叫做 kibana_data_analyst 的 role。如果没有一个用户使用这个 role,上面的 role 是没有任何意义的。我们点击 Stack Management/Users 来创建一个 user:
在上面,我们创建一个叫做kibana-dashboard-only-user 的用户,并设置它的密码为 password。点击上面的 Create user 按钮:
这样,我们就创建了一个叫做kibana-dashboard-only-user 的用户。
匿名登录 Kibana
接下来,我们将使用刚才已经被创建好的kibana-dashboard-only-user 用户匿名来登录 Kibana。这样当一个用户访问我们的 Kibana 时,它会自动登录,并展示我们想要的 Dashboard 页面。我们先停下 Kibana 的运行,并在 Kibana 的配置中做如下的修改:
config/kibtgcodeana.yml
xpack.security.authc.providers:
anonymous.anonymous1:
order: 1
credentials:
username: "kibana-dashboard-only-user"
password: "password"
关于这个部分,请参照 Elastic 的官方文档。等修改完后,我们重新启动 Kibana,并同时访问我们的 Kibana 地址 httptgcode://localhost:5601。这个时候,我们可以看到如下的画面:
显然这个就是我们之前想要的画面。虽然我们的 Elasticsearch 及 Kibana 都设置有用户名和密码,但是我们还是可以在不使用用户名及密码的情况下访问 Kibana 的部分资源。上面的应用场景针对一些实时事件展示,或者一些大屏幕数据展示都是非常用的,尽管访问者可以不需要使用任何的登录。
文章来源于互联网:Kibana:如何让用户匿名访问 Kibana 中的 Dashboard
相关推荐: 如何使用 transform 来跟踪你最近的客户订单
创建一个以实体为中心的索引,其中只包含每个实体的最新文档,在许多情况下都很有用。 例如,你可能正在管理一个电子商务网站,并且想要跟踪每个客户的最新订单。 或者,你可能想要针对在特定时期内不活跃的客户开展营销活动。 编译和组织此类数据的最快和最有效的方法是什么?…