Hadoop-第九周

一、掌握Hadoop原生授权机制

1.1 背景


在Hadoop1.0.0或者CDH3 版本之前, hadoop并不存在安全认证一说。默认集群内所有的节点都是可靠的,值得信赖的。
导致存在恶意用户伪装成真正的用户或者服务器入侵到hadoop集群上,恶意的提交作业,修改JobTracker状态,篡改HDFS上的数据,伪装成NameNode 或者TaskTracker接受任务等。

1.2安全问题


1.2.1用户到服务器的认证问题


NameNode上没有用户认证:用户可以伪装成其他用户入侵到一个HDFS或者MapReduce集群上
DataNode对读入输出没有认证:如果一些客户端知道blockID,就可以任意访问DataNode上block的数据
JobTracker上没有认证:可以任意杀死或更改用户的jobs,可以更改JobTracker的工作状态

1.2.2 服务器到服务器的认证问题


没有DataNode,TaskTracker的认证,用户可以伪装成datanode,tasktracker去接受JobTracker,NameNode的任务指派

1.3kerberos解决的安全认证问题


kerberos实现的是机器级别的安全认证。

1.3.1解决服务器到服务器的认证


由于kerberos对集群里的所有机器都分发了keytab,相互之间使用密钥进行通信,确保不会冒充服务器的情况。

集群中的机器就是它们所宣称的,是可靠的。防止了用户伪装成Datanode,Tasktracker,去接受JobTracker,Namenode的任务指派。

1.3.2 解决client到服务器的认证


Kerberos对可信任的客户端提供认证,确保他们可以执行作业的相关操作。防止用户恶意冒充client提交作业的情况。

用户无法伪装成其他用户入侵到一个HDFS 或者MapReduce集群上。用户即使知道datanode的相关信息,也无法读取HDFS上的数据,用户无法发送对于作业的操作到JobTracker上

1.3.3 对用户级别上的认证并没有实现


无法控制用户提交作业的操作。不能够实现限制用户提交作业的权限。不能控制哪些用户可以提交该类型的作业,哪些用户不能提交该类型的作业。这些由ACL模块控制(参考)

 

二、熟悉Ranger授权管理机制

2.1 架构介绍

2.2 组件介绍

2.2.1 整体说明

Ranger是由三个部分组件:Ranger Admin,Ranger Usersync与Ranger Plugin,它们关系如下:
在这里插入图片描述

组件名称说明
AdminRanger Admin Portal是安全管理的中心接口。 用户可以创建和更新策略,这些策略存储在策略数据库中。 每个组件内的Plugins会定期轮询这些策略。Portal还包括一个审计服务器,它发送从插件收集的审计数据,以便存储在HDFS或关系数据库中。
UserSync同步实用工具来从Unix或LDAP或Active Directory中拉取用户和组。 用户或组信息存储在Ranger门户中,用于策略定义。
Plugin插件是嵌入每个集群组件进程的轻量级Java程序。 例如,Apache Hive的Apache Ranger插件嵌入在Hiveserver2中。 这些插件从中央服务器提取策略,并将它们本地存储在一个文件中。 当用户请求通过组件时,这些插件拦截请求并根据安全策略进行评估。 插件还可以从用户请求中收集数据,并按照单独的线程将此数据发送回审计服务器。

 

 

 

 

 

 

 

 

2.2.2 Ranger Admin

Ranger admin它包含三个部分: Web页面、Rest消息处理服务以及数据库。 我们可以把它看成一个用来数据集中存储中心(所有的数据都集中存在这里,但是其它两个组件也可单独运行存在)。它的具体作用:

  1. 接收UserSync进程传过来的用户、组信息。 并将它们保存到MySql数据库中。 需要注意:这些用户信息在配置权限策略的时候需要使用。这个很容易理解,就象领物料的时候,管理员需要登记物料的领用人,如果不是本公司的人,肯定就不会让你领了。
  2. 提供创建policy策略的接口
  3. 提供外部REST消息的处理接口

2.2.3 UserSync

UserSync是Ranger提供的一个用户信息同步接口,可以用来同步Linux用户信息与LDAP用户信息。通过配置项:SYNC_SOURCE = LDAP/UNIX来确认是LDAP还是UNIX,默认情况是同步Unix信息。对于UserSync有三点需要说明:
1、这个同步是单向的。
就是说它只管从Unix上面的本地用户信息读取出来,然后上传到Ranger Admin上面。
2、UserSync不是同时同步的
如果用户新创建一个用户,但是这个用户无法立即同步到Ranger中
3、不支持删除用户
Ranger暂时不支持通过同步或者代码的方式直接删除用户

2.2.4 Service Plugin

嵌入到各系统执行流程中,定期从RangerAdmin拉取策略,根据策略执行访问决策树,并且记录访问审计

插件名称安装节点
Hdfs-PluginNameNode
Hbase-PluginHMaster+HRegionServer
Hive-PluginHiveServer2
Yarn-PluginResourceManager

 

 

 

 

 

 

2.3 权限实现

2.3.1组件职责

Ranger-Admin职责:
管理员对于各服务策略进行规划,分配相应的资源给相应的用户或组,存储在db中。
Service Plugin职责:
定期从RangerAdmin拉取策略。
根据策略执行访问决策树。
实时记录访问审计

2.3.2 策略执行过程

2.3.3 策略优先级

黑名单优先级高于白名单
黑名单排除优先级高于黑名单
白名单排除优先高于白名单

决策下放:
如果没有policy能决策访问,一般情况是认为没有权限拒绝访问,然而Ranger还可以选择将决策下放给系统自身的访问控制层。

组成集成插件原理:ranger通过实现各组件扩展的权限接口,进行权限验证

ServiceExtensible InterfaceRanger Implement Class
HDFSorg.apache.hadoop.hdfs.server.namenode.INodeAttributeProviderorg.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer
HBASEorg.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService.Interfaceorg.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor
Hiveorg.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthorizerFactoryorg.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory
YARNorg.apache.hadoop.yarn.security.YarnAuthorizationProviderorg.apache.ranger.authorization.yarn.authorizer.RangerYarnAuthorizer

 

 

 

 

 

 

2.3.4 举例说明-Hdfs实现原理

hdfs-site.xml会修改如下配置:

<property>
    <name>dfs.permissions.enabled</name>
    <value>true</value>
</property>
<property>
    <name>dfs.permissions</name>
    <value>true</value>
</property>
<property>
    <name>dfs.namenode.inode.attributes.provider.class</name>
    <value>org.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer</value>
</property>

加载过程:
在这里插入图片描述

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值