基于Hadoop SLA认证机制实现权限控制
来源:互联网 发布:中国少年儿编程网视频 编辑:程序博客网 时间:2024/06/05 11:28
Hadoop集群上存储数据,同时基于MapReduce计算框架可以实现计算任务,那么无论是从数据保护的角度,还是从提交计算任务占用资源的角度来看,都需要存在一种权限管理与分配机制,能够很好地限制哪些人可以在HDFS上存储数据,哪些人可以利用集群的资源来处理特定的计算任务。当然,如果能够非常完美地解决这些问题是最好的。当前Hadoop本身提供的权限管理功能还不能满足普遍的需要,或者我们从Hadoop已有的一些简单或复杂的认证机制选择适合自己所在组织机构需要的,或者我们在外围开发一些权限管理系统与Hadoop整合作为补充。
对比Kerberos认证(Authentication)配置方式与SLA授权(Service Level Authorization)方式,Kerberos配置相当复杂,而且还要依赖于外部的密钥分发中心KDC(Key Distribution Center)服务器,如果KDC出现问题,那么就会导致依赖于KDC认证的整个Hadoop集群无法使用,鉴于此,对于一些相对小的开发团队来说还是更倾向于粗粒度的Hadoop SLA授权机制。
Hadoop SLA基于Hadoop的各种服务(基于协议来划分)与Linux系统的用户、用户组来实现。Hadoop通过制定接口协议的方式来实现节点之间服务调用的逻辑,这样每一个协议所指定的一组服务就是一个认证单元,再基于底层Linux系统的用户和用户组来限制用户(可能是节点服务)有权限执行某一种协议所包含的操作集合,下面我们看一下Hadoop中的各种协议:
上表中是基于SLA划分的不同服务级别,要想使SLA认证生效,首相需要在Hadoop配置文件/etc/hadoop/core-site.xml中增加如下配置内容:
1
<
property
>
2
<
name
>hadoop.security.authorization</
name
>
3
<
value
>true</
value
>
4
</
property
>
该配置属性hadoop.security.authorization默认是false,如果集群已经运行,修改了该配置需要重新启动Hadoop集群。然后需要进行SLA认证的详细配置,修改配置文件/etc/hadoop/hadoop-policy.xml,该配置文件中的配置项与对应的SLA协议之间的对应关系如下表所示:
配置项协议名称security.client.protocol.aclClientProtocolsecurity.client.datanode.protocol.aclClientDatanodeProtocolsecurity.datanode.protocol.aclDatanodeProtocolsecurity.inter.datanode.protocol.aclInterDatanodeProtocolsecurity.namenode.protocol.aclNamenodeProtocolsecurity.admin.operations.protocol.aclAdminOperationsProtocolsecurity.refresh.usertogroups.mappings.protocol.aclRefreshUserMappingsProtocolsecurity.refresh.policy.protocol.aclRefreshAuthorizationPolicyProtocolsecurity.ha.service.protocol.aclHAServiceProtocolsecurity.zkfc.protocol.aclZKFailoverControllersecurity.qjournal.service.protocol.aclQJournalProtocolsecurity.mrhs.client.protocol.aclHSClientProtocolsecurity.resourcetracker.protocol.aclResourceTrackersecurity.resourcemanager-administration.protocol.aclResourceManagerAdministrationProtocolsecurity.applicationclient.protocol.aclApplicationClientProtocolsecurity.applicationmaster.protocol.aclApplicationMasterProtocolsecurity.containermanagement.protocol.aclContainerManagementProtocolsecurity.resourcelocalizer.protocol.aclLocalizationProtocolsecurity.job.task.protocol.aclTaskUmbilicalProtocolsecurity.job.client.protocol.aclMRClientProtocol配置SLA权限,实际上是增加ACL(配置用户或用户组)基本格式要求如下:
- 如果既有用户,又有用户组,配置内容格式:user1,user2 group1,group2
- 如果只有用户组,配置内容前面增加一个空格: group1,group2
- 配置内容为*,表示所有用户都具有对应的服务操作权限
下面,我们给定如下的需求:
- hadoop用户作为Hadoop集群的管理员角色,可以执行任何操作
- 为了防止其他用户使用hadoop用户,使hadoop用户归属于用户组g_super_adm,使属于该组的用户具有集群管理员权限
- 只有hadoop用户具有修改SLA认证权限的配置
- Storm集群使用storm用户运行Topology,将实时数据写入HDFS,storm用户只具有操作HDFS权限
- 用户组g_dfs_client具有操作HDFS权限
- 用户组g_mr_client具有在Hadoop上运行MapReduce Job的权限
- 用户stater只具有操作HDFS和运行MapReduce Job的权限
通过进行配置实践,来满足上述要求。修改配置文件/etc/hadoop/hadoop-policy.xml中的部分配置项,具体修改的内容如下所示:
01
<
property
>
02
<
name
>security.client.protocol.acl</
name
>
03
<
value
>stater,storm g_super_adm,g_dfs_client</
value
>
04
<
description
>ACL for ClientProtocol, which is used by user code
05
via the DistributedFileSystem.
06
The ACL is a comma-separated list of user and group names. The user and
07
group list is separated by a blank. For e.g. "alice,bob users,wheel".
08
A special value of "*" means all users are allowed.
09
</
description
>
10
</
property
>
11
<
property
>
12
<
name
>security.refresh.policy.protocol.acl</
name
>
13
<
value
>hadoop</
value
>
14
<
description
>ACL for RefreshAuthorizationPolicyProtocol, used by the
15
dfsadmin and mradmin commands to refresh the security policy in-effect.
16
The ACL is a comma-separated list of user and group names. The user and
17
group list is separated by a blank. For e.g. "alice,bob users,wheel".
18
A special value of "*" means all users are allowed.
19
</
description
>
20
</
property
>
21
<
property
>
22
<
name
>security.job.client.protocol.acl</
name
>
23
<
value
>stater g_super_adm,g_mr_client</
value
>
24
<
description
>ACL for MRClientProtocol, used by job clients to
25
communciate with the MR ApplicationMaster to query job status etc.
26
The ACL is a comma-separated list of user and group names. The user and
27
group list is separated by a blank. For e.g. "alice,bob users,wheel".
28
A special value of "*" means all users are allowed.
29
</
description
>
30
</
property
>
其他的配置属性值保持默认值不变即可。为了保证整个Hadoop集群配置相同,需要将修改的配置文件同步到整个集群的所有节点上。
然后,为了使上述配置内容生效,需要执行如下命令:
1
hdfs dfsadmin -refreshServiceAcl
2
yarn rmadmin -refreshServiceAcl
修改SLA认证配置,不需要重启服务,根据修改内容执行上述命令就可以生效。
后面参考链接中,有些关于Hadoop SLA的文档内容貌似没有随着Hadoop版本升级而更新,与实际Hadoop发行版本中配置文件的内容有一定差别,可以参考,具体以实际版本的情况为准。
参考链接
- http://hadoop.apache.org/docs/r2.2.0/hadoop-project-dist/hadoop-common/ServiceLevelAuth.html
- http://hadoop.apache.org/docs/r2.2.0/hadoop-auth/Configuration.html
- 基于Hadoop SLA认证机制实现权限控制
- Hadoop基于SLA权限认证
- 基于URL实现权限控制
- nutz基于shiro实现身份认证和权限认证
- 基于MVC框架实现权限控制简介
- 实现基于url级别的权限控制
- 基于Shiro 拦截URL,实现权限控制
- 基于Vue实现后台系统权限控制
- 基于Vue实现后台系统权限控制
- tomcat内置的访问控制机制来实现权限控制
- hadoop 权限控制
- hadoop的权限控制
- 权限控制与认证解决方案
- Hadoop 安全机制认证---Kerberos
- Hadoop 安全机制认证---Kerberos
- 基于AOP实现权限管理:通过shiro认证身份和模拟授权认证
- 基于AOP实现权限管理:通过shiro认证身份和模拟授权认证
- linux权限控制机制
- BMW 420i
- 第500篇原创博文(小结)
- (转)参加SCRUM中文网CSM认证班的一些感想
- Cable master
- JDBC中使用存储过程
- 基于Hadoop SLA认证机制实现权限控制
- Oracle索引
- 架构师速成6.11-开发框架-后端封装思路
- Linux 分区简介
- Android 应用启动界面自定义
- 懵懂到迷茫的开始
- 初始MVC
- 多线程访问共享数据(1)
- Linux内存管理原理