问题导读
1.hadoop默认是否启用服务级别授权?
2.访问控制列表该如何配置?
3.访问控制列表的格式是什么?
4.如何刷新服务级别授权配置?是否需要重启?
目的
这个文档描述了怎么配置和管理hadoop 服务级别授权
准备
确保hadoop安装,配置和设置正确。更多信息查看:
hadoop2.7【单节点】单机、伪分布、分布式安装指导
http://www.aboutyun.com/thread-12798-1-1.html
hadoop(2.x)以hadoop2.2为例完全分布式最新高可靠安装文档
http://www.aboutyun.com/thread-7684-1-1.html
概述
服务级授权是初始化授权机制,确保客户端连接指定的hadoop服务,预配置,权限和授权访问给定的服务。例子,一个mapreduce集群可以使用这种机制,允许配置用户/组列表提交jobs。这个$HADOOP_CONF_DIR/hadoop-policy.xml配置文件用于定义访问控制hadoop服务变量列表。
服务级别授权比以前执行许多,其它访问控制检查,比如文件权限检查,job队列访问控制等。
配置
这一部分描述了如何通过配置文件 $HADOOP_CONF_DIR/hadoop-policy.xml配置服务级别授权
启用服务级别授权
默认,服务级别授权hadoop是禁用的.在$HADOOP_CONF_DIR/core-site.xml中设置配置属性hadoop.security.authorization为true,启用服务级别授权
hadoop服务和配置属性
这部分列出了不同的hadoop服务和它们的knobs配置
属性 | 服务 | security.client.protocol.acl | 客户端协议 ACL 用于用户代码通过DistributedFileSystem. | security.client.datanode.protocol.acl | ClientDatanodeProtocol ACL , datanode客户端协议用于block 恢复. | security.datanode.protocol.acl | DatanodeProtocol ACL, 用于 datanodes与namenode通信. | security.inter.datanode.protocol.acl | InterDatanodeProtocol ACL, datanode之间协议,用于更新时间戳 | security.namenode.protocol.acl | NamenodeProtocol ACL , 这个协议用于secondary namenode与namenode通信 | security.job.client.protocol.acl | JobSubmissionProtocol ACL, 用于作业提交,job客户端与resourcemanager通信 , 查询 job 状态等. | security.job.task.protocol.acl | TaskUmbilicalProtocol ACL , 用于map任何与reduce任务与父nodemanager通信 | security.refresh.policy.protocol.acl | RefreshAuthorizationPolicyProtocol ACL, 用于 dfsadmin 和 rmadmin 命令 刷新安全策略 | security.ha.service.protocol.acl | HAService ACL用于HAAdmin 管理namenode的 active 和 stand-by 状态 |
访问控制列表
$HADOOP_CONF_DIR/hadoop-policy.xml定义了每个hadoop服务访问控制列表。每个访问控制列表有一个简单的格式:
用户和组的列表是逗号分隔的名称列表。这两者是由一个空格隔开的。
例子:
[mw_shl_code=bash,true] user1,user2 group1,group2.[/mw_shl_code]
在该行的开始处添加一个空白,如果只提供组列表,等效于一个逗号分隔用户列表后跟一个空格或则什么也没有暗示仅仅一组给定的用户。
给定值*暗示所有用户允许访问服务。如果访问控制列表没有定义,那么使用 security.service.authorization.default.acl的值。
如果security.service.authorization.default.acl 没有定义,使用*.
Blocked访问控制列表在某些情况下,它需要指定一个服务的blocked 访问控制列表。这个指定的用户和组的列表,没有授权访问服务。blocked访问控制列表格式与上面访问控制列表格式相同。blocked访问控制列表由$HADOOP_CONF_DIR/hadoop-policy.xml指定。这个属性名字起源于后缀 “.blocked”.
例子:blocked的属性名访问控制列表 security.client.protocol.acl>> 将会是<<<security.client.protocol.acl.blocked
对于一个服务,可以指定访问控制列表和blocked的控制列表。如果一个用户在访问控制列表,不在blocked 访问控制列表,此用户被授权,可以访问服务。
如果blocked 访问控制列表没有定义一个服务, 使用security.service.authorization.default.acl.blocked 的值,如果security.service.authorization.default.acl.blocked没有定义,使用空blocked访问控制列表
刷新服务级别授权配置
NameNode 和 ResourceManager服务级别授权配置可以在没有重启hadoop master守护进程的情况下改变。集群管理员可以改变master 节点上的 $HADOOP_CONF_DIR/hadoop-policy.xml文件和使 NameNode 和 ResourceManager 重新加载各自的配置通过 -refreshServiceAcl 切换到各自dfsadmin 和 rmadmin 命令。刷新NameNode服务级别授权配置
[mw_shl_code=bash,true] $ bin/hdfs dfsadmin -refreshServiceAcl[/mw_shl_code]
刷新ResourceManager服务级别授权配置
[mw_shl_code=bash,true] $ bin/yarn rmadmin -refreshServiceAcl[/mw_shl_code]
当然,可以使用 $HADOOP_CONF_DIR/hadoop-policy.xml中security.refresh.policy.protocol.acl 属性限制有能力刷新服务级别授权配置的某些用户/组。
使用ip地址列表,host名称,和ip地址范围访问控制服务,访问服务控制基于客户端ip地址访问服务。可以限制对服务的访问从一组机器通过指定一个ip地址列表, host 名称 和 ip 范围. 每一个服务的属性名称是来自相应的ACL属性名称。如果acl属性名是security.client.protocol.acl, host列表属性名将是 security.client.protocol.hosts .如果hosts列表没有定义一个服务,则使用 security.service.authorization.default.hosts 的值。如果 security.service.authorization.default.hosts的值没有定义,使用*.
它可以指定一个hosts的blocked列表。仅这些机器在hosts列表,但不在blocked hosts列表将会授权访问服务。这个属性名的后缀源于 “.blocked”。
例子:这个属性名blocked hosts列表security.client.protocol.hosts>>将会是<<<security.client.protocol.hosts.blocked。如果blocked hosts列表没有定义一个服务,则使用security.service.authorization.default.hosts.blocked的值,如果security.service.authorization.default.hosts.blocked 没有定义,则应用空blocked hosts列表。
例子
只允许用户 alice, bob 和在mapreduce组的用户提交jobs到mapreduce集群: [mw_shl_code=bash,true]<property>
<name>security.job.client.protocol.acl</name>
<value>alice,bob mapreduce</value>
</property>[/mw_shl_code]
只允许DataNodes运行作为属于datanodes组与NameNode通信
[mw_shl_code=bash,true]<property>
<name>security.datanode.protocol.acl</name>
<value>datanodes</value>
</property>[/mw_shl_code]
允许任何用户作为DFSClient与HDFS集群通信 [mw_shl_code=bash,true]<property>
<name>security.client.protocol.acl</name>
<value>*</value>
</property>[/mw_shl_code]
相关文章
hadoop入门-第一章General:第一节单节点伪分布
hadoop入门-第一章General:第二节集群配置
hadoop入门-第一章General:第三节Hadoop初级入门之命令指南
hadoop入门-第一章General:第四节文件系统shell
hadoop入门-第一章General:第五节hadoop的兼容性说明
hadoop入门-第一章General:第六节开发人员和用户接口指南:hadoop接口分类
hadoop入门-第一章General:第七节Hadoop 文件系统 API :概述
hadoop入门-第二章common:第一节hadoop 本地库 指南
hadoop入门-第二章common:第二节hadoop代理用户 -超级用户代理其它用户
hadoop入门-第二章common:第三节机架智能感知
hadoop入门-第二章common:第四节安全模式说明
hadoop入门-第二章common:第五节服务级别授权指南
hadoop入门-第二章common:第六节Hadoop HTTP web-consoles认证机制
hadoop入门-第二章common:第七节Hadoop Key管理服务器(KMS) - 文档集
hadoop入门:第三章HDFS文档概述(一)
hadoop入门:第三章HDFS文档概述(二)
hadoop入门:第四章mapreduce文档概述
hadoop入门:第五章MapReduce REST APIs文档概述
hadoop入门:第六章YARN文档概述
hadoop入门:第七章YARN REST APIs
hadoop入门:第八章hadoop兼容文件系统
hadoop入门:第九章hadoop认证
hadoop入门:第十章hadoop工具
hadoop入门:第十一章hadoop配置
|