从Hadoop 安全机制原理到当今主流安全机制

在Hadoop Common模块中除了之前我所分析过的4大主模块,还有一个也同样是非常重要的内容,就是Security---安全模块。不过,我只是简单的分析他的实现机制,并不会涉及代码的分析。同时,我会通过对于Hadoop中采取的安全机制方法延伸到当下主流的一些安全认证方法,比如LDAP,SSL,Oauth Token等等。、

1)Hadoop Security

Hadoop的Security是如何运作的呢,当然首先看看他的目录结构。下面是我截的一张图:

最频繁出现的关键词是Token(令牌),那这个也就是后面一定会提及到的东西了。了解过Hadoop RPC源代码的人一定知道他在那里使用的是一种叫做SASL的认证机制,(什么叫认证机制呢,你可以类比与我们所说的JAAS,java授权服务),,中文名为简单认证和安全层,SASL是一种用来扩充C/S模式验证能力的认证机制。SASL的认证方法可以采用多种的认证方法,有以下几种:

1.Anonymous:无须认证

2.Plain,采用base64位加密明文传输,没有用到加密算法

3.Digest-Md5,采用基于MD5提供的安全服务

4.Kerberos认证方法。这个也是Hadoop中最最主要的认证方法。

Hadoop中采用的就是4或者3+4的方法进行安全的认证服务的。所以重点分析什么叫做Kerberos,Kerberos是一种网络认证协议,作为可信任的第三认证服务。如果你要去请求服务,你要获取2个票据,1个叫许可票据,1个叫服务票据,去服务器请求服务之前,你必须拥有服务票据,但是你要去请求服务票据的时候,你又必须拥有许可票据,就是许可你去请求服务票据,拿到了这2个票据,你才能够有资格去真实服务器上去请求服务。下面是一张模拟图;

跟待会会说到的Oauth认证挺像的。但是在Hadoop中,你单单通过Kerberos认证还不够,你还有获取一些Token令牌。至少在在访问某些节点时,你要有一下3类Token:

下面我们做一个延生,另一个与此非常相似的机制。

OAuth认证

OAuth ,全称,Open Authorization,开放授权,用于第三方授权服务的,系统可以无须知道用户的账号,密码,就能获取用户的授权信息,比如网上的各种第三登录啦,都是这种机制。我举一个QQ授权登录的例子;

第三步就是你自己输自己的QQ密码账号的时候,登录成功了就会把信息返给第三机构,我以Csdn的QQ登录我例子:

类似淘宝登录,新浪微博登录都是一个道理。我们上述2种方法的异同点,相同的是都有一个第三机构,1个是通过第三机构给予服务票据,用户拿着服务票据请求真实资源,1个是等待用户授权,授权成功后,授权机构返回请求方授权信息,细细品味,二者在这上面的原理确实不太一样。

2)LDAP

下面从SASL转移到一种常见的安全认证机制JAAS,在JAAS中同样可以集成很多的认证方法,比如说我这里将会说的LDAP(轻量级目录访问协议),LDAP是一种提供目录服务的信息服务。目录服务是一种特殊的数据库系统,采用了树形的存储结构,针对读取操作,做了特定的优化,但是不支持更新等这样的写操作。因为LDAP目录服务采用的不是一般的关系数据库的,建表,分字段的类型存储,他通过一个个条目,(相当于数据库中的Record记录),保存早树中的数据结构中。先看一个简化的存储模型:

跟结点是顶级域名,然后通过此往下找,最后一层就是所找的内容,这很类似于B树索引的方式,所以LDAP采用的是文件数据库,通过文件索引的形式提高检索效率。目前流行LDAP服务的实现由OpenLDAP,有兴趣的可以自己安装试试此服务。

3)SSL,Https

在这里最后介绍的一种安全认证方法是SSL,Secure Socket Layer(安全套接字层),SSL+Http=Https了所以说Https就是加了密的Http协议。SSL的实现比较复杂,我就简单的说说第一步,第一步客户端和服务端之间协商加密算法:

这个过程一结束,大家把自己的信息进行了交互了之后,就基本确定了加密的算法,后续的各种之间的认证就开始了,在上面的第4步,服务端会把自己的服务器证书作为额外信息发给客户端,然后客户端会想认证机构核实此服务器证书的真实性,这叫做单向认证,有的时候,对于安全性要求更高的,还会要求提供客户端的证书,这样就是安全性更高的双向认证,可能而知,里面经过的流程那么多,网站的响应速度肯定比普通的浏览网站的时间更长一点了。

4)总结

主要讲了安全的4种机制,在安全的领域,就是4个字攻击和防守,魔高一尺,道高一丈,没有绝对的安全。

时间: 2024-11-11 21:35:22

从Hadoop 安全机制原理到当今主流安全机制的相关文章

