cm6.2配置sentry

基于cloudera-manager6.2部署sentry

系统:centos 6.8

因为我是本地电脑开的几个虚拟机,为了减少内存,我把监控服务停了,报黄都可以忽略,服务器上都是正常绿色的。

 

首先开启kerberos

kerberos安装看https://blog.csdn.net/qq_35315256/article/details/103678473

根据提示一步一步进行,需要首先创建cloudera-scm/admin主体

1、添加sentry服务,根据提示一步一步添加完成

 

重要:
如果在非安全群集中启用了YARN Resource Manager HA,则在启用Kerberos之前,必须清除ZooKeeper中的StateStore znode,如下所示:

转到Cloudera Manager管理控制台主页,单击YARN服务右侧的,然后选择停止。
当您看到“ 完成”状态时,该服务已停止。
转到YARN服务,然后选择“ 操作” >“ 格式化状态存储”。
命令完成后,单击“ 关闭”。

2、修改配置

我就有以下基本的服务,没有配置任何ha,也没有zk,只是为了配置sentry

先配置hdfs

hive外部表需要在hdfs创建如下图目录,权限需要修改为hive:hive,hive的外部数据全部存到这,位置可以随便写 

然后是hive

 

然后是yarn

这里还需要设置一下最小提交用户的id,默认是1000,修改一下限制为0

参数是:min.user.id

最后是sentry

最后重启服务

 

 

到此位置,hive认证鉴权配置完成,开始验证

 

3、命令行配置hive权限

先介绍几个kerberos的基本命令

kdestroy # 注销登录
kinit admin/admin # 登陆
klist # 查看当前登陆用户

kadmin.local 登陆本地数据库

list_principals # 查看存在的主体
addprinc test/test # 增加主体

3.1、增加sentry主体,是hive管理员

addprinc hive/hive # 作为管理员,必须是这个,我这里没有写域名是因为我默认的就加了,在kerberos配置过 

beeline客户端连接 

beeline -u "jdbc:hive2://node1:10000/;principal=hive/node1@HADOOP.COM"

是这样的,linux用户要和主体用户对应,例如,linux用户/用户组 对应 主体admin/admin,如果配置hue,需要也和hue用户对应.

3.1.1、给hive/hive超级管理员权限

create role admin;
grant all on server server1 to role admin;
grant role admin to group hive;

 

3.2、连接成功开始表演

show roles # 查看角色

3.2.0、创建主体

addprinc reader/reader
addprinc writer/writer

3.2.1、创建角色

create role reader;
create role writer;

3.2.2、为role赋予privilege

grant select on database testdb to role reader;
grant insert on database testdb to role writer;

3.2.3、把role授予用户组

grant role reader to group reader;
grant role writer to group writer;

3.2.4、测试

kdestroy # 注销之前用户,当然也可以直接kinit
kinit reader/reader
klist # 查看一下是不是reader用户
# 然后beeline登陆
beeline -u "jdbc:hive2://node1:10000/;principal=hive/node1@HADOOP.COM"
# 然后测试就好了

3.2.5、sentry可以控制库、表、甚至表的列。

还有简单配置的方法就是在hue中配置,网上有很多教程,可以查看一下

 

Sentry不支持Hive cli列权限管理,建议禁用Hive cli。也不支持SparkSql列权限管理

 

4、测试,本人实测

4.1、删除角色

drop role role_name; # 删除角色

4.2、把stu表的name列权限授予角色writer

grant select(name) on table test.stu to role writer;
# 这里的表前面也写上库,要不然默认是default库
# 查询的时候,写上有权限的列

4.3、查看writer角色在数据库test中的权限

show  grant role writer on database test;

4.4、查看writer角色在表stu中的权限

show grant role writer on table test.stu;

4.5、把role赋予用户reader

GRANT ROLE reader TO USER reader;

Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Sentry does not allow privileges to be granted/revoked to/from: USER (state=08S01,code=1)

我的是cdh6.2 可能已经不支持授予给user了

4.6、把role赋予用户组reader

GRANT ROLE reader TO group reader;

4.7、查看用户、用户组下的权限

SHOW ROLE GRANT USER reader;
SHOW ROLE GRANT group reader;

4.8、查询某个role下的权限

SHOW GRANT ROLE writer;

4.9.1、回收某个角色对数据库的select权限

REVOKE SELECT ON DATABASE db_name FROM ROLE role_name;

4.9.2、回收writer角色对stu这张表id这个列的select权限

revoke select(id) on test.stu  from role writer;  

4.9.3、回收writer组下的writer角色

revoke role writer FROM group writer;
# 语法
REVOKE ROLE role_name [, role_name]  FROM GROUP (groupName) [,GROUP (groupName)

5、常见问题

1、 

Requested user deng_yb is not whitelisted and has id 501,whichis below the minimum allowed 1000

那是因为Yarn限制了用户id小于1000的用户提交作业;

2、hdfs提交mr任务

Diagnostics: Application application_1528344974377_0009 initialization failed (exitCode=255) with output: main : command provided 0
main : run as user is hdfs
main : requested yarn user is hdfs
Requested user hdfs is banned

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值