更新时间:2024-04-19 GMT+08:00

使用Kibana创建用户并授权

云搜索服务(Cloud Search Service,简称CSS)用opendistro_security安全插件对外提供安全集群能力,opendistro_security安全插件是基于RBAC(Role-Based Access Control)模型构建。RBAC包括三个重要核心概念:用户(User)、权限(Action)、角色(Role)。RBAC简化了用户和权限的关系,降低了权限管理的难度,方便权限扩展易于维护。三者之前的关系如下图所示:

图1 用户、权限和角色
表1 参数说明

参数

描述

用户User

用户可以向Elasticsearch集群发出操作请求。用户具有凭证(例如,用户名和密码)、零个或多个后端角色以及零个或多个自定义属性。

角色Role

角色定义为权限或操作组的组合,包括对集群,索引,文档或字段的操作权限。

权限Permission

单个动作,例如创建索引(例如indices:admin/create)。

角色映射Role mapping

用户在成功进行身份验证后会担任角色。角色映射,就是将角色映射到用户(或后端角色)。例如,kibana_user(角色)到jdoe(用户)的映射意味着John Doe在获得kibana_user身份验证后获得了所有权限。同样,all_access(角色)到admin(后端角色)的映射意味着具有后端角色admin(来自LDAP / Active Directory服务器)的任何用户都获得了all_access身份验证后的所有权限。您可以将每个角色映射到许多用户和/或后端角色。

操作组Action group

一组权限。例如,预定义的SEARCH操作组授权角色使用_search和_msearchAPI。

除了RBAC模型之外,Elasticsearch还有一个重要的概念,叫做Tenant。RBAC能解决各个用户本身授权的问题,Tenant则能解决了不同租户之间的共享信息,通过配置Tenant空间,各个IAM用户(子用户)可以在Tenant空间中共享Dashboard、index_pattern等信息。

本章节将介绍如何使用Kibana创建用户,并为用户授权。集群必须开启安全模式才支持使用Kibana创建用户并授权。

  • 不同的版本之间Kibana界面有差异,本章节以7.6.2版本为例。
  • Kibana中可以自定义用户名、角色名、租户名等,但不能包含中文字符。

登录Kibana界面

  1. 登录云搜索服务控制台。
  2. 在集群管理列表,选择对应集群,单击操作列的“Kibana”。
    输入管理员账户名和密码登录Kibana。
    • 账户名:admin(默认管理员账户名)
    • 密码:创建安全模式的集群时,设置的管理员密码。
    图2 登录页面

创建用户

登录Kibana操作界面后,在Security页面创建用户。

  1. 登录成功后,在Kibana操作界面的左侧导航栏选择“Security”,进入“Security”页面。
    图3 进入Security页面
  2. 选择“Authentication Backends”>“Internal Users Database”,进入创建用户页面。
    图4 添加用户(1)
  3. “Internal Users Database”页面,选择,进入添加用户信息页面。
    图5 添加用户(2)
  4. 在创建用户页面,输入“Username”“Password”“Repeatpassword”,单击“Submit”

创建成功后,可以在列表中看到新创建的用户。

创建角色并授权

在Security页面创建角色,并为角色授权。

  1. “Security”中选择“Roles”,进入Open Distro Security Roles页面。
    图6 添加角色
  2. 在Open Distro Security Roles页面,单击添加角色权限。
    1. 在Overview页签设置角色名“Role name”
      图7 添加角色名称
    2. “Cluster Permissions”页签设置CSS集群权限。根据业务需要选择相应的集群权限,不配置时表示角色不具有任何集群级别的权限。
      • “Permissions: Action Groups”:单击“Add Action Group”,可以设置集群权限。例如,集群只读权限选择read,表示仅可查看集群状态、集群节点等信息。
      • “Permissions: Single Permissions”:勾选Show Advanced后,单击“Add Single Permission”可以针对集群设置更精细的权限。例如设置为indices:data/read,表示仅指定索引的读取权限。
      图8 Cluster Permissions页面
    3. “Index Permissions”页面设置索引权限。
      • “Index patterns”:单击“Add index permissions”配置为需要设置权限的索引名称,例如,索引模板名称为my_store。

        建议索引名称和创建的用户名不要相同。

      • “Permissions: Action Groups”:单击“Add Action Group”,根据需要开通的权限设置。例如,只读权限选择Search。
    4. “Tenant Permissions”页面设置角色权限,根据业务需要配置。
      • “Global permissions”:单击“Add Field”,设置角色的kibana读写权限,例如kibana_all_read或kibana_all_write权限。
      • “Tenant permissions”:单击“Add tenant pattern”,自行添加租户模式,并且为新增的租户模式设置kibana_all_read或kibana_all_write权限。
        图9 Tenant Permissions页面
  3. 单击“Save Role Definition”,保存角色设置,即可看到设置的角色。

为用户配置角色

创建好角色并为角色授予权限后,需要将角色映射到用户,用户才会获得被映射的角色所拥有的权限。

  1. “Security”中选择“Role Mappings”,进入Role Mappings页面,进行角色映射。
    图10 角色映射
  2. 在Role Mappings页面,单击,选择角色“Role”,添加用户“Users”
    • “Role”:选择待映射的角色名称。
    • “Users”:单击“Add User”,输入被映射角色的用户名称。
    图11 用户和角色映射
  3. 添加完成后,单击“Submit”
  4. 配置完成后,可以在Kibana中进行验证是否生效。