Hadoop 服务安全授权说明

曾经我在Hadoop的历史版本上对UGI进行过代码更改,按照UGI,IP映射来确定哪些用户可以访问Hadoop的服务。最近在给一个客户看需求的时候,看到了Hadoop本身是提供这一个服务的,并且做得很细,不得不说Hadoop做得真是包罗万象,事无巨细。
这个需求是用户需要对自己的集群进行把控,防止一些无关的请求拉取数据,防止恶意攻击。
在Hadoop common模块是有专门模块https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/ServiceLevelAuth.html 来做这个事情。
首先需要设置 $HADOOP_CONF_DIR/core-site.xml设置hadoop.security.authorization 为true,打开hadoop 安全认证。随后配置$HADOOP_CONF_DIR/hadoop-policy.xml

这里面可以配置非常多的服务,对应了Hadoop的各种接口(protocol),加入我要设置Client访问HDFS的限制,只要设置

 <property>
    <name>security.client.protocol.acl</name>
    <value>test_user hadoop</value>
    <description>ACL for ClientProtocol, which is used by user code
    via the DistributedFileSystem.
    The ACL is a comma-separated list of user and group names. The user and
    group list is separated by a blank. For e.g. "alice,bob users,wheel".
    A special value of "*" means all users are allowed.</description>
  </property>

  <property>
    <name>security.client.protocol.hosts</name>
    <value>192.168.0.0/24</value>
  </property>

    <property>
    <name>security.client.protocol.hosts.blocked</name>
    <value>192.168.0.10</value>
  </property>

这里面我设置了允许user为test_user, group是hadoop的用户通过DFSClient访问HDFS。并且限定了IP范围是192.168.0网段,但是限制192.168.0.10不能访问。
其他的服务接口也是这么配置,只要设置好name,最后加入hosts和hosts.blocked就可以限制ip访问。

Print Friendly

jiang yu

Leave a Reply