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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
密钥管理服务KMS,1000个密钥,100个凭据,1个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 重磅解读:基于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中上线,并且完全开源。

相关文章
|
13天前
|
机器学习/深度学习 数据可视化 大数据
机器学习与大数据分析的结合:智能决策的新引擎
机器学习与大数据分析的结合:智能决策的新引擎
98 15
|
19天前
|
SQL 分布式计算 DataWorks
DataWorks产品测评|基于DataWorks和MaxCompute产品组合实现用户画像分析
本文介绍了如何使用DataWorks和MaxCompute产品组合实现用户画像分析。首先,通过阿里云官网开通DataWorks服务并创建资源组,接着创建MaxCompute项目和数据源。随后,利用DataWorks的数据集成和数据开发模块,将业务数据同步至MaxCompute,并通过ODPS SQL完成用户画像的数据加工,最终将结果写入`ads_user_info_1d`表。文章详细记录了每一步的操作过程,包括任务开发、运行、运维操作和资源释放,帮助读者顺利完成用户画像分析。此外,还指出了文档中的一些不一致之处,并提供了相应的解决方法。
|
18天前
|
分布式计算 DataWorks 搜索推荐
用户画像分析(MaxCompute简化版)
通过本教程,您可以了解如何使用DataWorks和MaxCompute产品组合进行数仓开发与分析,并通过案例体验DataWorks数据集成、数据开发和运维中心模块的相关能力。
|
2月前
|
机器学习/深度学习 存储 大数据
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系,保留最大方差信息,实现数据压缩、去噪及可视化。本文详解PCA原理、步骤及其Python实现,探讨其在图像压缩、特征提取等领域的应用,并指出使用时的注意事项,旨在帮助读者掌握这一强大工具。
92 4
|
8月前
|
分布式计算 大数据 数据处理
Spark RDD(弹性分布式数据集)
Spark RDD(弹性分布式数据集)
|
分布式计算 Java Hadoop
[Spark]Spark RDD 指南三 弹性分布式数据集(RDD)
Spark2.3.0 版本: Spark2.3.0 创建RDD Spark的核心概念是弹性分布式数据集(RDD),RDD是一个可容错、可并行操作的分布式元素集合。
1468 0
|
2月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
156 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
3月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
78 0