cdh用户权限_CDH6.3.2之Sentry权限管理(三)

本文详细介绍了Apache Sentry在CDH集群中的应用,如何部署Sentry服务,启动Hive的Sentry权限管理,启用HDFS ACL与Sentry同步,以及通过HUE和Hive语句进行Sentry授权管理。Sentry提供对Hadoop数据的细粒度权限控制,确保了数据安全性。
摘要由CSDN通过智能技术生成

01

PART

Sentry概述

        Apache Sentry是一个可以对Hadoop集群中的数据及元数据进行细粒度管理的权限管理系统。Sentry目前可以与ApacheHive,HiveMetastore / HCatalog,Apache Solr,Impala和HDFS(仅限于Hive表数据)等进行集成,对其数据进行权限管理。

02

PART

部署Sentry服务

1.在CDH集群添加Sentry服务

805314a2a7c8145d0ee143037c90d0cb.png

22f87b2f0e41d9a8f13083dba08e4b5d.png

2.自定义Sentry角色分配

cfb2bb73cbd4b120a21b6d9a681aeec3.png

3.测试Sentry数据库连接(需提前为Sentry服务准备好数据库)

2da715cb7a0cb51c11a68d876bafd662.png

4.Sentry部署启动完成

f9cfaa9ccddedfbaf66b65f1397330db.png

03

PART

Hive启动Sentry权限管理

   为Hive启动Sentry权限管理之后,可以使用Sentry对Hive中的表进行列级别的细粒度权限控制。需要说明的是,只有Hiveserver2支持Sentry插件,故若想对Hive中的表作权限管理,只能使用beeline客户端。对于Hive CLI,可将hive脚本的执行权限做出限定,只保留hive用户(Hive系统用户)对它的执行权限。

1.取消HiveServer2用户模拟

在hive配置项中搜索“HiveServer2 启用模拟”,取消勾选

e0969a3a802931c81f5dc9c03fdb4498.png

2.在Hive配置项中搜索启用数据库中的存储通知,勾选。

f8b54b3b85d43aa5de4ca9ac821ab2f9.png

3.在Hive配置项中搜索Sentry,勾选Sentry。

ebb9ca7d6f6dbc654a812c0ca8eed524.png

4.重启相关服务

04

PART

启用HDFS ACL与Sentry同步

   启用HDFS ACL与Sentry同步之后,Sentry会将对Hive中数据库和表的访问权限同步映射到该表对应的HDFS的文件上。如不开启同步,则可能会出现,某个用户对Hive中的某张表无访问权限,但是对该表在HDFS上文件具有访问权限的问题,故推荐开启HDFS ACL与Sentry同步。需要说明的是,该同步只对Hive中的数据库和表在HDFS上的路径生效,HDFS其余路径的ACL不受影响。

1.在HDFS配置项中搜索启用访问控制列表,勾选。

d096d794a6c1d65999e7f737b20eae02.png

2.在HDFS配置项中搜索Sentry,并做以下两项配置

1)勾选启用Sentry同步

2)填写Sentry 同步路径,此处应填写hive数仓根目录,默认为/user/hive/warehouse

1afe9a826783f1d7fd31f05b4a04e570.png

05

PART

Sentry授权管理实操

1.Sentry基础概念

object:受保护的对象,例如Hive中的一张表test_table

privilege:对object的访问权限,例如对test_table的读权限

role:角色(privilege的集合),例如数仓开发人员(对test_tbl的读与写权限)

user:用户,例如张三

group:user的集合,例如大数据离线数仓开发组

2.Sentry使用

   使用Sentry进行权限管理,可通过两种方式进行。一是使用在Hive中的授权语句进行授权,二是使用HUE中集成的Sentry插件进行可视化操作。

1)Sentry授权之HUE

(1)HUE集成Sentry

在HUE配置项中搜索Sentry,勾选Sentry。

3f6d98ca472f05c66179f5aa61a09470.png

(2)重启相关服务

(3)在HUE中创建Hive服务的系统用户,默认为hive,并赋予hive用户在HUE中使用Sentry插件的权限。使用hive用户登录,并使用hive用户为其他普通用户授权权限。

fd2de63900b93b4f3c95ce496767fa8f.png

(4)打开Sentry插件

036015cd429ac971e86703703832680f.png

(5)初始状态任何用户对Hive中的表都没有任何权限,包括系统用户hive,故需要首先为hive用户赋予超级权限,即对所有库和表的所有权限。

80daa5cde394f20c57f48ec6391f2916.png

20ef944d05480d0e7b688bd0f76e2381.png

(6)为普通用户分配权限

   此处演示为,为test用户授予对test_db数据库下的test_table表的读权限。

   需要注意的是,在使用HUE中的Sentry插件对普通授予Hive的访问权限时,需要保证Hiveserver2所在的服务器中,也要具有同名同组的系统用户。

2d178a6b8accdf36eee78b9ae1552159.png

196aabc8585fc84620b3004f73b44c8e.png

(7)测试

使用test用户登录HUE,使用Hive Editor查询test_da.test_table,结果显示能够查询。

b47f7580f96652bc1da4572269a9a02b.png

尝试往该表写入,结果显示没有权限。

09175210bcf9277501274f10aa2656f2.png

2)Sentry授权之Hive语句

   登录Beeline客户端,可通过以下授权语句进行授权操作。需要注意的是,当集群开启Kerberos之后,登录beeline客户端,需先经过Kerberos认证。例如,想以hive的身份登录beeline客户端,则需执行kinit hive/hive@EXAMPLE.COM命令,并输入密码,访客登录beeline客户端。关于Kerberos相关内容,可参考CDH6.3.2之Kerberos安全认证(二)

(1)创建Role

create role test_role;

(2)为role赋予privilege

GRANT select ON DATABASE test_db TO ROLE test_role;

(3)将role授予用户组

GRANT ROLE test_role TO GROUP test;

(4)查看权限授予情况

  查看所有role(管理员)

SHOW ROLES;

  查看指定用户组的role(管理员)

SHOW ROLE GRANT GROUP test;

  查看当前认证用户的role

SHOW CURRENT ROLES;

  查看指定ROLE的具体权限(管理员)

SHOW GRANT ROLE test_role;

扫码入群和大佬们一起讨论技术

d93242836215ee3e733025b6a0cf09e6.png

该公众号开源为大家解决大数据企业级遇到的各种问题,也欢迎各位大佬积极加入开源共享(共同面对大数据领域各种老大难问题)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值