如下图,hadoop访问控制分为两级,其中ServiceLevel Authorization为系统级,用于控制是否可以访问指定的服务,例如用户/组是否可以向集群提交Job,它是最基础的访问控制,优先于文件权限和mapred队列权限验证。Access Control on Job Queues在job调度策略层之上,控制mapred队列的权限。DFSPermmision用户控制文件权限。目前版本中,连接到hadoop集群的用户/组信息取决于客户端环境,即客户端主机中`whoami`和`bash
–c groups`取到的用户名和组名,没有uid和gid,用户属组列表中只要有一个与集群配置的用户组相同即拥有该组权限。
1、 配置 Service Level Authorization
修改core-site.xml
<property>
<name>hadoop.security.authorization</name>
<value>true</value>
</property>
hadoop.security.authorization=true则开启ServiceLevel Authorization,若为false则不经过任何验证,所有用户拥有全部权限。(修改此配置需要重启hadoop)
Service LevelAuthorization有9个可配置的属性,每个属性可指定拥有相应访问权限的用户或者用户组。这9个ACL属性如下(hadoop-policy.xml):
这9个属性的配置方法相同,具体如下:
每个可配置多个用户,用户之间用“,”分割;可配置多个用户组,分组之间用“,”分割,用户和分组之间用空格分割,如果只有分组,前面保留一个空格,如:
<property>
<name>security.job.submission.protocol.acl</name>
<value>alice,bobgroup1,group2</value>
</property>
默认情况下,这9个属性不对任何用户和分组开放。
该配置文件可使用以下命令动态加载:
(1) 更新namenode相关属性:bin/hadoop dfsadmin –refreshServiceAcl
(2) 更新jobtracker相关属性:bin/hadoopmradmin –refreshServiceAcl
2、 调度器配置
修改mapred-site.xml
<property>
<name>mapred.jobtracker.taskScheduler</name>
<value>org.apache.hadoop.mapred.CapacityTaskScheduler</value>
</property>
启用Access Contol onJob Queues需选择一个支持多队列管理的调度器,所以mapred.jobtracker.taskScheduler只能为CapacityTaskScheduler或FairScheduler。
在mapred-site.xml里配置队列,如:
<property>
<name>mapred.queue.names</name>
<value>default,hadoop,stat,query</value>
</property>
3、 Access Contol on JobQueues配置
Access Contol on Job Queues开关在mapred-site.xml,如下:
<property>
<name>mapred.acls.enabled</name>
<value>true</value>
</property>
mapred.acls.enabled=true开启,为false关闭。
具体ACL属性在mapred-queue-acl.xml里,如:
<property>
<name>mapred.queue.stat.acl-submit-job</name>
<value>user1,user2 group1,group2</value>
</property>
表示user1,user2和group1,group2可以向stat queue提交job。
4、 DFS permission配置
修改hdfs-site.xml
<property>
<name> dfspermission </name>
<value>true</value>
</property>
dfs.permission是否开启文件权限验证,true开启,false不进行读写权限验证。(注:dfs.permission开启与否dfs permission信息都不会改变后丢失,chown、chgrp、chmod操作也始终会验证权限,dfspermission信息只在namenode里,并不在danode里与blocks关联)
用chown、chgrp、chmod修改文件/目录的属主、属组和权限。
补:Job ACL
Job ACL默认值配置在mapred-site.xml里,如下:
<property>
<name>mapreduce.job.acl-view-job</name>
<value>user1</value>
</property>
<property>
<name>mapreduce.job.acl-modify-job</name>
<value>user1</value>
</property>表示,默认情况下,user1用户拥有job的查看和修改权限。 Job提交者可以指定mapreduce.job.acl-view-job和mapreduce.job.acl-modify-job值,提交时指定的值会覆盖默认值。
Job提交者、superuser、集群管理员(mapreduce.cluster.administrators)、JobQueue管理员始终拥有该权限。
参考资料:
《Service Level Authorization Guide》
《Cluster Setup》
《HDFS Permissions Guide》
《hadoop权限管理》
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com