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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*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中上线,并且完全开源。

相关文章
|
19天前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
18天前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。
|
18天前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
28天前
|
传感器 人工智能 监控
拔俗多模态跨尺度大数据AI分析平台:让复杂数据“开口说话”的智能引擎
在数字化时代,多模态跨尺度大数据AI分析平台应运而生,打破数据孤岛,融合图像、文本、视频等多源信息,贯通微观与宏观尺度,实现智能诊断、预测与决策,广泛应用于医疗、制造、金融等领域,推动AI从“看懂”到“会思考”的跃迁。
|
3月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
281 2
|
3月前
|
存储 缓存 NoSQL
【📕分布式锁通关指南 12】源码剖析redisson如何利用Redis数据结构实现Semaphore和CountDownLatch
本文解析 Redisson 如何通过 Redis 实现分布式信号量(RSemaphore)与倒数闩(RCountDownLatch),利用 Lua 脚本与原子操作保障分布式环境下的同步控制,帮助开发者更好地理解其原理与应用。
212 6
|
4月前
|
存储 缓存 NoSQL
Redis核心数据结构与分布式锁实现详解
Redis 是高性能键值数据库,支持多种数据结构,如字符串、列表、集合、哈希、有序集合等,广泛用于缓存、消息队列和实时数据处理。本文详解其核心数据结构及分布式锁实现,帮助开发者提升系统性能与并发控制能力。
|
8月前
|
数据采集 存储 数据可视化
分布式爬虫框架Scrapy-Redis实战指南
本文介绍如何使用Scrapy-Redis构建分布式爬虫系统,采集携程平台上热门城市的酒店价格与评价信息。通过代理IP、Cookie和User-Agent设置规避反爬策略,实现高效数据抓取。结合价格动态趋势分析,助力酒店业优化市场策略、提升服务质量。技术架构涵盖Scrapy-Redis核心调度、代理中间件及数据解析存储,提供完整的技术路线图与代码示例。
786 0
分布式爬虫框架Scrapy-Redis实战指南
|
2月前
|
NoSQL Java 调度
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
分布式锁是分布式系统中用于同步多节点访问共享资源的机制,防止并发操作带来的冲突。本文介绍了基于Spring Boot和Redis实现分布式锁的技术方案,涵盖锁的获取与释放、Redis配置、服务调度及多实例运行等内容,通过Docker Compose搭建环境,验证了锁的有效性与互斥特性。
168 0
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)