`
dacoolbaby
  • 浏览: 1264766 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[翻译]Hive的Security配置

    博客分类:
  • Hive
阅读更多

为了更好地使用好Hive,我将《Programming Hive》的Security章节取出来,翻译了一下。

Hive还是支持相当多的权限管理功能,满足一般数据仓库的使用。

 

Hive由一个默认的设置来配置新建文件的默认权限。

<property>
  <name>hive.files.umask.value</name>
  <value>0002</value>
  <description>The dfs.umask value for the hive created folders</description>
</property>

 当hive.metastore.authorization.storage.checks属性被设置成true时,
Hive将会阻止没有权限的用户进行表删除操作。
不过这个配置的默认值是false,应该设置成true

 

<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。

 

 开启Hive的身份认证功能,默认是false

<property>
  <name>hive.security.authorization.enabled</name> 
  <value>true</value>
  <description>Enable or disable the hive client authorization</description>
</property>

 另外还有一个是表格创建者用于的权限配置项:

<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,让用户能够访问自己创建的表。

 

试验,在命令行环境开启用户认证

hive> set hive.security.authorization.enabled=true;
hive> CREATE TABLE authorization_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)

现在我们通过授权方式,将权限授予给当前用户:

hive> set system:user.name;
system:user.name=edward
hive> GRANT CREATE ON DATABASE default TO USER edward;
hive> CREATE TABLE authorization_test (key INT, value STRING);

 这样就可以创建表了。

 

我们可以通过SHOW GRANT命令确认我们拥有的权限:

hive> SHOW GRANT USER edward ON DATABASE default;
database default
principalName edward
principalType USER
privilege Create
grantTime Mon Mar 19 09:18:10 EDT 2012
grantor edward

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

hive> CREATE TABLE authorization_test_group(a int,b int);
hive> SELECT * FROM authorization_test_group;
Authorization failed:No privilege 'Select' found for inputs
{ database:default, table:authorization_test_group, columnName:a}.
Use show grant to get more details.
hive> GRANT SELECT on table authorization_test_group to group edward;
hive> SELECT * FROM authorization_test_group;
OK
Time taken: 0.119 seconds

 当给用户组授权变得不够灵活的时候,角色(ROLES)就派上用途了。
用户可以被放在某个角色之中,然后角色可以被授权。
角色不同于用户组,是由Hadoop控制的,它是由Hive内部进行管理的。

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

 

介绍一下常用的授权关键字:

ALTER 更改表结构,创建分区
CREATE 创建表
DROP 删除表,或分区
INDEX 创建和删除索引
LOCK 锁定表,保证并发
SELECT 查询表权限
SHOW_DATABASE 查看数据库权限
UPDATE

 为表加载本地数据的权限

 

 

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

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

 

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

<property>
  <name>hive.security.authorization.createtable.owner.grants</name>
  <value>select,drop</value>
</property>

 

类似的,特定的用户可以被在表创建的时候自动授予其权限。

<property>
  <name>hive.security.authorization.createtable.user.grants</name>
  <value>admin1,edward:select;user1:create</value>
</property>

 当表建立的时候,管理员admin1和用户edward授予读所有表的权限。
而user1只能创建表。

 

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

 

 

 

 

分享到:
评论

相关推荐

    hive参数配置手册、hive参数配置大全

    非常全面的hive参数配置,总共有600多项,中文注释是用软件翻译的,勉强能看,引用请注明出处。

    hive远程连接详细配置

    Hive 远程连接详细配置 Hive 远程连接是指 Hive 客户端与 Hive 服务器的连接,以便在分布式环境中实现数据仓库的管理和分析。在这个过程中,Hive 客户端与 Hive 服务器之间的连接是通过 Thrift 协议实现的。在这个...

    hadoop&hive安装配置

    hadoop&hive安装配置 本文将详细介绍hadoop&hive的安装配置过程,包括对hadoop集群的搭建和hive的配置。下面将逐步介绍每个步骤的详细内容。 hadoop集群搭建 在开始安装hadoop之前,我们首先需要准备三台机器,...

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

    【大数据技术基础实验报告-Hive安装配置与应用】 在大数据处理领域,Apache Hive是一个非常重要的组件,它提供了基于Hadoop的数据仓库工具,用于数据查询、分析以及存储。本实验报告将详细阐述如何安装、配置Hive,...

    hive-site.xml

    hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+...

    hive参数配置说明大全

    15. hive.security.authorization.enabled 该参数决定了Hive是否开启权限认证。如果设置为true,则Hive将开启权限认证,默认值为false。 16. hive.exec.plan 该参数决定了Hive执行计划的路径,会在程序中自动进行...

    大数据教程-Hive的安装与配置.pdf

    从提供的文件内容中,我们可以提取到关于Hive安装与配置的相关知识点,同时也包括了MySQL的安装知识,因为MySQL是Hive常用的后端数据库。接下来,我将详细介绍这些知识点。 **Hive的安装与配置** 1. Hive是一个...

    hive配置文件信息修改

    虽然DataX的配置通常在JSON格式的配置文件中完成,但与Hive、Hadoop和Spark的集成可能会涉及上述组件的配置调整,以确保数据传输的效率和正确性。 总的来说,理解和灵活调整这些组件的配置文件信息对于优化大数据...

    hive-2.3.5配置文件.rar

    Hive的配置,选定一个Hive的master,其他的节点为slaves,master和slaves的配置略有不同,不是完全照搬,准确的来说,应该是只有一个节点是Hive的服务器节点负责和元数据库以及集群内部通信,其他的Hive节点其实是装...

    hive配置相关文件.zip

    这个"hive配置相关文件.zip"压缩包包含了构建和配置Hive环境所需的几个关键组件,以及一个配置文件,这对于初次接触或者需要调整Hive环境的人来说非常有用。接下来,我们将详细探讨这些组件和配置文件的作用。 1. *...

    hive等配置文档

    【Hadoop与Hive配置详解】 Hadoop是一个开源框架,主要用于分布式存储和处理大量数据,而Hive是基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,适合大数据量的离线分析...

    Hive配置(Oracle数据库为元数据)

    ### Hive配置(Oracle数据库为元数据) #### 一、概述 Apache Hive 是一个基于 Hadoop 的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce ...

    hive的安装与配置头歌.zip

    在本压缩包中,"文档.pdf" 和 "资料必看.zip" 可能包含了关于 Hive 安装与配置的详细步骤和指南。现在,我们将深入探讨 Hive 的安装与配置过程。 首先,安装 Hive 需要先确保你已经安装了 Hadoop 环境,因为 Hive ...

    Hive安装与配置

    ### Hive安装与配置详解 #### 一、软件准备与环境规划 在进行Hive的安装与配置之前,首先需要对所需的软件及环境进行规划。以下为本次安装与配置的环境规划: - **操作系统**: Ubuntu - **Java版本**: Java 1.6.0...

    spark下安装hive配置文件hive-site.xml

    spark下安装hive标准配置文档。Ubuntu安装hive,并配置mysql作为元数据库时候需要的标准hive-site.xml配置文件,可以根据这个文件联系我的博文内容就行修改,避免入坑。实现快捷启动hive。

    基于虚拟机hadoop集群hive2.1.1配置文件

    本文将详细探讨如何在虚拟机环境中配置基于Hadoop集群的Hive 2.1.1,以及涉及的相关配置文件。 首先,我们要理解Hadoop集群的基本架构。Hadoop通常采用主从结构,由一个NameNode(Master)作为中心节点,负责管理...

    hive的配置方法

    hive-site.xml的环境配置 hive-site.xml的环境配置 hive-site.xml的环境配置

    Hive学习必备——配置Hive环境教程 免费分享哦~

    Hive学习必备——配置Hive环境教程 在这篇文章中,我们将详细介绍如何配置Hive环境,包括安装Hive、配置Hadoop环境、配置Hive Metastore数据库等步骤。同时,我们还将使用Xshell6工具来远程连接到Hive服务器,并...

    hive 配置文件

    在Hive的运行中,配置文件起着至关重要的作用,它们定义了Hive的行为、连接到的数据存储以及性能相关的参数。本篇文章将详细介绍Hive的两个核心配置文件:`hive-site.xml`和`hive-env.sh`。 **1. `hive-site.xml`...

    基于CDH 6.3.0 搭建 Hive on Spark 及相关配置和调优

    ### 基于CDH 6.3.0 搭建 Hive on Spark 及相关配置和调优 #### 概述 随着大数据技术的发展,Hadoop生态系统不断成熟与完善,其中Apache Hive作为数据仓库工具,支持通过SQL语句进行查询、分析存储在Hadoop文件系统...

Global site tag (gtag.js) - Google Analytics