概述
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平台自己的权限。
最后
以上就是机智胡萝卜为你收集整理的hadoop安全认证服务的全部内容,希望文章能够帮你解决hadoop安全认证服务所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复