[转载] 在 Kibana 中为不同用户生成不同的 Space

导语

Elastic Stack 在默认的情况下没有身份验证或默认启用授权。为了启动这个功能,我们必须做一些配置。请操作我之前的文章“Elasticsearch:用户安全设置”来进行配置(https://elasticstack.blog.csdn.net/article/details/102807480)

Elastic安全机制

在很多的情况下,出于安全的原因,我们需要对不同的Kibana用户分配不同的用户权限,这样使得他们之间不能互相访问彼此的资源,同时他们也应该对不同的索引拥有不同的权限,比如读,写,管理等等。Elastic Security 通过基于角色的功能提供授权存取控制(RBAC-Role Based Access Control)。

【转载】在Kibana中为不同用户生成不同的Space

一个用户可拥有不同的 role,并且每一个role都含有不同操作权限。使用 RBAC,您可以控制访问通过定义:

  • users:创建具有不同的属性的账号(username, full name,邮件,及相应的roles)

  • roles:分配一组命名权限,Elasticsearch 里含有有多个内置角色

  • resources:限制访问的实体,比如 document或一个索引

  • privileges:代表一个或多个动作的命名组可以在资源上执行

  • permissions:应用于一个特权的一组一个或多个特权或更多资源

Resource 权限 许可
Index 读取twitter索引
Index 所有 对用户的索引进行所有的操作

什么是Space(空间)?

通过 Space 可以组织仪表板和其他将对象保存到有意义的类别中。在默认的情况下这个功能是启动的。可以在 elasticsearch.yml 文件中进行配置:

xpack.spaces.enabled: false

上面的配置将使得这个功能被取消。

在一个空间内创建的对象只能从该空间进行访问。启用安全性后,您可以控制哪个用户拥有访问哪些空间。来自特定空间的已保存对象将被标记为在该空间的对象。

在默认的情况下,Kibana 在启动时帮我们创建一个名字叫做 Default 的空间。当我们从一个没有空间的版本升级后,那么所有的visualization将会被存于 Default 的空间里。当我们创建一个 Space 时,它只需要一个名字,它被用来生产 URL 识别符,我们还可以加入一些描述符。

下面我们来通过一个实验来了解 Space 是如何工作的。

准备工作

  1. 首先第一步我们安装“Elastic:菜鸟上手指南”来安装好我们的 Elasticsearch及Kibana

  2. 我们按照文档“Elasticsearch:用户安全设置”来启动我们的安全配置。这样我们可以来创建用户及 role。启动我们的 Elasticsearch 及 Kibana。在我们登陆 Kibana时,千万不要忘记自己的密码了。

  3. 准备实验数据。在今天的式样中,我们将使用Kibana中自带的 eCommerce 及 Flight 数据来操作。首先打开我们的 Kibana:

【转载】在Kibana中为不同用户生成不同的Space

点击 Load a data set and a Kibana dashboad。然后我们可以看到:

【转载】在Kibana中为不同用户生成不同的Space

我们分部点击 eCommerce 及 flight 两个的 Add data 按钮。这样两个样本数据都进入到我们的 Elasticsearch 里去了。我们可以对这两个索引的数据 Visualization 分别处理。我们点击 Dashboard 按钮,我们可以看到在 Dashboard 里有显示两个 Dashboard 的列表。我们可以点击上面的链接来分别看一下数据的呈现。

【转载】在Kibana中为不同用户生成不同的Space

创建Space

创建Space其实是非常的方便。我们点击Management按钮:

【转载】在Kibana中为不同用户生成不同的Space

在上面我们看见了一个叫做Default的默认空间。也就是我们通常操作的空间。我们点击 Create a space 按钮:

【转载】在Kibana中为不同用户生成不同的Space

在上面我们创建一个叫做 flight_analyst 的空间。在我们创建时,我们可以选择一个我们自己喜欢的颜色或Initial。针对我们的情况,我们选择F字母及一个红色来标识这个空间。最后,我们选择Create space按钮来创建这个空间。如法炮制,我们创建一个叫做 ecommerce_analyst 的空间。最后我们可以在列表中看到我们创建的空间。

【转载】在Kibana中为不同用户生成不同的Space

创建role

接下来,我们来创建我们的 role,也就是我们的所说的角色。我们点击 Management 页面左下角的 role:

【转载】在Kibana中为不同用户生成不同的Space

从上上面我们可以看出来,有好多已经帮我们创建好的role。在我们创建用户的时候,我们可以选择已经被创建好的 role 来使用,针对我们的情况,我们想创建自己的 role。点击 Create role按钮:

【转载】在Kibana中为不同用户生成不同的Space

最后的配置是这样的:

【转载】在Kibana中为不同用户生成不同的Space

点击 Create role 按钮。这样就完成了我们 flight_analyst 的 role 创建。如风炮制,我们可与创建另外一个叫做 ecommerce_analyst 的 role。只是对这个role来说,它只可以访问 kibana_sample_data_ecommerce 索引,并具有read权限。同时它拥有对该 Space 的所有的权限。

【转载】在Kibana中为不同用户生成不同的Space

这样,我们就创建了我们所需要的两个role。

创建用户

接下来我们来创建两个用户:flight 及 ecommerce。在之前的文章“Elasticsearch:用户安全设置”中我们有介绍如何创建用户。

【转载】在Kibana中为不同用户生成不同的Space

按照上面的步骤,我们来首先创建一个叫做 flight 的用户:

【转载】在Kibana中为不同用户生成不同的Space

我们按照上面的信息进行填写。密码可以选一个自己喜欢的密码。记得选择 flight_analyst 作为它的 role。点击 Create user 来创建我们的用户。同样的方法,我们来创建一个叫做ecommerce 的用户:

【转载】在Kibana中为不同用户生成不同的Space

点击Create User按钮。这样我们就完成了创建两个用户的工作。

【转载】在Kibana中为不同用户生成不同的Space

为空间创建Visualization

在这一步我们将为我们创建的两个空间分别创建它们的可视化Dashboard。首先我们点击Saved Objects:

【转载】在Kibana中为不同用户生成不同的Space

在这一步,我们想导出所有关于 Flight 可视化的对象。我们首先在搜索框里输入 flight,并同时把 Rows per page 设置为50。这样我们一次性地可以把所有的对象都导出来。我们记住浏览器左下角的一个以 ndjson 为扩展名的文件。同时,我们也做如下的事情:

【转载】在Kibana中为不同用户生成不同的Space

我们也导出这个叫做 kibana_sample_data_flights 的对象。等我们操作完这上面的两步后,删除所有刚才已经选过的文件。

【转载】在Kibana中为不同用户生成不同的Space

接下来,我们选择我们的 Space。点击做事上角的 Space 选择按钮:

【转载】在Kibana中为不同用户生成不同的Space

当我们选择完后,我们可以看到做上角的那个 Space 的地方显示的是红色,并且有一个“F”字样。我们点击 Saved Object,并选择右上角的import。

【转载】在Kibana中为不同用户生成不同的Space

我们可以通过拖拽的方式把刚才存下来的两个导出来的 ndjson 文件导入到该 Space。等导入完后,我们点击我们的 Dashboard 按钮:

【转载】在Kibana中为不同用户生成不同的Space

我们可以看到 Flight 的 Dashboard 在这个空间里。如法炮制,我们把 eCommerce 的数据导入到 eCommerce 的空间里。

【转载】在Kibana中为不同用户生成不同的Space

至此,我们已经完成了我们所有的为空间 flight_analyst 及 ecommerce_analyst 的所有操作。

使用不同的用户登录

最后是我们检查的时候了。我们可以使用我们之前创建的两个账号 flight 及 ecommerce 进行登录。最重要的是我们来查看在两个空间里分别看到的 dashboard。我们首先登出使用elastic登录的账号,然后使用 flight 进行登录。

【转载】在Kibana中为不同用户生成不同的Space

对于这个账号,我们只看见 Flight 的 Dashboard,但是我们看不到 eCommerce的Dashboard。这个也同样使用于 ecommerce 的账号。它只能看到 eCommerce的 Dashboard,而看不到 Flight 的 Dashboard。

【转载】在Kibana中为不同用户生成不同的Space

作者:刘晓国
来源: Elastic中文社区
原文链接:mp.weixin.qq.com/s?__biz=MzI2NDExN...

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!