hadoop权限控制之kerberos

cdh版本的hadoop在对数据安全上的处理通常采用Kerberos+Sentry的结构。
kerberos主要负责平台用户的权限管理,sentry则负责数据的权限管理。

下面我们来依次了解一下:
Kerberos包含一个中心节点和若干从节点,所有节点的Kerberos认证信息都要与中心节点的规则配置文件/etc/krb5.conf保持一致。安全认证均需通过中心节点,配置了安全认证的用户可以登录到集群内的 机器。
Kerberos的配置文件有两个:
1、/var/kerberos/krb5kdc/kdc.conf:包括KDC的配置信息。默认放在 /usr/local/var/krb5kdc。或者通过覆盖KRB5_KDC_PROFILE环境变量修改配置文件位置。
2、/etc/krb5.conf:包含Kerberos的配置信息
Kerberos的管理对象称为principal(规则), 与HDFS中的用户一一对应。一般我们将hdfs设置为principal的管理员,它可以创建删除其他的principal,还可以生成其他成员的keytab。keytab是每个principal对应的密钥文件,当kerberos认证使用keytab时,可以不需要输入密码,类似于SSH的信任机制。
当我们配置Kerberos的时候,系统会默认生成用户,格式一般为【用户名/hostname@domain_name】,一般情况下我们使用自己定义的用户,不要对系统生成的用户加以修改。
输入kadmin.local 进入Kerberos的交互命令行。
生成keytab: xst –k testuser.keytab testuser@HTHADOOP.COM,将对应的keytab拷贝至其他位置或服务器,则相应的节点则可以通过testuser的principal连接进HDFS.
登录到管理员账户: 如果在本机上,可以通过kadmin.local直接登录。其它机器的,先使用kinit进行验证。
kadmin.local  kinit admin/adminkadmin
增删改查账户:在管理员的状态下使用addprinc,delprinc,modprinc,listprincs命令。使用?可以列出所有的命令。
kamdin:addprinc -randkey hdfs/hadoop1kamdin:delprinc hdfs/hadoop1kamdin:listprincs命令
生成keytab:使用xst命令或者ktadd命令
kadmin:xst -k /xxx/xxx/kerberos.keytab hdfs/hadoop1
创建一个新的principal: addprinc testuser@HADOOP.COM,并输入密码
用户操作
查看当前的认证用户:klist
认证用户:kinit -kt /xx/xx/kerberos.keytab hdfs/hadoop1
删除当前的认证的缓存: kdestroy

Apache Sentry的目标是实现授权管理,它是一个策略引擎,被数据处理工具用来验证访问权限。它也是一个高度扩展的模块,可以支持任何的数据模型。当前,它支持Apache Hive和Cloudera Impala的关系数据模型,对hue的数据权限控制也有应用。
Sentry的管理对象有三个,数据库,角色,和组。数据库是在hive中创建的数据库,角色在impala中创建,而组是操作系统的用户组。
Sentry的权限管理操作,都通过impala语句完成。只有启动了sentry服务,impala服务才能正常运行。
使用impala-shell进入交互终端:
show roles列出所有的角色
show databases列出所有的数据库
create role test_role创建角色
drop role test_role删除角色
可以直接输入show命令会提示可以跟接的关键字
grant all on database ana_clientact to role admin_role 将一个数据库赋权给一个角色
revoke all on database from role admin_role取消权限
如果数据库中的是外部表,需要同时给角色赋予uri权限:
grant all on uri 'hdfs://192.168.2.121:8020/mydata' to role admin_role
列出某角色的权限:show grant role admin_role
将角色赋给一个组:grant role admin_role to group hive
完成以上操作以后,用户组即具有了相应数据库的操作权限。此时需要执行invalidate metadata操作,才会生效。
当一个新的操作系统用户加入这个用户组,用户即具有对应的数据库权限。反之,将用户从这个组中去掉,用户对数据库的操作权限即消失。
新建用户组时要保证集群内组和用户保持一致。

在HUE中配置权限
在HUE中,用户的权限是分为两个层次实现的,一个层次是HUE平台各模块的权限,这个通过HUE中组和权限实现的,另一个层次是HUE访问hive,impala数据库的权限,这个和sentry是统一的,HUE中的用户和操作系统中的用户一一映射,HUE通过寻找相同用户名的操作系统用户来确定对应的sentry权限。
这里需要注意一点,HUE中的组和操作系统的组没有关系,HUE中的组只绑定HUE平台自己的权限。
--------------------- 
版权声明:本文为CSDN博主「wx740851326」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wx740851326/article/details/80832565

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值