大数据平台基础架构hadoop安全分析全集

数据平台基础架构hadoop安全分析全集
摘要
分析hadoop现有安全技术架构,对hadoop框架组件的应⽤、结构进⾏分析,对现有的安全措施进⾏说明,分析分布式⽂件系统、MapReduce、kerberos、Hive、Hbase等相关组件的安全以及⼤数据平台⽹络访问、数据安全的机制,并总结研究hadoop的安全技术架构。
Hadoop安全现状
Hadoop安全漏洞
上图是列出的是Hadoop近年来的⼀些安全漏洞,接下来会针对其中的⼏个案例进⾏简要说明。
Apache的Ambari引⽤给Hadoop带来了很多便利,可以直接通过外部的管理对Hadoop的⽣态组件进⾏管控,但在这个过程中由于外部技术的引⽤,导致了⼀些外部应⽤层的漏洞,主要是SSRF伪造请求漏洞。这是由恶意攻击者通过SSRF攻击,远程对Hadoop服务以及进程进⾏操纵和读取数据。
MapRedure信息漏洞主要是由于数据⽂件、⽤户产⽣的数据以及加密秘钥都存储在同⼀个⽂件和磁盘中,导致恶意⽤户获取到加密秘钥同时读取了数据块中的数据。
Ambari重定向漏洞是由于target的URI参数被修改成了⿊客指定的任意⽹址,由此造成了钓鱼攻击,甚⾄结合Linux底层的操作系统漏洞以及Hadoop的其他漏洞还能实现恶意代码的加载。
2017年hadoop的⼀个新的漏洞被曝光,漏洞的主要原因在于Hadoop引⼊了Docker组件,但是在linux这层没有输⼊过程的认证,并且Docker命令⼜是通过root⾝份来执⾏的。因此⿊客就通过Docker命令伪造了root⾝份,然后对Hadoop进⾏了全线账户的提权,实现了整个操作系统的权限控制。
Hadoop由于⾃⾝的业务特点,⼀般都是部署在⽤户内⽹中,所以在早期设计的时候不是太注重安全⽅⾯的设计,⽽更多的专注于实现业务的功能。通过分析可以发现,这些漏洞的产⽣⼤部分都是由于Hadoop的⾝份认证授权没有做好。
早期Hadoop在的默认情况下,是没有⾝份认证和访问控制机制的,基本上是继承了Linux的权限控制体系。另外它在数据传输的过程中和静态数据保存过程中都没有有效的加密措施。
Hadoop关键安全因素点火
基于Hadoop⾯临的这些问题反过来思考,我们认为要想实现安全的Hadoop要从这⼏点出发。
⼀是认证,提供单点的登录,通过这种⽅式实现⽤户⾝份的认证。
⼆是授权,要能够确定⽤户访问权限,⽐如对数据集的访问、服务请求等。
三是访问控制,要有⼀个基于细粒度和⾓⾊的访问控制机制。
四是数据加密,包括数据处理过程中对中间数据的处理,以及在数据传输和数据存储过程中的处理,都需要引⼊数据加密的技术。
mp3制作
五是⽹路安全,是否有⼀个有效的隔离措施,以及对业务⾏为的安全控制是否有保障。
六是系统安全,Hadoop⼤部分是基于Linux操作系统,要有对底层操作系统漏洞的防护。
七是基础架构安全,物理层⾯的安全以及基于安全架构逐步完善的安全措施。
最后是审计监控,是否能够对所有的⽤户⾏为和授权⾏为等进⾏有效监控,并基于这些来识别潜在的危险⾏为。
Hadoop认证授权
Hadoop⾃⾝认证模型的缺陷
上图是服务和数据块的结构图。Hadoop使⽤的是HDFS分布式存储⽂件系统。当⽤户登录到DataNode访问数据的时候,⽤户的权限可以访问到DataNode⽬录下的所有数据块。这实际上是⼀个
安全风险,因为Hadoop没有对⽤户、⽤户组和服务进⾏有效的认证,当执⾏Hadoop命令的时只是单单通过whoami确定⽤户⾝份,这个过程中⿊客可以编写whoami脚本模拟超级⽤户。
Hadoop需要实现的安全认证
提⾼Hadoop的安全要从两个层⾯着⼿,⼀是⽤户层次访问控制,⼆是服务层次访问控制。
⽤户层次访问控制,要有对⽤户和⽤户组的认证机制。(以下为具体细节)水台
Hadoop⽤户只能访问授权的数据。
只有认证的⽤户可以向Hadoop集提交作业。
⽤户可以査看、修改和终⽌他们的作业。
只有认证的服务可以注册为DataNode或TaskTrackero
DataNode中数据块的访问需要保证安全,只有认证⽤户 才能访问Hadoop集中存储的数据。
服务层次控制,服务之间的互相认证。(以下为具体细节)
可扩展的认证:Hadoop集包括⼤量的节点,认证模型需要能 够⽀持⼤规模的⽹络认证。
伪装:Hadoop可以识别伪装⽤户,保证正确的⽤户作业隔离。
⾃我服务:Hadoop作业可能执⾏很长时间,要确保这些作业可 以⾃我进⾏委托⽤户认证,保证作业完整执⾏。
安全的IPC : Hadoop服务要可以相互认证,保证它们之间的安全 通信。
Kerberos
Kerberos是Hadoop的安全基础,未来Hadoop的所有安全措施都要基于Kerberos认证原理才能实现。
Kerberos其实是⽹络的认证协议,可以实现在⽹络中不传输密码就能完成⾝份认证。其原理在于通过对称加密算法⽣成时间敏感的授权票据。下⾯来看下Kerberos的基本实现原理。
⾸先Hadoop的客户端向KDC请求,获得授权票据授权(TGT),之后KDC会返回TGT和Session Key给客户端。(TGT是⼀个特殊的票据,作⽤在于客户端访问⽬标服务器的时候,提供⼀个允许访问的票据,失效时间⼤概为8到10个⼩时。Session Key⽤于加密客服端与服务端通信过程中的数据。)接着客户端会使⽤TGT向⽬标服务端请求服务票据,这时KDC会再返回Session Key和⽬标服务器的服务票据,本次的Session key已经成为了服务器私⽤的,也就是说Kerberos实现了每个服务端都有⼀个私钥。最后客户端会使⽤TGT向⽬标服务器请求,⽬标服务器则使⽤私有Session Key解密,识别客
户端为合法请求后返回私有Session Key,并且⽤私有Session Key加密这段通信。这样客户端和服务端就实现了传输通信上的加密以及⾝份上的认证。
安全Hadoop加护⾏为
Kerberos认证使Hadoop拥有了⼀定的安全能⼒。由于实现了⽤户和服务的认证,Hadoop各个组件和⽤户交互过程中会有三个概念,分别是授权令牌、作业令牌和数据块访问令牌。
客户端向NameNode请求的时候,Kerberos会进⾏⾝份认证,这时NameNode会给客户端返回授权令牌,基于令牌客户端可以⽆需再对Kerberos进⾏认证就能做后续的操作。
客户端向Hadoop提交作业指令的时候,要确定被认证的⽤户在Node下的⽂件权限必须是该认证⽤户的权限。这时就要依靠作业令牌对权限进⾏控制。
数据块访问的时候⼀般都是客户端先向NameNode请求,请求完成之后NameNode会进⾏认证然后返回授权令牌,这时如果⾝份合法NameNode会再返回⽂件块ID以及DataNode的位置信息,最终客户端使⽤这些信息向DataNode请求相应数据块的信息。这段过程中NameNode和客户端有认证,但DataNode和客户端没有认证,因此就有了数据块的访问令牌,通过这个令牌就平移NameNode和客户端之间的认证信息,实现⼀次授权两次认证的机制。
整个访问的交互过程⼀共就三步,第⼀步是服务向KDC注册,注册内容包括DataNode向NameNode注册,TaskTracker向JobTracker注册。第⼆步四客户端向KDC注册,通过授权令牌客户端向NameNode的注册。第三步是数据块的注册 ,通过DataNode给数据块的访问令牌识别客户端的相应数据访问权限。以上基本就是Kerberos实现的整个⽣态体系的认证。
Hadoop⽹络访问安全
统⼀⾝份认证管理机制
关注安全的企业往往都有⼀套统⼀⾝份认证管理机制,⽤来管理企业内部的终端、⽹路设备、上⽹⾏为等。Kerberos则实现了Hadoop内部的⾝份认证管理。Kerberos如何和企业统⼀⾝份认证管理进⾏有效结合是实现企业⽹络⽣态安全的第⼀步。
向Hadoop请求的客户端⽤户需要在EIM(统⼀⾝份认证管理系统)中注册⾝份,再由EIM向终端⽤户发放Kerberos授权票据,这时客户端会使⽤该票据向Hadoop请求。整个过程中EIM系统需要和Hadoop的本地KDC进⾏数据同步,建⽴跨域信任。雨水管理系统
97sswHadoop⽹络访问安全
⽬前主流的Hadoop⽹络安全措施是通过防⽕墙将客户端和Hadoop集进⾏逻辑隔离。防⽕墙作为⽹
络层⾯的控制,对于恶意端⼝、⽆⽤协议进⾏有效过滤,之后部署有很多Hadoop⽣态组件⼯具的⽹关服务器,客户端⽤户通过统⼀登录⽹关服务器对Hadoop集进⾏维护以及提交作业。这样就初步实现了⽹络层的访问控制、⽤户的认证授权以及⾏为的访问控制过滤。
Hadoop⽹络访问之HUE
随着Hadoop的发展,它⼜在⽹关层上引⼊了开源项⽬HUE,基本的架构和前⾯类似,只不过多了HUE的相关功能。HUE可以与EIM系统的⾝份认证结合,⽀持LDAP同步⽤户和⽤户组信息,采⽤HttpFS代理,通过SPANWFO-Base认证协议访问SSL加密,实现了细粒度的⽤户访问控制。
羊毛抛光轮
Hadoop⽹络访问之Know Gateway Server
随后Hadoop⼜有了Know Gateway Server,它结合了HUE和传统的优势,内部还是以⽹关的形式做代理,实现了防⽕墙的功能对端⼝和协议进⾏过滤,同时对⽤户进⾏细粒度的访问控制,不仅如此,它还是实现了单点登录。
Hadoop数据安全
Hadoop数据传输的通道加密
对于传输数据加密⽬前Hadoop采⽤SASL框架,它可以实现客户端向服务端请求过程中的数据加密。SASL分为SSL和Hadoop的RPC协议,SSL⽤于web层⾯的数据通道加密,客户端向NameNode以及DataNode请求的时候⾛的则是RPC协议或者是基于TCP的 HTTP协议。这种情况下就必须封装SASL安全框架进⾏整体加密,同时SASL还⽀持JDBC保护,与第三⽅数据库交互时也能加密。
Hadoop静态数据加密
静态数据的保护我们有两种思路。
第⼀个是先加密后存储,但是这种⽅案存在问题。它在向Hadoop存储⽂件时,⾸先把整个⽂件进⾏加密,然后存储。这样,每个DataNode中数据块⽆法被解密。因此这种⽅案是不太可⾏的。
第⼆个是加密数据块,确保MapReduce程序可以独⽴的访问每个数据块,解密逻辑可以在 MapReduce作业中进⾏。解密密钥需要告诉MapReduce作业。这种⽅案是可扩展的。
Hadoop安全审计和监控
Hadoop安全监控要点
⽤户登录和授权事件:当⽤户或服务标识在KDC或EIM系统进⾏认证时会⽣成⽤户登录事件,在集中
EIM系统(活动 ⽬录或相似系统)将记录⽤户授权事件。⽤户向Hadoop 进程每次请求服务票据都会⽣成⽇志。
HDFS⽂件操作错误:当⽤户访问HDFS , Name Node会验证⽤户的访问权限。当存在越权访问时会在hadoop⽇志⽂件中产⽣错误事
件,Hive 或Pig作业遇到任何访问HDFS 权限问题时都会产⽣相同的错误。
RPC授权错误:任何对Hadoop进程未授权的访问请求,异常会记录⾄到Hadoop 安全⽇志⽂件中。监控这些异常可以识别未授权访问。
RPC认证错误:Hadoop RPC使⽤Java SASL APIS进⾏验证。这个交互过程可以设置质量保护,确保客户端可以安全的联机Hadoop服务,任何中间⼈攻击导致的验证失效都可以被记录下来。
HDFS敏感⽂件下载:Hadoop⽀持记录每⼀个⽂件系统操作到HDFS审计⽇志⽂件。该审计⽂件,可以识别哪些⽤户访问或下载了敏感⽂件。
MapReduce作业事件:Hadoop⽀持在⽇志中记录所有MapReduce 作业提交和执⾏事件。审计⽇志会记录作业的提交、启动、査 看和修改⾏为。因此 该审计⽂件可以⽤来识别哪个⽤户访问和运⾏了集上的作业。
Oozie、HUE和 WebHDFS 的访问:⽤户访问Oozie并进⾏⼯作流提交都 会记录到Oozie的审计⽇志。所有⽤户与Oozie的交互也会记录到⽇志,可以⽤来跟踪执⾏特定⼯作流的⽤户信息。
其他异常:除了⽤户认证和授权产⽣的异常,记录Hadoop中任何其他类型的异常也很有⽤。这些异常提供潜在讯息发现系统的脆弱性,也可以识别潜在的安全事故。
Hadoop安全监控与审计系统
对于Hadoop的安全监控和审计系统也有着相应的开源组件——OSSEC,它是⼀个基于主机⼊侵检测系统的开源项⽬,⽀持收集Hadoop 集中的各种⽇志和事件。原理是通过在各个组件内部署⽇志代理,收集各组件的⽇志,然后统⼀汇总到管理端,之后由管理端进⾏统⼀展⽰ ,最后通过制定的安全规则做筛查和告警。
Hadoop审计⽇志的配置
下图展⽰的是开启⽇志的各种⽅法。
对于Hadoop的安全监控和审计系统也有着相应的开源组件——OSSEC,它是⼀个基于主机⼊侵检测系统的开源项⽬,⽀持收集Hadoop 集中的各种⽇志和事件。原理是通过在各个组件内部署⽇志代理,收集各组件的⽇志,然后统⼀汇总到管理端,之后由管理端进⾏统⼀展⽰ ,最后通过制定的安全
规则做筛查和告警。
Hadoop安全技术架构总结
上图是Hadoop现有的安全架构。⾸先是基础设施安全,包括物理安全和Kerberos。操作系统层⾯采⽤主机加护的⽅式,通过⽩名单的机制对系统的服务、进程、端⼝、软件等等进⾏控制,从⽽抵御⾮法攻击。应⽤安全是通过HUE在⽹关之上提供的⼀些⽤户细粒度的访问控制。⽹络边界安全是利⽤堡垒机和防⽕墙的技术实现了⽹络和应⽤的控制。数据加密⼀⽅⾯使⽤SASL框架实现通道加密,⼀⽅⾯使⽤压缩⽂件的能⼒对数据块直接加密。

本文发布于:2024-09-22 16:43:39,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/105244.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:认证   访问   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议