构建高可靠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 ...
随机推荐
- STL库中string类内存布局的探究
在STL中有着一个类就是string类,他的内存布局和存储机制究竟是怎么样的呢? 这就是建立好的string 可以看出,图中用黄色框框标注的部分就是主要区域 我们用来给string对象进行初始化的字符 ...
- cf1064D. Labyrinth(01BFS)
题意 题目链接 给出一个\(n \times m\)的网格,给出起始点,要求向左走不超过\(L\)步,向右走不超过\(R\)步,求出能遍历到哪些点 Sol 一个很直观的想法,BFS的时候状态里记录下还 ...
- js匿名函数使用&传参
function () { alert("error"); } //报错:匿名函数不能直接调用 使用 0x01 (function () { alert("Success ...
- 运用Edraw为WPF应用程序嵌入Office文档的方法总结
具体描述了运用Edraw Office Viewer Component为WPF应用长须嵌入MS Word,Excel以及Power Point的方法. 打开Visual Studio,并创建一个新的 ...
- 03_Redis数据类型(List)
[List类型] Redis采用的是LinkedList. ArrayList: 数组存储.查询快,增删慢. LinkedList:链表存储.增删快,查询慢,查询两端快. Redis的list内部采用 ...
- Ubuntu 安装第一步,打开ssh
http://blog.csdn.net/u010447234/article/details/53557795 1.检查是否有ssh在运行 ps -e | grep ssh* 2.安装openssh ...
- php执行与curl区别
如执行一个文件写入 Linux服务器,分别php **/a.php与 curl http://**/a.php 结果:php执行写入到/root/test.txt, curl与浏览器运 ...
- django模型详解(四)
1 概述 (1)概述 : Django对各种数据库提供了很好的支持,Django为这些数据库提供了统一的调用API,根据不同的业务需求选择不同的数据库 (2)定义模型 模型,属性,表,字段间的关系 一 ...
- jquery表单
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- 页面三个txt加载联动省市县的代码,类似淘宝的收货地址的布局
页面三个txt加载联动省市县的代码,假如有一个树形的JSON,分别显示的省市县这时候三个TXT怎么做联动效果呢,这里用framework7为例HTML: <div class="lis ...