Translate to Chinese:
摘要
Apache Spark 等分布式数据分析平台可实现经济高效的处理和存储。这些平台允许用户将数据分发到多个节点,并允许在这些分布式数据上执行任意代码。然而,这些功能带来了新的安全和隐私挑战。首先,用户提交的代码可能包含恶意代码以规避现有的安全检查。此外,为不同类型的数据(例如,文本、图像等)提供细粒度的访问控制对于不同的数据存储选项可能不可行。
为了应对这些挑战,我们提供了一个专为分布式数据分析平台量身定制的细粒度访问控制框架,该框架通过两个不同的防御层防止规避攻击。访问控制是通过在提交的数据分析作业上运行时注入访问控制逻辑来实现的。主动安全层利用最先进的程序分析来检测潜在的恶意用户代码。反应式安全层包括二进制完整性检查、基于检测的运行时检查和沙盒执行。据我们所知,这是第一个使用代码重写和静态程序分析为分布式数据分析平台提供基于属性的细粒度访问控制的工作。此外,我们评估了我们的安全系统在不同设置下的性能,并表明由于增加安全性而导致的性能开销很低。
1 简介
近年来,收集信息的能力呈指数级增长,因此,越来越多的数据得到收集范围从社交媒体帖子到医疗健康记录。为了处理如此大量的数据,一种有意义且具有成本效益的方法是使用分布式数据处理框架,例如 Apache Spark。在分布式数据分析平台中,数据被拆分并存储在多个节点上,用户的数据请求是靠近数据并行处理。这些框架可以通过添加更多节点来扩展数据量。由于它们的灵活性、能力以及处理大数据的日益增长的需求,预计大规模数据处理市场将未来几年将显着增长[14]。
在这些分布式数据分析框架中,用户可以提交用于开发自定义机器学习或数据分析的自定义任务。不同类型数据格式的模型(例如,JSON、文本、图像、等等。)。同时,这些用户提交的任务的执行引入了新的安全和隐私挑战。传统的在分布式框架中正确规范数据访问的解决方案是基于角色和属性的访问控制。这些访问控制机制可以是粗粒度的访问控制(在文件级别)或细粒度的访问控制(键值级别)。
通常,为了实现访问控制机制,我们依赖关于数据管理框架的插件机制。然而,如果分布式数据框架不提供定义的插件对于访问控制,则安全机制回退到底层存储系统。例如,Apache Spark 没有带有定义的访问控制模型。它提供了其他形式安全性,例如使用 Kerberos 进行身份验证、Web 界面访问控制但不提供对被处理的访问控制数据[31]。为此,我们需要依赖底层数据存储,例如 HDFS、S3 等。在某些情况下,这可能是可以接受的,但如果我们想提供统一的细粒度的访问控制。
此外,用户有时可以制作数据分析任务以通过利用系统规避这些现有的访问控制方法API,以编程方式禁用安全管理器,运行时代码注射和仪器。例如,反射 API 可以访问/操作分布式的内部属性数据分析平台(例如 Apache Spark、Hadoop、Hive、Pig、Livy、等等)。允许任务覆盖/禁用现有的安全管理器使用户能够执行安全关键操作(例如,篡改现有系统、下载和执行代码从外部来源,将数据上传到外部来源等)。代码注入和检测到分布式数据分析平台还可以访问和更改系统的内部属性和行为,以规避任何安全机制。代码注入可以发生在两个级别,即(1)加载和使用恶意代码作为任务中的库; (2)加载和使用恶意代码来改变平台的行为。此外,在一些场景代码注入可以使用查询语言完成例如 SQL(例如,SQL 注入攻击)。构建数据分析平台安全系统的另一个大问题是 API 兼容性。理想情况下,我们不想强制执行用户重写他们现有的工作以利用新的安全系统。由于需要更改用户的现有代码可能降低系统的可用性并需要昂贵的修改。显然,这种方法既费时又昂贵。为了解决这些问题,我们提出了 SecureDL,一种细粒度的访问具有两个不同安全层的控制框架主动和反应性的。