- 浏览: 108650 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
土豆蛋儿:
我想读取一个外部文件,以什么方式好了? 文件内容经常编辑
flume 自定义source -
土豆蛋儿:
大神,您好。
flume 自定义source
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
为表加载本地数据的权限
博客分类: 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
为表加载本地数据的权限
发表评论
-
hive + hbase
2015-01-04 10:42 733环境配置: hadoop-2.0.0-cdh4.3.0 (4 ... -
hive 数据倾斜
2014-08-27 09:03 643链接:http://www.alidata.org/archi ... -
hive 分通总结
2014-08-27 08:42 541总结分析: 1. 定义了桶,但要生成桶的数据,只能是由其他表 ... -
深入了解Hive Index具体实现
2014-08-25 08:51 702索引是标准的数据库技术,hive 0.7版本之后支持索引。hi ... -
explain hive index
2014-08-24 16:44 1118设置索引: 使用聚合索引优化groupby操作 hive> ... -
Hive 中内部表与外部表的区别与创建方法
2014-08-15 17:11 724分类: Hive 2013-12-07 11:56 ... -
hive map和reduce的控制
2014-08-15 16:14 596一、 控制hive任务中的map数: 1. 通 ... -
hive 压缩策略
2014-08-15 15:16 1727Hive使用的是Hadoop的文件 ... -
hive 在mysql中创建备用数据库
2014-08-15 09:21 839修改hive-site.xml <property> ... -
HIVE 窗口及分析函数
2014-08-11 16:21 1152HIVE 窗口及分析函数 使 ... -
hive 内置函数
2014-08-11 09:06 30261.sort_array(): sort_array(arra ... -
hive lateral view
2014-08-09 14:59 1987通过Lateral view可以方便的将UDTF得到的行转列的 ... -
hive数据的导出
2014-07-28 21:53 419在本博客的《Hive几种数据导入方式》文章中,谈到了Hive中 ... -
hive udaf
2014-07-25 16:11 714package com.lwz.udaf; import o ... -
hive自定义InputFormat
2014-07-25 09:13 819自定义分隔符 package com.lwz.inputf; ... -
HiveServer2连接ZooKeeper出现Too many connections问题的解决
2014-07-24 08:49 1690HiveServer2连接ZooKeeper出现Too man ... -
hive 常用命令
2014-07-17 22:22 6381.hive通过外部设置参数传入脚本中: hiv ... -
CouderaHadoop中hive的Hook扩展
2014-07-16 21:18 3261最近在做关于CDH4.3.0的hive封装,其中遇到了很多问题 ... -
利用SemanticAnalyzerHook回过滤不加分区条件的Hive查询
2014-07-16 16:43 1421我们Hadoop集群中将近百分之80的作业是通过Hive来提交 ... -
hive 的常用命令
2014-07-16 10:07 0设置、查看hive当前的角色: set sys ...
相关推荐
如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行) mysql -uroot -p #(执行下面的语句 *.*:所有库下的所有表 %:任何IP地址或主机都可以连接) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' ...
hive介绍和hive环境搭建。。一、 安装mysql 1.... 授权:grant all privileges on *.* to 'hive'@'%' with grant option 9. 重启一下这个mysql服务。 10. 使用hive用户创建数据库并修改连接信息。
强调安全性配置,如认证、授权等,以保障数据库的安全性。 配置文件中包含了常用的优化选项,提高Hive数据库的性能。 鼓励根据实际需求进行适度的定制化配置,以满足不同业务场景的需求。 在远程部署中,注意网络...
apache-atlas-2.3.0-hive-hook.tar.gz Apache Atlas 框架是一组可扩展的核心基础治理服务,使企业能够有效且高效地满足 Hadoop 内的合规性要求,并允许与整个企业数据生态系统集成。这将通过使用规范和取证模型、...
重新启动服务后,它既没有身份验证,也没有授权和数据。 我们还使用该项目来探索CF服务和经纪人的工作方式。 我们已经了解了关于CF的一两件事,并希望分享。 免责声明: 这不是生产级软件服务实例不安全内容(简单...
到2008年10月份, Silicon Hive便与Intel签署了一份授权协议—允许后者使用自家移动产品技术。 Silicon Hive的CEO Atul Sinha表示:“能和Intel这样的的合作伙伴一起工作,共同努力将我们的并行计算技术融合到以...
到2008年10月份, Silicon Hive便与Intel签署了一份授权协议—允许后者使用自家移动产品技术。 Silicon Hive的CEO Atul Sinha表示:“能和Intel这样的优秀的合作伙伴一起工作,共同努力将我们的并行计算技术融合到...
PHPWEB可免费用于非商业用途,无需购买授权,直接安装使用。商业用户可以购买各种行业模板、扩展模块和官方支持服务。 PHPWEB V1.1.0 集成了基础模块、图文模块、产品展示模块、新闻文章模块、图片展示模块、文件...
1. Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。具体请查阅官网 2. 需要安装的包(基于centos) yum install libsasl2-dev yum install gcc-c++ python-devel.x86...
Hue(图形化用户界面)基本简介 Hue(图形化用户界面)官方版是运营和开发Hadoop应用的图形化用户界面。Hue程序被整合到一个类似桌面的环境,以web程序的形式发布,对于单独的用户来说... 基于Hive编辑器来开发和运行Hive
➢PANDAS:Pandas是BSD授权的开源Python库,为Python编程方言提供了精巧,易于使用的信息结构和信息检查设备。 带有Pandas的Python被用作广泛领域的一部分,包括学术和商业领域,包括资金,财务,统计,调查等。 ➢...
Apache Ranger 支持以下HDP组件的验证、授权、审计、数据加密、安全管理: Apache Hadoop HDFS Apache Hive Apache HBase Apache Storm Apache Knox Apache Solr Apache Kafka YARN
由思科全力支持,适用于内部多用户免费、开源、基于Apache协议授权基于高可扩展平台(Hadoop、Kafka、Storm)实现基于可扩展的插件式设计具有灵活的部署模式,可在企业内部部署或者云端部署具有集中化的管理流程、...
4.开放源码,采用apache2.0开源协议,用户可任意使用而不需我公司授权(标准版除外)。1.数据源 (支持:mysql/oracle/sqlserver/db2/postgre 2.多维分析3.数据报表4.移动BI5.权限管理数据多维分析数据可视化APP访问...
Apache Ranger提供一个集中式安全管理框架, 并解决授权和审计。它可以对Hadoop生态的组件如HDFS、Yarn、Hive、Hbase等进行细粒度的数据访问控制。通过操作Ranger控制台,管理员可以轻松的通过配置策略来控制用户访问...
Apache Sentry是Cloudera公司发布的一个Hadoop开源组件,截止目前还是Apache的孵化项目,它提供了细粒度级、基于角色的授权以及多租户的管理模式。Sentry当前可以和Hive/Hcatalog、Apache Solr 和Cloudera Impala...
4.开放源码,采用apache2.0开源协议,用户可任意使用而不需我公司授权(企业版除外)。 # 系统功能: 1.数据建模 (支持:mysql/oracle/sqlserver/db2/postgresql/hive/kylin) 2.多维分析 3.数据...
MLSQL需要面对各式各样的资源访问,比如MySQL, Oracle,HDFS,Hive,Kafka,Sorl,ElasticSearch,Redis,API,Web等等,不同用户对这些数据源(以及表,列)的权限是不一样的。 传统模式是,每个用户都需要有个proxy ...
本教程为授权出品 一、课程简介数据仓库(Data Warehouse,可简写为DW或DWH),是面向分析的集成化数据环境,为企业决策制定过程,提供系统数据支持的战略集合,是国内外各大公司正在重点投入的战略级技术领域。 ...
本教程为授权出品作品 HBase是一个基于HDFS的分布式、面向列的开源数据库,是一个结构化数据的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。是每一个大数据都应该掌握的基本框架...