关于大数据权限的问题,一直是一个很有意思的问题。公司内部普遍使用的方式如下
- 底层hdfs不做权限控制,控制的逻辑都在表级别。关于表的字段的控制,目前还没有做。
- 基础数据不做控制,权限主要在上层应用上做。
通过之前的文章解决了kylin通过beeline访问hive的问题,但是随之而来的问题也产生了。
- 是使用最高权限data用户来访问还是通过普通的用户权限来访问?
- 是使用lookup表做表关联,还是直接在hive中创建视图然后倒入到kylin?
- 权限的控制有两个方面一个是写,一个是读。这两方面要怎么做?
解决方式有两种:
- 通过data权限,业务方可以任意在kylin里面配置数据,通过上层的应用来开放查询接口控制权限,上层的应用在表级别授权不用的业务方访问。
- 通过普通的用户权限,业务方通过上层的应用申请创建cube的权限,上层应用去底层的元数据系统申请权限。上层应用开发查询接口供业务方去查询。
- 必须要重视的一点,kylin的原始控制台只能作为数据配置,查询的功能必须要禁用掉。
- 目前我的做法是使用第一种,底层不做控制,只在应用级别做控制。kylin管理系统包括授权,查询数据,以及元数据的管理等。提供的接口包括console,rest,rpc等
- 关于kylin可以使用lookup表做join的做法,我这边是为了做权限控制的方便,直接使用了视图,直接在hive中做操作。