ASP.NET运行机制原理 ---浏览器与IIS的交互过程 自己学习 网上查了下别人写的总结的很好 就转过来了 和自己写的还好里嘻嘻

一.浏览器和服务器的交互原理 (一).浏览器和服务器交互的简单描述: 1.通俗描述:我们平时通过浏览器来访问网站,其实就相当于你通过浏览器去访问一台电脑上访问文件一样,只不过浏览器的访问请求是由被访问的电脑上的一个 WEB服务器软件来接收处理,它会分析接收到的请求信息,从而按照请求信息来找到服务器电脑上的文件,经过处理,最终将生成的内容发回到浏览器. 简单的说就是:由浏览器生成一条“命令”,通过互联网发给另一台电脑的某个软件(服务器软件):服务器软件接收到“命令”,就分析理解这个“命令”,然后按

UITableViewCell的重用机制原理

UITableViewCell的重用机制原理 来自http://blog.csdn.net/omegayy/article/details/7356823 ========================================================== 创建UITableViewController子类的实例后,IDE生成的代码中有如下段落: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowA

从NDK在非Root手机上的调试原理探讨Android的安全机制(转载)

从NDK在非Root手机上的调试原理探讨Android的安全机制 最近都在忙着研究Android的安全攻防技术,好长一段时间没有写博客了,准备回归老本行中--Read the funcking android source code.这两天在看NDK文档的时候,看到一句话"Native debugging ... does not require root or privileged access, aslong as your application is debuggable".咦

Hadoop之HDFS原理及文件上传下载源码分析(下)

上篇Hadoop之HDFS原理及文件上传下载源码分析(上)楼主主要介绍了hdfs原理及FileSystem的初始化源码解析, Client如何与NameNode建立RPC通信.本篇将继续介绍hdfs文件上传.下载源解析. 文件上传 先上文件上传的方法调用过程时序图: 其主要执行过程: FileSystem初始化,Client拿到NameNodeRpcServer代理对象,建立与NameNode的RPC通信(楼主上篇已经介绍过了) 调用FileSystem的create()方法,由于实现类为Dis

hadoop的工作原理

hadoop是一种分布式系统的平台,通过它可以很轻松的搭建一个高效.高质量的分布系统,而且它还有许多其它的相关子项目,也就是对它的功能的极大扩充,包括Zookeeper,Hive,Hbase等. MapReduce是hadoop的核心组件之一,hadoop要分布式包括两部分,一是分布式文件系统hdfs,一部是分布式计算框,就是mapreduce,缺一不可,也就是说,可以通过mapreduce很容易在hadoop平台上进行分布式的计算编程. 首先是hdfs,也就是hadoop的存储系统,首先hdf

新浪微博发送消息和授权机制原理(WeiboSDK)

1.首先是在微博发送消息,对于刚开始做weibo发送消息的初学者会有一个误区,那就是会认为需要授权后才可以发送消息,其实发送消息只需要几行代码就可以实现了,非常简单,不需要先授权再发送消息,因为weibosdk已经帮我们封装好了.(此情况需要用户安装客户端) 发送消息流程为:点击发送消息按键----SDK会自动帮我们判断用户是否安装了新浪微博客户端--如果未安装弹出安装提示----如果安装直接跳转到sina微博客户端进行发送----发送成功后自动跳回原应用程序. 1)在AppDelegate中注

0-Broadcast机制原理简要介绍

Broadcast机制简要介绍 来源: http://blog.csdn.net/luoshengyang/article/details/6730748 导语 广播机制在Android系统中,也不算是什么创新的东西.如果读者了解J2EE或者COM,就会知道,在J2EE中,提供了消息驱动Bean(Message-Driven Bean),用来实现应用程序各个组件之间的消息传递:而在COM中,提供了连接点(Connection Point)的概念,也是用来在应用程序各个组间间进行消息传递.无论是J

《深入理解mybatis原理》 MyBatis事务管理机制

MyBatis作为Java语言的数据库框架,对数据库的事务管理是其非常重要的一个方面.本文将讲述MyBatis的事务管理的实现机制.首先介绍MyBatis的事务Transaction的接口设计以及其不同实现JdbcTransaction 和 ManagedTransaction:接着,从MyBatis的XML配置文件入手,讲解MyBatis事务工厂的创建和维护,进而阐述了MyBatis事务的创建和使用:最后分析JdbcTransaction和ManagedTransaction的实现和二者的不同

Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结

Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结 1. 微内核与插件的优点1 2. 插件的注册与使用2 2.1. Ioc容器中注册插件2 2.2. 启动器微内核启动3 3. 插件的俩种执行策略3 3.1. 必须手动接续,否则自动终止(推荐)3 3.2. 必须手动throw  stop ex终止,负责自动接续..4 4. 插件链的生成原理4 5. -------code4 6. 参考7 1. 微内核与插件的优点 但凡有生命力的产品,都是在扩展性方面设计的比较好的,因