构建高可靠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 ...
随机推荐
- 如何把php项目部署到阿里云服务器window server2012__含公网ip访问时jquery/ajax失效解决办法
记一次蛋疼的折腾. 弄了一晚上最后发觉是360浏览器的问题,换个浏览器就好了.垃圾360用什么IE7文档模式.导致界面和功能失效. 建议大家测试的时候用firefox或者chrome. 项目部署到服务 ...
- 重构指南 - 移除重复内容(Remove Duplication)
在项目中或多或少的都存在着重复的或者功能相似的代码,如果要对代码做改动,就要修改多个地方,所以我们需要将多处重复的代码提取到一个公共的地方供统一调用,以减少代码量,提高代码可维护性. 重构前代码 pu ...
- Notes about Vue Style Guide
A. Necessary Multiple-word for component’s name Data for component must be a function The definition ...
- HttpComponents
一 概述 1.HttpComponents的作用 HttpComponents的作用是模拟浏览器获取网页内容. 二 使用 1.使用HttpComponents需要先导入架包. 2.使用 Closeab ...
- js初级DOM&BOM知识点总结
第一章 js的组成DOM BOM ECMAScript javaScript 是一种直译是脚本语言 js语言特点 .脚本编写语言 .基于对象的语言 .简单性 .动态性 .安全性 .跨平台性 C/S是C ...
- win7下tomcat5.5无法通过ip和127.0.0.1访问的解决方法
解决办法:找到tomcat5.5目录下的conf\server.xml文件,原文如下: <Connector port="8080" maxHttpHeaderSize=&q ...
- C#使用Process类杀死进程,执行命令等
c#之process类相关整理 一.根据进程名获取进程的用户名? 需要添加对 System.Management.dll 的引用 using System.Diagnostics; using Sys ...
- python创建项目
一.准备下载 python3.6.6 https://www.python.org/downloads/windows/(需要注意你的电脑是32位还是64位) mysql 5.1.72 https:/ ...
- POJ-1836 Alignment---LIS
题目链接: https://cn.vjudge.net/problem/POJ-1836 题目大意: 题意:令到原队列的最少士兵出列后,使得新队列任意一个士兵都能看到左边或者右边的无穷远处.就是使新队 ...
- 【洛谷P3811】[模板]乘法逆元
乘法逆元 题目链接 求逆元的三种方式: 1.扩欧 i*x≡1 (mod p) 可以化为:x*i+y*p=1 exgcd求x即可 inline void exgcd(int a,int b,int &a ...