`
乡里伢崽
  • 浏览: 111918 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

hive 授权

    博客分类:
  • hive
 
阅读更多
Hive授权(Security配置)

博客分类: Hive分享


摘:https://cwiki.apache.org/Hive/languagemanual-auth.html
       https://cwiki.apache.org/Hive/authdev.html
       http://grokbase.com/t/hive/user/11aksphhas/authorization-and-remote-connection-on-cdh3u1

     HIVE授权管理,类似于操作系统权限可以授予给不同的主题,如用户(USER),组(GROUP),角色(ROLES),Hive还是支持相当多的权限管理功能,满足一般数据仓库的使用,同时HIVE能支持自定义权限。
     HIVE授权并不是完全安全,在其目前的形式来看,授权方案的目的是主要是为了防止用户不小心好做了不合法的操作,但不承诺防止用户恶意破坏。

一、HIVE新建文件权限
    Hive由一个默认的设置来配置新建文件的默认权限。
Xml代码  收藏代码
<property> 
  <name>hive.files.umask.value</name> 
  <value>0002</value> 
  <description>The dfs.umask value for the hive created folders</description> 
</property> 
创建文件授权掩码为0002,即664权限,具体要看hadoop与hive用户配置。

二、HIVE授权存储检查
     当hive.metastore.authorization.storage.checks属性被设置成true时,Hive将会阻止没有权限的用户进行表删除操作。不过这个配置的默认值是false,应该设置成true。
Xml代码  收藏代码
<property> 
  <name>hive.metastore.authorization.storage.checks</name> 
  <value>true</value> 
  <description>Should the metastore do authorization checks against 
  the underlying storage for operations like drop-partition (disallow 
  the drop-partition if the user in question doesn't have permissions 
  to delete the corresponding directory on the storage).</description> 
</property> 
同时,Hive会尽可能地将hive.metastore.execute.setugi设置成true。在不安全的模式,将这个属性设置为true将导致metastore执行DFS操作定义用户和组权限。

三、HIVE身份验证

1.开启Hive的身份认证功能,默认是false
Xml代码  收藏代码
<property> 
  <name>hive.security.authorization.enabled</name>  
  <value>true</value> 
  <description>Enable or disable the hive client authorization</description> 
</property> 
2.表创建者用于的权限配置项
Xml代码  收藏代码
<property> 
  <name>hive.security.authorization.createtable.owner.grants</name> 
  <value>ALL</value> 
  <description>The 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</description> 
</property> 
这个配置默认是NULL,建议将其设置成ALL,让用户能够访问自己创建的表。

四、案例说明
1.在命令行环境开启用户认证
Java代码  收藏代码
hive> set hive.security.authorization.enabled=true;   
hive> CREATE TABLE auth_test (key int, value string);   
Authorization failed:No privilege 'Create' found for outputs { database:default}.   
Use show grant to get more details.   
提示建表需要权限了。
权限可以授予给不同的主题,如用户(USER),组(GROUP),角色(ROLES)
现在通过授权方式,将权限授予给当前用户:
Java代码  收藏代码
hive> set system:user.name; 
system:user.name=hadoop 
hive> GRANT CREATE ON DATABASE default TO USER hadoop; 
hive> CREATE TABLE auth_test (key INT, value STRING); 

通过SHOW GRANT命令确认我们拥有的权限:
Java代码  收藏代码
hive> SHOW GRANT USER hadoop ON DATABASE default;   
database default   
principalName hadoop   
principalType USER   
privilege Create   
grantTime Wed Mar 08 19:18:10 EDT 2013   
grantor hadoop   

当Hive里面用于N多用户和N多张表的时候,管理员给每个用户授权每张表会让他崩溃的。
所以,这个时候就可以进行组(GROUP)授权。
Hive里的用户组的定义等价于POSIX里面的用户组。

Java代码  收藏代码
hive> CREATE TABLE auth_test_group(a int,b int); 
hive> SELECT * FROM auth_test_group; 
Authorization failed:No privilege 'Select' found for inputs 
{ database:default, table:auth_test_group, columnName:a}. 
Use show grant to get more details. 
hive> GRANT SELECT on table auth_test_group to group hadoop; 
hive> SELECT * FROM auth_test_group; 
OK 
Time taken: 0.119 seconds 
当给用户组授权变得不够灵活的时候,角色(ROLES)就派上用途了。
用户可以被放在某个角色之中,然后角色可以被授权。
角色不同于用户组,是由Hadoop控制的,它是由Hive内部进行管理的。

Sql代码  收藏代码
hive> CREATE TABLE auth_test_role (a int , b int); 
hive> SELECT * FROM auth_test_role; 
Authorization failed:No privilege 'Select' found for inputs 
{ database:default, table:auth_test_role, columnName:a}. 
Use show grant to get more details. 
hive> CREATE ROLE users_who_can_select_auth_test_role; 
hive> GRANT ROLE users_who_can_select_auth_test_role TO USER hadoop; 
hive> GRANT SELECT ON TABLE auth_test_role 
> TO ROLE users_who_can_select_auth_test_role; 
hive> SELECT * FROM auth_test_role; 
OK 
Time taken: 0.103 seconds 

五、分区表级别的授权

默认情况下,分区表的授权将会跟随表的授权,也可以给每一个分区建立一个授权机制,只需要设置表的属性PARTITION_LEVEL_PRIVILEGE设置成TRUE:

Java代码  收藏代码
hive> ALTER TABLE auth_part 
> SET TBLPROPERTIES ("PARTITION_LEVEL_PRIVILEGE"="TRUE"); 
Authorization failed:No privilege 'Alter' found for inputs 
{database:default, table:auth_part}. 
Use show grant to get more details. 

六、自动授权

属性hive.security.authorization.createtable.owner.grants决定了
建表者对表拥有的权限,一版情况下,有select和drop

Xml代码  收藏代码
<property> 
  <name>hive.security.authorization.createtable.owner.grants</name> 
  <value>select,drop</value> 
</property> 

类似的,特定的用户可以被在表创建的时候自动授予其权限。
Xml代码  收藏代码
<property> 
  <name>hive.security.authorization.createtable.user.grants</name> 
  <value>irwin,hadoop:select;tom:create</value> 
</property> 
当表建立的时候,管理员irwin和用户hadoop授予读所有表的权限。而tom只能创建表。

同样的配置也可以作用于组授权和角色授权
Xml代码  收藏代码
hive.security.authorization.createtable.group.grants 
hive.security.authorization.createtable.role.grants 

七、删除授权
Sql代码  收藏代码
--回收用户hadoop的create授权 
revoke create on database default from user hadoop; 
 
--回收组hadoop的select授权 
revoke select on database default from group hadoop; 


附录:常用的授权关键字
ALTER 更改表结构,创建分区
CREATE 创建表
DROP 删除表,或分区
INDEX 创建和删除索引
LOCK 锁定表,保证并发
SELECT 查询表权限
SHOW_DATABASE 查看数据库权限
UPDATE
为表加载本地数据的权限
分享到:
评论

相关推荐

    07--Hive权限管理1

    本篇文章将详细讲解Hive的三种授权模型:基于存储的授权、基于SQL标准的授权以及默认的Hive授权,并探讨它们的特点、限制以及配置方法。 1. 基于存储的授权(Storage Based Authorization in the Metastore Server...

    kerberos认证hive连接代码

    在Hive中启用Kerberos,可以确保只有经过授权的用户才能访问数据。 `Hive JdbcListener` 是一个监听器,通常用于监控和管理Hive数据库的连接和操作。在Spring MVC中,我们可以创建一个这样的监听器来处理Hive的连接...

    hivesql语句练习

    如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行) mysql -uroot -p #(执行下面的语句 *.*:所有库下的所有表 %:任何IP地址或主机都可以连接) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' ...

    Hive-jdbc-3.1.1.zip

    这在企业环境中尤为重要,因为需要保护敏感数据不被未经授权的用户访问。 6. **性能优化**:Hive 3.1.1版本引入了多项性能改进,例如优化查询计划、减少网络传输的开销等。这些改进使得Hive JDBC在处理大量数据时...

    hive介绍和hive环境搭建

    hive介绍和hive环境搭建。。一、 安装mysql 1.... 授权:grant all privileges on *.* to 'hive'@'%' with grant option 9. 重启一下这个mysql服务。 10. 使用hive用户创建数据库并修改连接信息。

    hive jdbc驱动 2.5.15 及 2.6.1两个版本

    - **安全增强**:加强了身份验证和授权机制,提供更好的数据安全性。 - **资源调度**:可能优化了YARN集成,提供了更精细的资源管理和调度策略。 - **ACID特性**:支持事务处理,增强了数据一致性,使得Hive更...

    Hive1.2.1安装指南

    4. **创建Hive用户并授权**:执行以下命令创建Hive用户,并授予其对`hive`数据库的所有权限: ```sql GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` ...

    大数据技术基础实验报告-Hive安装配置与应用.doc

    接下来创建并授权Hive使用的数据库: ``` mysql&gt;create database if not exists hive_metadata; mysql&gt;grant all privileges on hive_metadata.* to 'hive'@'%' identified by 'hive'; mysql&gt;grant all ...

    大数据安全-kerberos技术-hive安装包,hive版本:apache-hive-3.1.3-bin.tar.gz

    在大数据环境中,Kerberos可以确保只有经过身份验证的用户和服务才能访问数据,有效防止未授权访问和数据泄露。在Hive中集成Kerberos,能够确保每个尝试连接到Hive服务器的客户端都需要通过KDC验证其身份,增加了...

    hive-jdbc-uber-3.1.2+yanagishima-18.0

    Yanagishima不仅简化了对Hive、Presto和Trino等查询引擎的接口,还提供了权限控制,确保只有授权用户可以执行查询。它的核心功能包括SQL查询的提交、结果的展示以及查询历史的记录,为数据分析团队提供了一个便捷的...

    hive tunning

    - **认证和授权**:通过Kerberos认证和Hive的ACL(访问控制列表)来控制数据访问权限。 - **加密**:在数据传输和存储过程中采用加密技术,保障数据的安全性。 - **审计**:记录所有对Hive元数据和数据的访问,以便...

    jdbc hive相关jar包

    13. **安全性**: Hive JDBC支持认证和授权,例如Kerberos、LDAP等,确保只有授权用户能访问数据。 总结来说,"jdbc hive相关jar包"是实现Java应用程序与Hive数据仓库无缝集成的关键。这些库包含了连接管理、元数据...

    hive安装步骤

    文章还介绍了如何创建 Hive 元数据库、授权 root 用户、从 Windows 环境连接 MySQL 等内容。 Hive 安装步骤总结 1. 安装 Hadoop 和 YARN 2. 安装 MySQL 3. 安装 Hive 4. 配置 Hive 环境变量 5. 创建 Hive 元...

    ranger-2.0.0-hive-plugin.tar.gz

    这有助于保护敏感数据,确保只有授权用户才能访问特定资源。 2. **审计日志**:Ranger 提供全面的审计功能,记录所有访问尝试,包括成功的和失败的,以便于合规性和安全审查。 3. **策略管理**:通过Web界面,管理...

    php链接HIVE的例子代码

    SASL是Thrift支持的一种身份验证机制,用于保护Hive Server2免受未经授权的访问。你需要在Hive服务器端和PHP客户端都正确配置SASL,如设置用户名、密码和认证机制(如Kerberos)。 3. **编写PHP代码**:创建一个PHP...

    hadoop3.0.3及hive2.3.5

    - **安全性的提升**:Hadoop 3.0.3增强了认证、授权和审计机制,提高了整个系统的安全性。 #### 3. Hadoop 3.0.3的安装与配置 - **环境准备**:首先确保服务器环境满足Hadoop 3.0.3的要求,例如JDK版本等。 - **...

    apache-hive-2.3.3-bin.7z

    5. **安全性**:Hive 2.3.3加强了安全性,支持Kerberos认证、SQL标准授权和行级权限控制。 **使用步骤:** 1. **安装与配置**:首先,解压"apache-hive-2.3.3-bin.7z"到本地目录,配置Hive的环境变量,包括HADOOP_...

    apache-hive-2.0.0-bin.tar

    10. **安全性**:Hive支持Hadoop的认证和授权机制,如Kerberos,以及SQL标准的权限控制,确保数据的安全访问。 在解压"apache-hive-2.0.0-bin.tar"后,用户需要配置环境变量,设置Hive的安装路径、Hadoop相关路径、...

    Hive2Hive-master.rar

    此外,访问控制和身份验证也是必不可少的,确保只有授权的客户端才能进行数据同步。 总之,"Hive2Hive-master"项目利用Socket技术实现了Hive数据的实时或定期同步,为大数据环境中的数据一致性提供了有效保障。通过...

Global site tag (gtag.js) - Google Analytics