转载请注明出处:http://blog.csdn.net/hsluoyc/article/details/43977779
索取本文Word版本请回复,我会通过私信发送
本文主要通过官方文档、相关论文、业界公司和产品三个方面来论述Spark安全威胁及其建模方法,详细内容如下。
第1章 官方文档[1]
目前Spark支持共享密码的认证方式。可以通过设置spark.authenticate这个参数实现,这个参数控制Spark的通信协议是否用共享的密码进行验证。这个认证协议是一个基础的握手协议,通过令通信双方具有相同共享密码保证其之间能够直接通信。如果共享的密码不相同,那么他们将不会被允许通信。共享密码通过如下方式生成:
• 对于Spark在yarn上部署的模式,可以实现共享密码的自动生成和分发,每个应用能够使用唯一的共享密码;
• 对于Spark的其他部署模式来说,Spark的spark.authenticate.secret密码参数应该在每一个节点上进行配置。这个密码会被所有的Master/Workers及应用使用;
• 注意:Netty shuffle path (spark.shuffle.use.netty)功能还处于试验阶段,并不安全,生产环境请不要使用Netty for shuffles。
1.1 Web UI安全
Spark的Web UI界面可以通过设置spark.ui.filters参数启用javax.servlet.filters来提高安全性。如果一个用户不想让其他的人看到他的数据,他可以对UI进行安全设置。用户通过使用javax.servlet过滤器可以对其他用户进行验证,一旦其他用户登录进入Spark,系统此时会在该用户与视图访问控制列表之间进行比较分析,以确保该用户有权查看所有者用户的UI界面。需要注意的是,启动应用的用户可以查看自身UI而不受限制。在yarn模式下,Spark的UI使用标准的yarn的web应用代理机制,并能通过已安装的hadoop的过滤器进行认证。
Spark同时也支持通过修改访问控制列表的方式来控制哪个用户可以访问、修改正在运行的Spark应用,其中包括终止一个应用或任务。这里可以通过spark.acls与 spark.modify.acls参数来进行配置。在yarn模式中,修改访问控制列表可以通过yarn的接口完成。
Spark允许管理员在访问控制列表中指定哪个用户对所有应用程序总都具有查看、修改权限。这里可以通过spark.admin.acls参数进行配置。这对在一个共享集群中,管理员或技术支持帮助用户调试有问题应用的场景下非常有用。
1.2 事件审计安全
如果要开启事件审计功能,存放事件日志的文件夹(路径通过spark.eventLog.dir 参数设置)需要提前手工创建,并且使Spark对这个目录有访问权限。如果希望日志文件更安全,可以为这个文件夹设置drwxrwxrwxt权限。这个文件夹的所有者应该设置为启动history server的root用户并且其用户组权限应该加入到root用户组。这样设置可以保证非所有者的其他用户可以在该文件夹下写,但是不能移动或者重命名文件。这样事件日志只会被root用户和Spark系统生成和修改,从而保证其安全性。
1.3 网络端口安全
Spark对网络通信的需求很高,在某些环境中对防火墙的设置有非常严格的要求。以下展示了Spark用来通信的主要端口,以及如何配置这些端口的建议。
1.3.1 Standalone模式
1.3.2 基于集群管理器(如yarn)的模式
可以在配置界面的安全配置参数里查看更详细的使用信息,或者查看源代码org.apache.spark.SecurityManager包中有关安全管理的实现细节。
第2章 相关论文
目前学术界中专门研究Spark安全的文章还没有,有些文章只是在文中提到了安全问题。代表性的有以下几篇:
文章[2]提到,在多媒体计算框架中,用户采用分布式的方式存储和处理他们的多媒体应用数据,从而避免自身安装庞大的多媒体应用软件。在云环境下多媒体的处理对以下很多方面都提出了巨大挑战,包括:基于内容的多媒体检索系统、分布式复杂数据处理、云端QoS支持、多媒体云传输协议、多媒体云覆盖网络、多媒体云安全、基于P2P云端的多媒体服务等等。Spark Streaming支持大规模流式数据处理,其安全威胁与多媒体云安全有共通之处。由于多媒体数据如视频是很私密的内容,在利用Spark Streaming进行多媒体数据处理时,需要进行身份认证,同时利用安全协议如RTMP将多媒体数据进行加密传输[3]。
文章[2]提到,由于Spark等内存计算平台需要使用到分布式、甚至是第三方的服务和基础设施用来存放重要数据或者执行关键操作,这对动态数据监控和安全保护提出了巨大挑战。不像传统的基于MapReduce的安全机制,只需要对硬盘上的静态数据集进行安全防护,在Spark中数据是在内存中存储,并且经常动态变化的,包括数据模式、属性和新添加数据的变化。因此有必要在这种复杂环境下进行有效的隐私保护。
文章[4]提到,安全问题在实际图计算系统中非常重要,但是现有的研究对这类安全问题的关注很少。可能存在的问题是,网络节点完全符合传输协议的要求只是一种假设,有可能会出现拜占庭错误。需要有一种机制能够检测和修复节点失效、链路失效的问题。Spark GraphX作为图计算、图挖掘框架,也存在此类问题。
第3章 业界公司和产品
3.1 DataStax公司
DataStax公司推出了基于Apache Cassandra和Spark的商业数据分析平台DataStaxEnterprise(DSE,最新版本4.6)产品[5],在原有开源Spark的基础上进行了安全加固。包括:
1)不仅支持内部自带的加密认证方式,还支持支持可信任的第三方安全软件包(例如Kerberos和LDAP)与DataStaxEnterprise结合;
2)数据审计、客户端-节点之间的透明加密;
3)OpsCenter中的多种工具改进提升了可管理性,例如更简单的配置、备份/恢复的粒度控制、更好的诊断;
4)在Spark和Shark中对Cassandra数据库访问时进行密码验证[6];
5)基于关系型数据库中GRANT/REVOKE模式的简单对象权限管理。
3.2 Sqrrl公司
Sqrrl是一家专攻安全大数据平台的公司,创建于2012年,总部位于麻省坎布里奇,Sqrrl是围绕美国国家安全局(NSA)开发的开源NoSQL数据库Apache Accumulo(来源于谷歌开发的大数据技术BigTable,最初是由NSA开发,后被分拆出来作为一个开源项目)建设起的一项业务。
Sqrrl的联合创始人兼首席技术官亚当·福克斯(Adam Fuchs),其同时也是Apache Accumulo的联合创始人之一。截止ECP发稿日期,Sqrrl已从Atlas Venture和Matrix Partners等风险投资公司那里筹集到了200万美元资金。
Sqrrl Enterprise [7]是一个用于开发实时分析应用的安全的可扩展平台。Sqrrl Enterprise利用了Spark中的GraphX图计算引擎来实现动态实体关系图的构建和分析[8],因此可以认为Sqrrl是基于Spark实现的商业化产品。
Sqrrl Enterprise安全功能主要包括[9]:
1)Cell级别的安全强制执行:每次用户试图在数据上执行某种操作时,系统会评估此数据携带的可见性标签(visibility label);
2)数据标签引擎:根据用户定义的规则,系统可以对数据的各个字段自动进行打标签操作;
3)策略声明引擎:系统能够基于预定义的策略,能够自动将访问特定visibility label的权限赋予用户或用户组。策略引擎作为策略执行点(PDP),提供实时的RBAC和ABAC策略的解析和支持;
4)加密:系统能够对静态或动态数据进行加密,支持第三方的加密算法和库,能够与第三方的秘钥管理系统无缝集成;
5)安全搜索:Search index可能造成数据泄露,本系统能够实现语汇级别的安全,保证数据的索引能够符合数据元素的安全策略;
6)审计:本系统能够自动生成不可篡改的日志,上面记录了所有动作,可以用来验证合规性、预警和数字取证。
随着最新版SqrrlEnterprise 2.0的发布,Sqrrl将从有限的发布阶段接入全面供货阶段。Sqrrl Enterprise还提供了更多基于Apache Accumulo的高级安全工具、增强的分析功能、以及像JSON这样的特性。新的分析功能包括全文搜索,使用Apache Lucene、SQL、统计以及图形搜索。
第4章 参考文献
[1] http://spark.apache.org/docs/1.2.0/security.html
[2] Ji, Changqing, et al. "Big data processing: Big challengesand opportunities." Journal of Interconnection Networks 13.03n04 (2012).
[3] Chang, Qian, Zehong Yang, and Yixu Song. "A scalable mobilelive video streaming system based on RTMP and HTTP transmissions."Advanced Research on Computer Science and Information Engineering. SpringerBerlin Heidelberg, 2011. 113-118.
[4] Rahimian, Fatemeh. "Gossip-Based Algorithms for InformationDissemination and Graph Clustering." (2014).
[5] http://www.datastax.com/what-we-offer/products-services/datastax-enterprise
[7] http://sqrrl.com/product/sqrrl-enterprise/
[8] http://sqrrl.com/resources/
[9] http://sqrrl.com/product/data-centric-security/