hive 两个没有null指定的表左关联的结果有null_hive权限管理:Hive弃用授权模式/遗留模式

声明:Hive授权不是完全安全的。基本授权模式的目的主要是防止优秀用户意外地做坏事,但对防止恶意用户做坏事没有承诺。有关安全选项,请参阅Hive授权主页

前提

为了使用Hive授权,需要在hive-site.xml中设置以下两个参数

hive.security.authorization.enabledtrueenable or disable the hive client authorizationhive.security.authorization.createtable.owner.grantsALLthe privileges automatically granted to the owner whenever a table gets created.    An example like "select,drop" will grant select and drop privilege to the owner of the table

注意,默认情况下hive.security.authorization.createtable.owner.grants设置为null,这将导致表的创建者无法访问该表。

用户、组和角色

Hive授权系统的核心是用户、组和角色。角色允许管理员为一组可轻松重用的授予指定名称。角色可以分配给用户、组和其他角色。例如,考虑一个具有以下用户和组的系统:

  • :
  • user_all_dbs: group_db1, group_db2
  • user_db1: group_db1
  • user_db2: group_db2

如果希望将每个用户限制在一组特定的数据库中,则可以使用角色来构建授权机制。管理员将创建两个角色,分别称为role_db1和role_db2。role_db1角色将只提供第一个数据库的特权,而role_db2角色将只提供第二个数据库的特权。然后,管理员可以将role_db1角色授予group_db1,或者显式地授予组中的用户,并对第二个数据库的用户对role_db2执行相同的操作。以便让需要查看所有数据库的用户得到他们适当的

与用户和组不同,Hive角色必须在使用之前手动创建。用户和组由 hive.security.authenticator.manager管理。当一个用户连接到一个Metastore服务器并发出一个查询,Metastore将确定连接用户的用户名,以及与ushive.security. authorizization.ername相关联的组。然后,通过比较Hive操作所需的特权和使用以下规则的用户特权,该信息用于确定用户是否应该访问被请求的元数据:

  • 用户权限(有权限授予给用户)
  • 组权限(用户是否属于已授予该权限的任何组)
  • 角色权限(用户或该用户所属的任何组是否具有授予该权限的角色)

默认情况下,Metastore使用HadoopDefaultAuthenticator来决定user ->组映射,它通过使用运行该Metastore的机器上的Unix用户名和组来决定授权。为了更清楚,考虑一个场景:一个用户foo是组棒的机器上运行hive客户端,并连接到一个Metastore一个单独的服务器上运行,也有一个用户名为foo,但是Metastore服务器上,foo是集团baz的成员。当执行一个操作时,metastore将确定foo在baz组中。

更进一步,用户在Metastore服务器上所属的组也可能与同一用户所属的组不同,这是由HDFS决定的。如果Hive或HDFS被配置为使用非默认的user ->group映射器,或者Metastore和Namenode都使用默认的映射器,但是进程在不同的机器上运行,并且user ->group映射在每台机器上不相同,这种情况可能会发生。

需要注意的是,Hive Metastore只控制元数据的授权,而底层数据是由HDFS控制的,所以如果两个系统之间的权限和特权不同步,用户可以访问元数据,但不能访问物理数据。如果跨Metastore和Namenode的user ->组映射不同步,就像上面的场景一样,一个用户可能拥有根据Metastore访问表所需的特权,但是可能没有根据Namenode访问底层文件的权限。这也可能是由于管理员介入造成的。

用户和角色的名称

角色名是区分大小写的。然而,在Hive 0.13中,有一个bug导致它有大小写不敏感的行为。这个问题在hive 0.14中得到了修复。
用户名也是区分大小写的。与角色名不同,用户名不在Hive中管理

Creating/Dropping/Using Roles

Create/Drop Role

CREATE ROLE role_nameDROP ROLE role_name

Grant/Revoke Roles

GRANT ROLE role_name [, role_name] ...TO principal_specification [, principal_specification] ...[WITH ADMIN OPTION]REVOKE [ADMIN OPTION FOR] ROLE role_name [, role_name] ...FROM principal_specification [, principal_specification] ...principal_specification:    USER user  | GROUP group  | ROLE role

查看角色授权

SHOW ROLE GRANT principal_specification principal_specification:    USER user  | GROUP group  | ROLE role

权限

hive支持以下权限

  • ALL - 赋予用户所有权限
  • ALTER - 允许用户修改对象的元数据
  • UPDATE - 允许用户修改对象的物理数据
  • CREATE - 允许用户创建对象。对于数据库,这意味着用户可以创建表,对于表,这意味着用户可以创建分区
  • DROP - 允许用户删除对象
  • INDEX - 允许用户在对象上创建索引(注意:目前还没有实现)
  • LOCK - 允许用户在启用并发时锁定或解锁表
  • SELECT - 允许用户访问对象的数据
  • SHOW_DATABASE - 允许用户查看可用的数据库

Grant/Revoke权限

GRANT    priv_type [(column_list)]      [, priv_type [(column_list)]] ...    [ON object_specification]    TO principal_specification [, principal_specification] ...    [WITH GRANT OPTION]REVOKE [GRANT OPTION FOR]    priv_type [(column_list)]      [, priv_type [(column_list)]] ...    [ON object_specification]    FROM principal_specification [, principal_specification] ...REVOKE ALL PRIVILEGES, GRANT OPTION    FROM user [, user] ...priv_type:    ALL | ALTER | UPDATE | CREATE | DROP  | INDEX | LOCK | SELECT | SHOW_DATABASE  object_specification:    TABLE tbl_name  | DATABASE db_name principal_specification:    USER user  | GROUP group  | ROLE role

查看grant权限

SHOW GRANT principal_specification[ON object_specification [(column_list)]] principal_specification:    USER user  | GROUP group  | ROLE role object_specification:    TABLE tbl_name  | DATABASE db_name

Hive操作和所需的权限

根据org.apache.hadoop.hive.ql.plan.HiveOperation,在Hive 0.7发布时,只有这些操作需要权限:

8387f3a40e3c42a6640a9bbe6548b8cb.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值