如下圖,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管理員始終擁有該權限。
轉自 http://blog.csdn.net/cheersu/article/details/8080162
參考資料:
《Service Level Authorization Guide》