Hive权限管理-通过grant语句或者hue修改用户权限

708 阅读2分钟

简介

Apache Sentry是由Cloudera贡献给Hadoop开源社区的组件,它提供了细粒度级、基于角色的授权以及多租户的管理模式。Sentry当前可以和Hive集成,用于Hive数据的权限。

角色可以理解为一组权限的集合,而Hive中的权限即为用户被允许的一种操作。可以对组进行授权,属于这个组的用户,即自动拥有该组的权限,属于多个组的用户,即拥有多个组的权限。

操作方式

下面介绍的是两种常用的授权方式:

  • 使用grant语句授权

    主要步骤如下

    1. 创建角色 CREATE ROLE role_test;
    2. 为角色赋权 GRANT SELECT ON TABLE default.city TO ROLE role_test;
    3. 将角色与组绑定 GRANT ROLE role_test TO GROUP group_test;

    这种操作方式,可以在任何可以执行hive sql的地方执行,既可以使用终端以命令行的方式进行,也可以在Hue这种提供查询工具的编辑器中执行。

  • Hue Sentry管理界面

    主要步骤如下

    1. 在security界面点击Add role
    2. 输入要创建的角色名称
    3. 选择组
    4. 选择权限类型
    5. 点击保存 在这里插入图片描述 这种方式的优点主要胜在界面可视化,对操作者比较友好。 与grant语句不同的是,grant语句每执行成功一次操作,均会保存相关的结果,而在Hue中点击保存之前,实际上并没有真正操作,点击保存后,将需要的数据打包发送给服务器,服务器将这些组合操作通过SentryApi保存到数据库中。

均要求用户有相关的权限

总结

上述两种方式,从本质上来讲,就是在Sentry的数据库中插入一组数据,仅仅是操作方式的不同,殊途同归。 在这里插入图片描述

完成这一些操作的时候,当用户使用用户名和密码去访问hiveserver2时,Hiveserver2将会使用用户的组去Sentry查询用户对应的权限,这样就可以根据不同的用户展示不同的表了。