简介
Apache Sentry是由Cloudera贡献给Hadoop开源社区的组件,它提供了细粒度级、基于角色的授权以及多租户的管理模式。Sentry当前可以和Hive集成,用于Hive数据的权限。
角色可以理解为一组权限的集合,而Hive中的权限即为用户被允许的一种操作。可以对组进行授权,属于这个组的用户,即自动拥有该组的权限,属于多个组的用户,即拥有多个组的权限。
操作方式
下面介绍的是两种常用的授权方式:
-
使用grant语句授权
主要步骤如下
- 创建角色
CREATE ROLE role_test; - 为角色赋权
GRANT SELECT ON TABLE default.city TO ROLE role_test; - 将角色与组绑定
GRANT ROLE role_test TO GROUP group_test;
这种操作方式,可以在任何可以执行hive sql的地方执行,既可以使用终端以命令行的方式进行,也可以在Hue这种提供查询工具的编辑器中执行。
- 创建角色
-
Hue Sentry管理界面
主要步骤如下
- 在security界面点击Add role
- 输入要创建的角色名称
- 选择组
- 选择权限类型
- 点击保存
这种方式的优点主要胜在界面可视化,对操作者比较友好。
与grant语句不同的是,grant语句每执行成功一次操作,均会保存相关的结果,而在Hue中点击保存之前,实际上并没有真正操作,点击保存后,将需要的数据打包发送给服务器,服务器将这些组合操作通过SentryApi保存到数据库中。
均要求用户有相关的权限
总结
上述两种方式,从本质上来讲,就是在Sentry的数据库中插入一组数据,仅仅是操作方式的不同,殊途同归。
完成这一些操作的时候,当用户使用用户名和密码去访问hiveserver2时,Hiveserver2将会使用用户的组去Sentry查询用户对应的权限,这样就可以根据不同的用户展示不同的表了。