分享

hadoop2.7.1服务级别授权指南

pig2 2015-12-31 16:58:35 发表于 入门帮助 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 18483
本帖最后由 pig2 于 2015-12-31 17:04 编辑
问题导读
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]





已有(1)人评论

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条