内容来源:2017 年 07 月 29 日,威客安全技术合伙人安琪在“CDAS 2017 中国数据分析师行业峰会”进行《大数据平台基础架构hadoop安全分析》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:5817 | 15分钟阅读

嘉宾演讲视频地址及PPT:suo.im/5dKZpw

摘要

分析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要从这几点出发。

一是认证,提供单点的登录,通过这种方式实现用户身份的认证。

二是授权,要能够确定用户访问权限,比如对数据集的访问、服务请求等。

三是访问控制,要有一个基于细粒度和角色的访问控制机制。

四是数据加密,包括数据处理过程中对中间数据的处理,以及在数据传输和数据存储过程中的处理,都需要引入数据加密的技术。

五是网路安全,是否有一个有效的隔离措施,以及对业务行为的安全控制是否有保障。

六是系统安全,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进行数据同步,建立跨域信任。

Hadoop网络访问安全

目前主流的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框架实现通道加密,一方面使用压缩文件的能力对数据块直接加密。

大数据平台基础架构hadoop安全分析相关推荐

  1. 大数据平台基础架构指南

    之前的文章,整理了一下,补充了一些内容,做了一些更新,现已出版上市了.无耻的推广一下哈 :) 淘宝,JD都有现货,Amazon,搜书名 < 大数据平台基础架构指南 > 链接:https:/ ...

  2. 企业大数据平台仓库架构建设思路

    https://yq.aliyun.com/articles/57901 总体思路 随着互联网规模不断的扩大,数据也在爆炸式地增长,各种结构化.半结构化.非结构化数据不断地产生.新环境下的数据应用呈现 ...

  3. ⼤数据平台基础架构及解决⽅案

    持续输出  敬请关注 大数据架构  湖仓一体化  流批一体 离线+实时数仓  各种大数据解决方案  各种大数据新技术实践 持续输出  敬请关注 第一篇  ⼤数据平台基础架构及解决⽅案 提示:基础架构重 ...

  4. dacp全称_2018年大数据平台基础软件维保服务 招标公告

    二.采购内容 购买大数据平台基础软件(包含Hadoop-OCDP4.0.DACP-DAG2.1.DACP-DOP2.1三项平台软件)2018年6月-12略服务,并赠送20人天作为突发事件增补工作量. ...

  5. 分享 | 企业大数据平台仓库架构建设思路

    本文根据阿里云高级技术专家李金波在首届阿里巴巴在线峰会的<企业大数据平台仓库架构建设思路>的分享整理而成.随着互联网规模不断的扩大,数据也在爆炸式地增长,各种结构化.半结构化.非结构化数据 ...

  6. 【SDCC讲师专访】吕毅:链家网大数据平台的架构演进

    2016年11月18日-20日,由CSDN重磅打造的年终技术盛会,SDCC 2016中国软件开发者大会将在北京举行,大会面向国内外的中高端技术人员,聚焦最前沿技术及一线的实践经验,从而助力企业的技术升 ...

  7. 90页PPT | 金融大数据平台总体架构方案(附下载)

    今天给大家分享一下智慧金融行业的大数据平台总体架构是如何设计的,包括: 大数据分析平台综述 大数据分析平台总体架构 大数据分析平台演进路线 大数据分析平台实施重点 数据治理管理平台 里面设计的详细的架 ...

  8. 智慧金融大数据平台总体架构方案

    大家好,我是一哥,今天给大家分享一下智慧金融行业的大数据平台总体架构是如何设计的,包括: 大数据分析平台综述 大数据分析平台总体架构 大数据分析平台演进路线 大数据分析平台实施重点 数据治理管理平台 ...

  9. 基于Hadoop的大数据平台实施架构的规划

    大数据的热度在持续的升温,继云计算之后大数据成为又一大众所追捧的新星.我们暂不去讨论大数据到底是否适用于您的公司或组织,至少在互联网上已经被吹嘘成无所不能的超级战舰.好像一夜之间我们就从互联网时代跳跃 ...

  10. 独家解读!阿里首次披露自研飞天大数据平台技术架构

    9 月 26 日,阿里云飞天大数据平台在云栖大会第二天主论坛上正式对外发布,这也是阿里首次对外披露飞天大数据平台的整体架构. 据介绍,飞天大数据平台由阿里自主研发,可扩展至 10 万台计算集群,是目前 ...

最新文章

  1. 程序员吐槽:非常后悔3年前选择加入互联网行业,因为短期的高工资断送了自己长期的职业生涯发展...
  2. 算法----单链表反转
  3. System.getProperty()的用途
  4. linux svn 自动发布,linux svn tomcat maven 自动发布打包
  5. CH - 0502 七夕祭(思维+中位数优化+前缀和优化)
  6. h5 video 手机上无法显示_手机镜象投屏到电视上全屏显示
  7. 修改Chrome默认搜索引擎为Google.com
  8. Appium框架中Android下EditText内容清除
  9. win32以动态链接库导出类及其成员变量
  10. 手写仿淘宝商城页面(html+css+部分js)
  11. 135编辑器怎么复制html,135编辑器复制粘贴文字的方法
  12. 苹果屏蔽更新描述文件_安装iOS屏蔽更新描述文件教程方法
  13. uncode-schedule 学习
  14. Java游戏项目之坦克大战
  15. android wifi 移植记录
  16. 学习Java第十九天(一):1、Java中的网络编程
  17. 跑步健身戴什么耳机合适?五款高性价比运动耳机推荐
  18. 组织机构树型数据库结构
  19. 爬虫学习日记1-豆瓣top250电影信息爬取
  20. Java正则表达式(详解)

热门文章

  1. 互联网服务器使用ipset 和iptables禁止国外IP访问
  2. java date 格式化 yyyymmdd_如何将LocalDate格式化为yyyyMMDD(不含JodaTime)
  3. linux运行python乱码_linux下python中文乱码解决方案
  4. STM8L中断线和中断端口使用方法
  5. 商城商品的知识图谱构建
  6. 12 个开源后台管理系统
  7. 物联网标识管理系统源码
  8. 深度deepin安装腾达U12无线网卡驱动
  9. Ubuntu20+TendaU12驱动离线安装
  10. win10无法启用shockwave flash object的解决