cvmachine.com - 申博开户网

查找: 您的方位主页 > 电脑频道 > 电脑教程 > 阅览资讯:Hive之——安全

Hive之——安全

2019-03-28 07:44:27 来历:www.cvmachine.com 【

转载请注明出处:https://blog.csdn.net/l1028386804/article/details/88648094

和Hadoop安全功用相结合

Hive v0.70增加了和Hadoop安全功用的结合,这意味着,当Hive提交到安全集群的JobTracker上时,将运用适宜的认证处理进程。用户权限能够被颁发也能够被收回。

运用Hive进行验证

假如文件和文件夹是多个用户一起具有,那么文件的权限就变得十分重要。HDFS中文件目录权限和Unix中的方式十分相似,都包括有3层:用户、组和其他。一起具有3种权限:可读、可写和可履行。Hive中有一个装备变量hive.files.umask.value来界说关于新创立的文件设置的默许权限的umask值,也便是掩码字节数。

<property>
<name>hive.files.umask.value</name>
<value>0002</value>
</property>

一起,当特点hive.metastore.authorization.storage.checks的值为true时,假如用户没有权限删去表底层的文件,Hive就会阻挠用户来删去这样的表。这个参数的默许值是false。其应该设置为true的:

<property>
<name>hive.metastore.authorization.storage.checks</name>
<value>true</value>
</property>

当在安全方式下履行时,Hive元数据存储要尽或许的将hive.metastore.execute.setugi设置为true。

<property>
<name>hive.metastore.execute.setugi</name>
<value>false</value>
</property>

Hive中的权限办理

Hive v0.7.0增加了HiveQL进行授权设置的功用。默许授权模块是不敞开的,需求将如下的特点设置为true,才干敞开授权:

<property>
<name>hive.security.authorization.enabled</name>
<value>true</value>
</property>

<property>
<name>hive.security.authorization.createtable.owner.grants</name>
<value>ALL</value>
</property>

默许状况下,hive.security.authorization.createtable.owner.grants的值是null,这使得用户无法拜访自己的表,因而,咱们也要给予表创立者对应的权限才干拜访自己创立的表。

用户、组和人物

能够对用户(user)、组(group)、或许人物(role)颁发权限或许收回权限。

hive> set hive.security.authorization.enabled=true;
hive> create table authorization_test(key int, value string); --->会报权限过错

咱们运用的用户没有在default数据库下创立表的权限。咱们能够对多个实体进行授权。第一个实体便是用户(user),Hive中的用户便是用户的体系用户名。咱们能够确认其称号,并依照如下句子将在default数据库下的创立表(create)权限颁发这个用户:

hive> set system:user.name;
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;
databasedefault
principalName    edward
principalType    USER
privilegeCreate
grantTimeMon Mar 18 17:37:00 EDT 2019
grantoredward

能够根据组等级授权,Hive中组和用户的住POSIX组是等价的。

hive> create table authorization_test_group(a int, b int);
hive> select * from authorization_test_group;----> 权限反常
hive> grant select on table authorization_test_group to group edward;
hive> select * from authorization_test_group;

也能够运用人物(role)。用户能够放置在人物中一起能够为人物进行授权。人物联络灵敏,由于和组不一样,组由体系外部操控,人物是由Hive内部操控:

hive> create table authorization_test_role(a int, b int);
hive> select * from authorization_test_role;----> 权限反常
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 authorization_test_role to role users_who_can_select_authentication_test_role;
hive> select * from authorization_test_role;

Grant和Revoke权限

权限    描绘
ALL赋予一切的权限
ALTER有修正表结构的权限
CREATE有创立表的权限
DROP有删去表或表中的分区权限
INDEX创立表索引的权限
LOCK敞开并发后,确定宽和确定表的权限
SELECT查询表或许分区中数据的权限
SHOW DATABASE    检查一切数据库的权限
UPDATE向表或许分区中刺进或加载数据的权限

以create权限为例:

hive> set hive.security.authorization.enabled=true;
hive> create database edsstuff;
hive> use edsstuff;
hive> create table a (id int);--->权限反常
hive> grant create on database edsstuff to user edward;
hive> create table a (id int);
hive> create external table a (id int);

相同,咱们能够经过如下命名颁发ALTER权限:

hive> alter table a replace columns(a int, b int); --->权限反常
hive> grant alter on table a to user edward;
hive> alter table a replace columns(a int, b int);

留意:为分区表新增分区的操作是不需求alter权限的:

hive> alter table a_part_table add partition(b=5);

往表中加载数据的话需求运用UPDATE权限:

hive> load data inpath '${env:HIVE_HOME}/NOTICE' into table a_part_table partition(b=5);---> 权限反常
hive> grant update on table a_part_table to user edward;
hive> load data inpath '${env:HIVE_HOME}/NOTICE' into table a_part_table partition(b=5);

删去表或许分区需求drop权限:

hive> alter table a_part_table drop partition(b=5);--->权限反常

从表或许分区中查询数据需求select权限

hive> select id from a_part_table;--->权限反常
hive> grant select on table a_part_table to user edward;
hive> select id from a_part_table;

颁发悉数的权限:

hive> grant all on table a_part_table to user edward;

分区等级的权限

Hive中分区表十分常见。默许是在表等级颁发权限,不过,相同能够在分区等级进行授权。为到达这个方针,只需求将表特点PARTITION_LEVEL_PRIVILEGE设置为TRUE即可:

hive> create table authorize_part(key int, value string) partitioned by (ds string);
hive> alter table authorize_part set tblproperties("PARTITION_LEVEL_PRIVILEGE"="TRUE");--->权限反常
hive> grant alter on table authorize_part to user edward;
hive> alter table authorize_part set tblproperties("PARTITION_LEVEL_PRIVILEGE"="TRUE");
hive> grant select on table authorize_part to user edward;
hive> alter table authorize_part add partition(ds='3');
hive> alter table authorize_part add partition(ds='4');
hive> select * from authorize_part where ds = '3';
hive> revoke select on table authorize_part partition(ds='3') from user edward; 
hive> select * from authorize_part where ds = '3';--->权限反常
hive> select * from authorize_part where ds = '4';

主动授权

用户常常会希望创立表后不再履行烦人的授权指令,就能够具有相关的权限,而直接去履行后续的查询等等。前期,用户或许需求具有ALL权限才干够,不过现在为默许状况拟定更细节的权限。
特点hive.security.authorization.createtable.owner.grants中能够界说为创立表的用户主动颁发这张表的指定的权限。比方下面的比方为用户主动颁发对其所创立表的表的select和drop权限:

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

相似的,能够在创立表时主动颁发指定用户指定的权限。特点hive.security.authorization.createtable.user.grants操控这个行为。
比方下面的比方展现了Hive办理员账号admin1和用户edward默许颁发一切表的读权限,而user1只要创立表的权限。

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

关于组(group)和人物(role)相同具有相似的特点来操控主动颁发的权限。关于组,该特点名为hive.security.authorization.createtable.group.grants;关于人物,这个特点是hive.security.authorization.createtable.role.grants。这些特点的值的方式和前面介绍的是相同的。

 

 
 

本文地址:http://www.cvmachine.com/dnjc/99783.html
Tags: 安全 Hive 注明
修改:申博开户网
关于咱们 | 联络咱们 | 友情链接 | 网站地图 | Sitemap | App | 回来顶部