当您需要设置集群、索引、字段或其他操作的访问权限时,可以通过Elasticsearch X-Pack的RBAC(Role-based Access Control)机制,为自定义角色分配权限,并将角色分配给用户,实现权限管控。Elasticsearch提供了多种内置角色,您可以在内置角色的基础上扩展自定义角色,以满足特定需求。本文介绍几种常见的角色配置,以及如何通过角色配置实现权限管控。
背景信息
- 关于Elasticsearch X-Pack RBAC机制的详细信息,请参见User authorization。
- Elasticsearch支持多种安全认证功能,详细信息,请参见Elasticsearch身份认证和授权。
操作流程
配置索引只读权限
- 场景描述
为普通用户授予指定索引的只读权限。该用户可通过Kibana查询索引数据,但无权访问集群。
- 角色配置
表 1. 权限说明 权限类型 权限Key 权限Value 描述 Index privileges indices kibana_sample_data_logs 指定索引名称,支持索引全名、别名、通配符及正则表达式。详细信息,请参见Indices Privileges。 privileges read 设置索引只读权限。只读权限包括count、explain、get、mget、scripts、search、scroll等操作权限。详细信息,请参见privileges-list-indices。 fileds * 索引字段。*表示索引的所有字段。 Kibana privileges privileges read 为所有空间授予Kibana只读权限。默认为none,表示所有空间无权限访问Kibana。 注意 Kibana 7.0以下版本仅支持Base privileges,默认为所有空间授权;7.0及以上版本在Base privileges的基础上,还支持Feature privileges。即对Kibana特定功能授权,需要指定Kibana空间。 - 验证
通过普通用户登录Kibana控制台,执行读索引命令,返回结果正常。执行写索引命令,返回未授权的错误信息。
配置Dashboard操作权限
- 场景描述
授予普通用户指定索引的只读权限,且可查看该索引对应的Dashboard数据。
- 角色配置
在创建用户时,为该用户分配角色:read-index和kibana_dashboard_only_user。
- read-index:自定义角色示例,需要您自行创建。该角色拥有指定索引的只读权限。
- kibana_dashboard_only_user:Kibana内置角色,该角色拥有查看指定索引Dashboard数据的权限。
注意
- 在Kibana 7.0及以上版本中,kibana_dashboard_only_user角色已经被废弃。如果要查看指定索引的Dashboard,只需要为该索引配置读权限,详细信息,请参见配置索引只读权限。
- kibana_dashboard_only_user角色与自定义角色配合使用可应用于很多场景。如果您仅需为自定义角色设定Dashboards only roles功能,可在Management页面的Kibana区域,单击Advanced Settings,找到Dashboard部分,绑定自定义角色(默认是kibana_dashboard_only_user角色)。
- 验证
通过普通用户登录Kibana控制台,可查看对应索引的Dashboard大盘。
配置索引读写和集群只读权限
- 场景描述
为普通用户授予指定索引的读、写和删除权限,以及集群和Kibana的只读权限。
- 角色配置
表 2. 权限说明 权限类型 权限Key 权限Value 描述 Cluster privileges cluster monitor 集群只读权限。例如查看集群的健康度、状态、热线程、节点信息、阻塞的任务等。 Index privileges indices heartbeat-*,library* 指定索引名称,支持索引全名、别名、通配符及正则表达式。详细信息,请参见roles-indices-priv。 privileges read 设置索引只读权限。只读权限包括count、explain、get、mget、scripts、search、scroll等操作权限。详细信息,请参见privileges-list-indices。 create_index 创建索引权限。如果在创建索引时,定义了索引别名,还需要授予索引manage权限。 注意 索引别名需要同时满足indices下定义的匹配规则。view_index_metadata 索引元数据的只读权限,包括aliases、aliases exists、get index、exists、field mappings、mappings、search shards、type exists、validate、warmers、settings和ilm。 write 对文档执行所有写操作的权限,包括index、update、delete、bulk和更新mapping操作。与create和index权限相比,该权限的覆盖面更大。 monitor 监控所有操作的权限,包括index recovery、segments info、index stats和status。 delete 删除索引文档权限。 delete_index 删除索引权限。 granted fields * 待授权的索引字段,*表示索引的所有字段。 Kibana privileges privileges read 为所有空间授予Kibana只读权限。默认为none,表示所有空间无权限访问Kibana。 注意 Kibana 7.0以下版本仅支持Base privileges,默认为所有空间授权;7.0及以上版本在Base privileges的基础上,还支持Feature privileges。即对Kibana特定功能授权,需要指定Kibana空间。 - 验证
通过普通用户登录Kibana控制台,执行如下命令均正常。