Service Level Authorization
<property> <name>hadoop.security.authorization</name> <value>true</value> <description>Is service-level authorization enabled?</description> </property>
设置好后,就开启了Hadoop的service-level authorization,这个生效需要重新启动NameNode节点(其他的节点不需要重启)
在Hadoop 2.x版本中Service LevelAuthorization有10个可配置的属性,每个属性可指定拥有相应访问权限的用户或者用户组。每个属性描述如下:
$HADOOP_CONF_DIR/hadoop-policy.xml中的上述10个属性分别是用来控制不同服务的访问权限的。每个属性的值需要遵守一定的格式:每个可配置多个用户,用户之间用“,”分割;同时也可配置多个用户组,分组之间用“,”分割,用户和分组之间用空格分割,比如:Example: user1,user2 group1,group2。如果只有分组,需要在分组前面保留一个空格。如果这个值是*,这说明所有的用户都可以访问相应的服务。
下面举几个例子来说明:
(1)、如果只允许某个用户或者某个组内的所有用户提交Mapreduce任务,可以配置如下:
<property> <name>security.job.submission.protocol.acl</name> <value>alice,bob mapreduce</value> </property>
(2)、如果只运行属于某个组内的用户运行DataNode来和NameNode进行通信,可以使用下面配置实现
<property> <name>security.datanode.protocol.acl</name> <value> datanodes</value> </property>
(3)、运行所有的用户访问集群上的HDFS,可以使用下面配置实现
<property> <name>security.client.protocol.acl</name> <value>*</value> </property>
对关于访问NameNode或者JobTracker的service-level authorization修改,不需要重启相应的守护进程,但是集群管理员需要通过下面的命令来加载已经修改的配置:如果修改了有关NameNode的服务配置,可以用下面的命令来动态加载
$ bin/hdfs dfsadmin -refreshServiceAcl
如果修改了有关JobTracker的服务配置,可以用下面的命令来动态加载
$ bin/hdfs mradmin -refreshServiceAcl
翻译自:《Service Level Authorization Guide》
本博客文章除特别声明,全部都是原创!