重磅解读:基于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中上线,并且完全开源。

相关文章
|
16天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
48 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
1月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
59 0
|
14天前
|
存储 运维 负载均衡
构建高可用性GraphRAG系统:分布式部署与容错机制
【10月更文挑战第28天】作为一名数据科学家和系统架构师,我在构建和维护大规模分布式系统方面有着丰富的经验。最近,我负责了一个基于GraphRAG(Graph Retrieval-Augmented Generation)模型的项目,该模型用于构建一个高可用性的问答系统。在这个过程中,我深刻体会到分布式部署和容错机制的重要性。本文将详细介绍如何在生产环境中构建一个高可用性的GraphRAG系统,包括分布式部署方案、负载均衡、故障检测与恢复机制等方面的内容。
67 4
构建高可用性GraphRAG系统:分布式部署与容错机制
|
23天前
|
运维 供应链 安全
SD-WAN分布式组网:构建高效、灵活的企业网络架构
本文介绍了SD-WAN(软件定义广域网)在企业分布式组网中的应用,强调其智能化流量管理、简化的网络部署、弹性扩展能力和增强的安全性等核心优势,以及在跨国企业、多云环境、零售连锁和制造业中的典型应用场景。通过合理设计网络架构、选择合适的网络连接类型、优化应用流量优先级和定期评估网络性能等最佳实践,SD-WAN助力企业实现高效、稳定的业务连接,加速数字化转型。
SD-WAN分布式组网:构建高效、灵活的企业网络架构
|
17天前
|
SQL 机器学习/深度学习 分布式计算
Spark快速上手:揭秘大数据处理的高效秘密,让你轻松应对海量数据
【10月更文挑战第25天】本文全面介绍了大数据处理框架 Spark,涵盖其基本概念、安装配置、编程模型及实际应用。Spark 是一个高效的分布式计算平台,支持批处理、实时流处理、SQL 查询和机器学习等任务。通过详细的技术综述和示例代码,帮助读者快速掌握 Spark 的核心技能。
45 6
|
15天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
59 2
|
18天前
|
监控 算法 网络协议
|
16天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
56 1
|
16天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
17天前
|
分布式计算 大数据 OLAP
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
48 1