整体思路
1、整合Cloudera的sentry,原因是其本身可以嵌入hive、impala、kafka等代码,提供统一的权限控制逻辑;
2、由于权限包括用户认证和操作授权,需要改造sentry的一个模块代码编译后替换掉原有的包,用户认证sentry官方建议kerboers和ldap,我们本身是不需要那部分,按照ddw的用户逻辑;
3、客户端即使提供业务方正常的连接信息也能完全控制权限,认证信息通过整合ldap实现(以groupCode作为用户名,以token作为密码);
Sentry原理
1、基于角色的权限控制体系,本身是cdh发行套件的一部分,可以很容易和hadoop生态体系的组件深度整合;
2、将权限信息以数据库表(或者文件,但一般不用)的形式存储,插件嵌入被控组件内部,通过rpc调用从sentry server获取权限信息;
3、核心概念有认证、授权、用户、角色、组、权限、资源;
与DDW如何整合
1、我们需要控制的权限就是impala和hive中的库表,授权部分可以完全利用sentry来做,并且是通过管理员角色通过sql做grant/revoke/create role/drop role/create group/drop group的操作;
2、认证部分,通过整合搭建ldap,以业务组名(groupCode)作为对impala和hive操作的用户,以token作为对impala和hive操作的密码;