重磅解读:基于Occlum和BigDL构建端到端的安全分布式Spark大数据分析方案

简介: 重磅解读:基于Occlum和BigDL构建端到端的安全分布式Spark大数据分析方案

如何在AI和大数据应用中保护数据的安全和隐私是一个现实挑战。

本文介绍了基于英特尔SGX的隐私保护机器学习方案。方案应用了蚂蚁集团发起的开源TEE操作系统Occlum,英特尔开源的BigDL PPML,支持端到端的安全分布式大数据分析(例如Spark)和AI应用。

该方案已上线到Occlum 1.0 版本中(历时四年打磨,可信执行环境开源操作系统Occlum v1.0正式发布!

作为示例,文章展示了GBDT样例的详细部署步骤以及BigDL PPML 在蚂蚁链摩斯隐私计算平台的应用。最后,文章介绍了Occlum和BigDL PPML的新特性和新应用场景。

背景:面向大数据与AI 的数据融通面临严峻安全风险数字化转型凸显了数据的重要价值,加速了数据的流转,也带来了复杂的多方数据存储、流转与处理问题。特别是在 AI、大数据等应用中,由于单个组织难以掌握到 AI 与大数据应用所需要的全部数据,因此需要通过多方数据合作,实现数据资源的融通利用。例如,在训练金融 AI 算法时,单体金融机构的数据往往无法满足算法训练的需求,此时可以通过联合建模的方式,实现数据的共享,并共同创建、维护该 AI 模型。由于跨机构、跨行业的数据融合、联合分析和建模的需求日趋增加,数据安全风险急剧增长。这一方面是由于数据本身可复制、易传播,在传统安全模式下,数据一经分享难以追踪。另一方面,数据持续流动会导致责任划分不明确、权限控制困难、以及问题难以追责等问题。保证数据的安全可靠成为重中之重。蚂蚁集团和英特尔打造端到端隐私保护机器学习方案蚂蚁集团一直积极探索隐私保护机器学习领域,并发起了开源项目Occlum。Occlum 是用于多种TEE(包含英特尔® SGX )的内存安全多进程用户态操作系统(LibOS)。使用 Occlum 后,机器学习工作负载等只需修改极少量(甚至无需修改)源代码即可在TEE 上运行,以高度透明的方式保护了用户数据的机密性和完整性。用于英特尔® SGX 的 Occlum 架构如图所示。

image.png

Occlum有以下显著特征:●高效的多任务处理。Occlum提供单Enclave多进程的轻量级执行模式,与单Enclave单进程的LibOS相比,Occlum进程在启动时最高快1000倍,在IPC上快3倍。此外,如果需要,Occlum还提供了一个可选的多域软件故障隔离方案来隔离Occlum进程。●支持多个文件系统。支持多种类型的文件系统,如只读散列文件系统(用于完整性保护)、可写加密文件系统(用于机密保护)、内存文件系统,不受信任的主机文件系统(用于LibOS和主机操作系统之间方便的数据交换)等等,满足应用的各种文件I/O需求。●内存安全。Occlum是业内第一个用内存安全编程语言(Rust)编写的LibOS。Rust语言是追求内存安全,且不带来额外性能损耗的编程语言。因此,在Occlum中杜绝了低级的内存安全错误,用于托管安全关键的应用程序时更值得信赖。●支持musl-libc和glibc应用,支持超过150个常用系统调用,绝大多数程序无需改动(甚至无需重新编译)或者只需少许改动即可运行在Occlum LibOS之上。●支持多种语言开发的应用,包括但不限于c/c++,Java,Python,Go和Rust。●易用性。Occlum提供了类容器的用户友好的构建和命令行工具。在SGX Enclave内的Occlum上运行应用程序可以非常简单。在Occlum提供的安全内存运行环境上,英特尔和蚂蚁集团技术团队基于BigDL构建了一个分布式的隐私保护机器学习(Privacy Preserving Machine Learning, PPML)平台,能够保护端到端(包括数据输入、数据分析、机器学习、深度学习等各个阶段)的分布式人工智能应用。图 2.  BigDL PPML 软件栈与传统的隐私计算框架不同,BigDL PPML提供了一个可以运行标准大数据应用的环境,希望帮助现有的大数据/分布式应用无缝的迁移到端到端安全的环境中,并且强化每个环节的安全性。在此基础上,PPML也提供了安全参数聚集、隐私求交和联邦学习等高阶功能,帮助行业客户打破数据孤岛,进一步实现数据赋能。以Apache Spark为例,通过BigDL PPML和Occlum提供的Spark in SGX功能,可以让现有的Spark应用,直接运行到SGX环境中,而不用做任何代码修改。受益于第三代至强平台提供的大容量SGX EPC,Spark的内存计算可以完全被SGX保护,并且可以根据数据规模进行横向拓展,从而轻松支持TB级别的数据规模;另一方面,负责完整性的远程证明功能,也被无感的添加到了整个流程中,应用开发者不需要显式的增加远程证明代码,即可通过Occlum和PPML提供的远程证明功能实现实例的远程证明和校验。

image.png

整个应用的部署过程如下:

●环境部署阶段:

  1.  1. 集群管理员设置Kubernetes SGX插件
  2.  2.集群管理员配置远程证明服务(Attestation Service)

●应用部署阶段:

  1.  1. 开发人员提前注册应用(应用审核、权限申请和代码审计等)
  2.  2. 开发人员提交应用
  3.  3. 开发人员获取结果

基于GBDT样例的方案部署过程基于SGX与Occlum,BigDL PPML提供了大数据分析、机器学习、深度学习等应用的支持。以下以Spark MLlib GBDT分布式训练为例,介绍PPML在机器学习应用方面的实践步骤与推荐配置。1.  基于Occlum SGXBigDL PPML运行

a.部署Kubernetes集群、英特尔® SGX 插件,如下所示

image.png

image.png

为了利用有限EPC内存资源来进行更大数据量的训练,可以减小Spark executor JVM堆内存的分配,将临时数据溢写到磁盘来减小内存资源的需求。例如,采用90个Spark executor,每个executor分配5GB JVM堆内存与13GB Occlum user space总内存的配置,即可利用1200GB EPC总内存实现500GB大小数据集的Spark GBDT训练。压缩Spark executor的内存在一方面能够以较少的EPC资源支持大数据规模的训练,然而另一方面,数据溢写带来的大量数据IO也将降低训练性能,用户可根据实际的资源与需求进行适当的配置。BigDL PPML在蚂蚁链摩斯隐私计算平台的应用蚂蚁链摩斯隐私计算平台(大规模隐私计算商用平台)基于可信执行环境(TEE)、多方安全计算等技术,解决企业数据协同计算过程中的数据安全和隐私保护问题,实现数据可用不可见,多方协同释放数据要素价值。目前产品已广泛应用于联合营销、政务数据安全开放、联合风控、多方联合科研等业务场景。至今已服务200+机构,在银行、保险、电信、汽车、零售、互联网等10多个行业落地,是国内最早大规模商用的隐私计算产品。摩斯团队长期以来一直与 Occlum 开发者和BigDL PPML团队深度合作,协力打造完善Spark in SGX 能力,目前此能力已经被集成到摩斯隐私计算平台的TEE 引擎模式中。摩斯基于 BigDL PPML的Spark in SGX能力,实现了分布式机器学习全流程(数据预处理、特征工程、GBDT训练预测、LR 训练预测、评估等组件)和数据分析 (SQL),在可支持数据规模、多机分布式扩展能力和计算性能方面均较之前单机版本有大幅度的提升。目前摩斯隐私计算平台TEE 引擎仍然在持续优化中,基于BigDL PPML的强大开发效率,未来会提供更多组件功能和特性,并即将在蚂蚁集团内部和外部的多个场景中落地。

image.png

在传统的SGX SDK/LibOS运行过程中频繁的Enclave切换会带来额外的系统性能开销。这些Enclave切换简单来说就是做OCALL/ECALL,包括线程调度, IO操作等。这都需要通过OCALL切换到非可信区,完成操作后再返回到Enclave中。为了尽量减少可信区与非可信之间的切换,Occlum创新性的把协程技术和Linux IO-URing的特性带入了TEE LibOS里。●轻量级的协程及Rust的异步运行时Occlum 基于轻量级的协程和Rust异步运行时技术,在Enclave里实现了如下图所示的线程调度机制。在LibOS内部实现线程的创建和调度,性能将会有长足的提高。对于机器学习和分布式编排等大型应用,运行时需要创建极多的线程(>1000),传统的SGX线程(实质上是Host OS线程),既耗费海量内存,线程性能也不够好。在Occlum上,以上问题可以被创造性的轻量级的协程机制解决。而且,轻量级协程机制对于应用程序来说完全是无感的,应用仍然可以按照标准的Linux线程模式开发和运行。

BigDL PPML端到端加解密的优化和拓展目前,主流的云存储和分布式存储都已经支持了端到端的存储加密。简单来说,数据会被客户端加密后,上传到存储服务器;存储服务器只存储加密数据,即使服务器被攻破,攻击者也无法解密数据。实际应用中,一般需要引入密钥管理服务(KMS)。密钥管理服务的引入,可以使得整个加密和解密过程变得更加的无感。以HDFS和阿里云OSS为例,当客户端发现读取到的文件是一个加密文件时,客户端会向密钥管理服务请求密钥;密钥管理服务确认客户端身份和权限后,会提供解密密钥,客户端就可以通过密钥解开数据。整个加解密过程对上层数据应用,如数据分析和机器学习,没有影响。但是,这种架构也有一些不足:(1) 强制绑定文件系统和密钥管理服务;(2) 无法支持普通的存储。如果用户希望在现有的存储和密钥管理服务上构建上述流程,需要大量的开发工作。为了解决上述问题,BigDL PPML设计了一套可以自由拼接和拓展的端到端加密方案。通过抽象密钥管理API和对Spark Context的加解密订制,用户只需要把SparkContext换成PPMLContext,就可以实现对任意密钥管理服务器和存储的支持。其基本流程如图所示:1.应用通过PPMLContext读取加密文件2.PPMLContext自动从指定的密钥管理服务获取解密密钥3.应用解密数据并进行计算4.应用将计算结果加密后,写入到存储系统整个流程对数据应用无修改,用户只需要对接具体的密钥管理服务,即可实现完整的端到端加解密。目前,该原型已经在BigDL PPML中上线,并且完全开源。

相关文章
|
4月前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
3485 74
|
5月前
|
存储 Kubernetes 微服务
Dapr:用于构建分布式应用程序的便携式事件驱动运行时
Dapr 是一个可移植、事件驱动的运行时,简化了分布式应用程序的开发。它支持多语言、多框架,适用于云和边缘计算环境,提供服务调用、状态管理、消息发布/订阅等构建模块。通过 sidecar 模式,Dapr 帮助开发者轻松应对微服务架构的复杂性,实现弹性、可扩展的应用部署。
398 9
Dapr:用于构建分布式应用程序的便携式事件驱动运行时
|
6月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1061 3
|
9月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
在数字化转型中,企业亟需从海量数据中快速提取价值并转化为业务增长动力。5月15日19:00-21:00,阿里云三位技术专家将讲解Kafka与Flink的强强联合方案,帮助企业零门槛构建分布式实时分析平台。此组合广泛应用于实时风控、用户行为追踪等场景,具备高吞吐、弹性扩缩容及亚秒级响应优势。直播适合初学者、开发者和数据工程师,参与还有机会领取定制好礼!扫描海报二维码或点击链接预约直播:[https://developer.aliyun.com/live/255088](https://developer.aliyun.com/live/255088)
619 35
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
|
9月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
269 11
|
8月前
|
人工智能 分布式计算 大数据
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
417 0
|
4月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
5月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
6月前
|
数据采集 存储 NoSQL
Scrapy 框架实战:构建高效的快看漫画分布式爬虫
Scrapy 框架实战:构建高效的快看漫画分布式爬虫
|
11月前
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
564 79

热门文章

最新文章