构建高可靠hadoop集群之5-服务级别授权
本人翻译自: http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/ServiceLevelAuth.html
译注:相对于kerberos等等而言,这个显得简单得多,但作用也不小。在无法知道用户密码或者无法接近主机的前提下,一个程序或者人是无法访问特定服务的。
但在实际应用中,可能主要控制对客户端的访问。
1.目的
描述如何配置和管理服务级别授权
2.要求
要求hadoop已经正确安装,并可用。
3.概览
服务级别授权是最初的授权机制,用于确保客户端是使用预配权限连接到特定的hadoop服务。例如,一个MR集群可以有自己的机制,允许特定用户/组可以连接,并提交作业。
$HADOOP_CONF_DIR/hadoop-policy.xml配置文件用于定义acl,以访问各种hadoop服务。
服务级别授权比其它的操作更早执行,这些操作包括文件权限检查,job队列存取控制等等。
4.配置
本章节描述如何配置hadoop-policy.xml来实现服务级别授权。
4.1启用服务级别授权
默认这个功能是关闭的。设置 hadoop.security.authorization =true (文件$HADOOP_CONF_DIR/core-site.xml)。
4.2 hadoop服务和配置属性
表1
| Property | Service/可以访问的服务 | 中文说明 |
|---|---|---|
| security.client.protocol.acl | ACL for ClientProtocol, which is used by user code via the DistributedFileSystem. | 用于使用分布式文件系统的用户代码 |
| security.client.datanode.protocol.acl | ACL for ClientDatanodeProtocol, the client-to-datanode protocol for block recovery. | 客户端到数据节点的块恢复协议 |
| security.datanode.protocol.acl | ACL for DatanodeProtocol, which is used by datanodes to communicate with the namenode. | 数据节点和名称节点通讯的数据节点协议 |
| security.inter.datanode.protocol.acl | ACL for InterDatanodeProtocol, the inter-datanode protocol for updating generation timestamp. | 数据节点之间的,用于更新时间戳 |
| security.namenode.protocol.acl | ACL for NamenodeProtocol, the protocol used by the secondary namenode to communicate with the namenode. | 第二节点和主节点的协议 |
| security.job.client.protocol.acl | ACL for JobSubmissionProtocol, used by job clients to communciate with the resourcemanager for job submission, querying job status etc. | 作业客户端和资源管理器之间 |
| security.job.task.protocol.acl | ACL for TaskUmbilicalProtocol, used by the map and reduce tasks to communicate with the parent nodemanager. | mr任务和节点管理器之间 |
| security.refresh.policy.protocol.acl | ACL for RefreshAuthorizationPolicyProtocol, used by the dfsadmin and rmadmin commands to refresh the security policy in-effect. | dfsadmin/rmadmin刷新安全策略 |
| security.ha.service.protocol.acl | ACL for HAService protocol used by HAAdmin to manage the active and stand-by states of namenode. | HAADMIN用于管理名称节点状态 |
译注:以上就是用户可以访问的hadoop服务列表,为这些服务列表设定acl就可以通过acl控制了。
4.3acl
$HADOOP_CONF_DIR/hadoop-policy.xml defines an access control list for each Hadoop service. Every access control list has a simple format:
The list of users and groups are both comma separated list of names. The two lists are separated by a space.
$HADOOP_CONF_DIR/hadoop-policy.xml定义了每个hadoop服务的acl(存取控制列表,译注:这个不同于文件的acl)。
acl格式简单:用户,组之间使用逗号分隔,不同列表使用空格分开。
例如: user1,user2 group1,group2.
如果只是组,那么在行前面插入一个空格。
*表示所有用户都允许访问服务。
如果没有为某个服务定义acl,那么会使用 security.service.authorization.default.acl的acl(如果这个也没有设定,那么系统使用*,表示没有限制)
阻挡列表-黑名单
有的时候,需要阻止一些acl(相当于使用了黑名单)。阻挡列表格式同acl.设置方式,同样是在$HADOOP_CONF_DIR/hadoop-policy.xml。只要把表1中property后加上.blocked就可以了。
例如security.client.protocol.acl的黑名单就是 security.client.protocol.acl.block
对于特定的服务,有可能同时设定acl和黑名单。如果用户在acl,但不在黑名单,那么是可以访问服务的。换言之,黑名单优先。
如果服务没有定义黑名单,那么会使用security.service.authorization.default.acl.blocked的值,如果它的值没有定义,那么就是没有(不阻挡).
4.4刷新服务级别授权配置
刷新名称节点和资源管理器的服务级别授权配置,不需要重启hadoop主服务。集群管理员可以主节点上的$HADOOP_CONF_DIR/hadoop-policy.xml,然后同时名称节点和资源管理器重载对应的配置。它们的名称分别如下:
名称节点
$ bin/hdfs dfsadmin -refreshServiceAcl
资源管理器
$ bin/yarn rmadmin -refreshServiceAcl
当然,用户可以使用$HADOOP_CONF_DIR/hadoop-policy.xml中的security.refresh.policy.protocol.acl限制只有特定的用户/组可以执行这个刷新操作。
主机访问名单
除了控制用户的访问,也可以控制特定的主机对hadoop服务的访问。
属性名称的定义方式同黑名单,就是在acl属性后面添加.hosts.例如security.client.protocol.acl对应的就是security.client.protocol.acl.hosts
如果没有为服务定义主机列表,那么默认使用security.service.authorization.default.hosts,如果该属性没有设定,就是*(所有主机可以访问)。
主机访问黑名单
定义,不可访问的主机,定义方式同acl黑名单,就是在主机名单后面加.blocked
例如security.service.authorization.default.hosts对应的就是security.service.authorization.default.hosts.blocked
如果没有定义,那么就使用security.service.authorization.default.hosts.blocked,如果这个没有只,就不阻挡任意主机.
4.5例子
允许用户alice,bob mapreduce(组)可以可以提交作业给mr集群。
<property>
<name>security.job.client.protocol.acl</name>
<value>alice,bob mapreduce</value>
</property>
只有属于datanodes组的用户运行得datanode可以和名称节点通讯。
<property>
<name>security.datanode.protocol.acl</name>
<value>datanodes</value>
</property>
允许任意用户以DFS客户端的方式和HDFS集群通讯。
<property>
<name>security.client.protocol.acl</name>
<value>*</value>
</property>
构建高可靠hadoop集群之5-服务级别授权的更多相关文章
- 构建高可靠hadoop集群之3- Quorum Journal Manager
在正式环境中,搭建高可靠(ha)的系统是必须的. 例如oralce的rac,apache集群,windows服务器集群 本文不再赘言ha的重要性. 本文主要是对 http://hadoop.apach ...
- 构建高可靠hadoop集群之4-保全模式
本文主要翻译自http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/SecureMode.html 译注:之所以 ...
- 构建高可靠hadoop集群之0-hadoop用户向导
本文翻译自:http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html 基于2.8. ...
- 构建高可靠hadoop集群之1-理解hdfs架构
本文主要参考 http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html 主要内容是对该文 ...
- 构建高可靠hadoop集群之4-权限指引
此文翻译自http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html ...
- 构建高可靠hadoop集群之2-机栈
本文主要参考 http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/RackAwareness.html had ...
- Dubbo+zookeeper构建高可用分布式集群(二)-集群部署
在Dubbo+zookeeper构建高可用分布式集群(一)-单机部署中我们讲了如何单机部署.但没有将如何配置微服务.下面分别介绍单机与集群微服务如何配置注册中心. Zookeeper单机配置:方式一. ...
- 构建高可用ZooKeeper集群
ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 Zo ...
- 构建高可用ZooKeeper集群(转载)
ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 Zo ...
随机推荐
- 阿里巴巴国际站 网站和PC客户端都登录不了,其他电脑或手机可以
背景 昨天晚上,我还能打开阿里巴巴国际站,PC客户端也可以登录 今天早上起床打开电脑,发现国际站的网站打开不了,客户端也登录不了,提示了错误信息,但是其他电脑或手机就可以登录 原因分析 1.是不是本机 ...
- java常用API之Calendar类
Calendar是日历类,该类将所有可能用到的时间信息封装为静态成员变量,方便获取. Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,将语言 ...
- Please, configure Web Facet first!idea报这错的解决办法!!
Please, configure Web Facet first!idea报这错的解决办法!! 今天在idea导入用eclipse的项目,然后运行项目的时候报这个错, 看下图 网上找了好多都没解决, ...
- SQLAlchemy的使用---M2M多对多关系
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, Stri ...
- sort遇到的问题
var arr = [2,10,6,9,7,8]; var arr1 = arr.sort(); var arr2 = arr.sort(function(a,b){ if (a>b){ ret ...
- css 条纹背景
先介绍文章用到的二个知识点 background-size 属性 语法 background-size: length|percentage|cover|contain; css线性渐变 linear ...
- IntelliJ IDEA热部署教程,只要两步!
一.开启idea自动build功能1.File -> Settings -> Build,Execution,Deployment -> Compiler -> Build p ...
- 学习spring mvc
http://www.cnblogs.com/bigdataZJ/p/springmvc1.html
- mvc页面间的传值
本文大致讲解mvc前后端的传值方式,包括control向view.view向control.以及action向action. 回顾 我们回顾下在ASP.NET WebForms中,页面之间最常用的传值 ...
- 分布式check_mk切换远端图片到本地访问
http://hermannsspace.de/wp/collect-pnp4nagios-data-in-check_mk-distributed-environment slave1数据目录 /o ...