使用Kibana创建用户并授权
云搜索服务(Cloud Search Service,简称CSS)用opendistro_security安全插件对外提供安全集群能力,opendistro_security安全插件是基于RBAC(Role-Based Access Control)模型构建。RBAC包括三个重要核心概念:用户(User)、权限(Action)、角色(Role)。RBAC简化了用户和权限的关系,降低了权限管理的难度,方便权限扩展易于维护。三者之前的关系如下图所示:
参数 |
描述 |
---|---|
用户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界面
- 步骤二:创建用户
- 步骤三:创建角色并授权
- 步骤四:为用户配置角色
创建用户
登录Kibana操作界面后,在Security页面创建用户。
- 登录成功后,在Kibana操作界面的左侧导航栏选择“Security”,进入“Security”页面。
图3 进入Security页面
- 选择“Authentication Backends”>“Internal Users Database”,进入创建用户页面。
图4 添加用户(1)
- 在“Internal Users Database”页面,选择,进入添加用户信息页面。
图5 添加用户(2)
- 在创建用户页面,输入“Username”、“Password”和“Repeatpassword”,单击“Submit”。
创建成功后,可以在列表中看到新创建的用户。
创建角色并授权
在Security页面创建角色,并为角色授权。
- 在“Security”中选择“Roles”,进入Open Distro Security Roles页面。
图6 添加角色
- 在Open Distro Security Roles页面,单击添加角色权限。
- 在Overview页签设置角色名“Role name”。
图7 添加角色名称
- 在“Cluster Permissions”页签设置CSS集群权限。根据业务需要选择相应的集群权限,不配置时表示角色不具有任何集群级别的权限。
- “Permissions: Action Groups”:单击“Add Action Group”,可以设置集群权限。例如,集群只读权限选择read,表示仅可查看集群状态、集群节点等信息。
- “Permissions: Single Permissions”:勾选Show Advanced后,单击“Add Single Permission”可以针对集群设置更精细的权限。例如设置为indices:data/read,表示仅指定索引的读取权限。
图8 Cluster Permissions页面
- 在“Index Permissions”页面设置索引权限。
- “Index patterns”:单击“Add index permissions”配置为需要设置权限的索引名称,例如,索引模板名称为my_store。
建议索引名称和创建的用户名不要相同。
- “Permissions: Action Groups”:单击“Add Action Group”,根据需要开通的权限设置。例如,只读权限选择Search。
- “Index patterns”:单击“Add index permissions”配置为需要设置权限的索引名称,例如,索引模板名称为my_store。
- “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页面
- 在Overview页签设置角色名“Role name”。
- 单击“Save Role Definition”,保存角色设置,即可看到设置的角色。