摘 要

由于数据联合难以在不同组织之间直接共享数据,因此通过提供抽象的数据接口,为不同组织之间的数据相关合作带来了新的机遇。随着云计算的发展,组织将数据存储在云上,以实现数据处理的弹性和可扩展性。现有的数据放置方法通常只考虑一个方面,即通信成本或时间成本,而不考虑数据处理工作的特性。本文提出一种在云上使用来自不同组织的数据进行安全数据处理的方法——数据联邦 FedCube,以解决上述问题。

关键字

数据联邦;云计算;隐私安全;数据存储

0 引 言

数据共享是不同组织之间进行数据相关协作的第一步,例如,使用来自多方的数据进行联合建模。同时,由于量大和/或所有权问题,很难与协作者直接共享原始数据。数据联邦实际上聚合了来自不同组织的数据,是在不直接共享原始数据的情况下,支持数据相关协作的适当解决方案。数据联邦以云服务为基础,作为建立抽象数据接口的中间层。它提供了一个虚拟数据视图,参与的组织可以在该视图上协作存储、共享和处理数据。

由于高效率和低成本使得大规模租赁计算、存储和网络等资源成为可能,越来越多的组织倾向于将数据外包到云上。通过现收现付模式,云计算 (cloud) 为组织存储和处理大量数据提供了便利;云服务为不同的层带来了大量的资源。云上通常有基础设施即服务 (IaaS)、平台即服务(PaaS) 和软件即服务 (SaaS) 三种类型,如可以处理数据的虚拟机 (VM) 是在 IaaS 层提供的。VM 是计算机的仿真器,可以看作是网络中的计算节点。数据存储服务是在 PaaS 层提供的。通过数据存储服务,可以将无限的数据存储在云端。云提供商承诺提供三个功能,即随时可用的无限计算资源、随时可用的动态硬件资源供应,以及机器和按需支付、释放的存储。动态供应使云租户/用户能够在云上,以合理的成本构建可延展的系统。有了这些特性,不同组织之间在云上的科学协作就成为了一个切实可行的解决方案。

尽管云计算有很多优点,但云上的数据安全问题比较严重。当数据存储在云上时,保密性至关重要。只有经过授权的租户 / 用户才能访问数据。以传统的数据保密方式进行加密,如同态加密和基于身份的加密。此外,隔离技术(通过特定的访问控制为不同的作业提供安全的执行空间 ) 也用于控制对云上数据的访问。一个作业由一个数据处理程序或一组数据处理程序组成,这些程序将在云上执行,以便从输入数据中生成新知识。基于存储在云上的数据进行科学协作时,可以结合加密算法和隔离技术,保证云上数据的保密性和安全性。在使用云服务时,租户 / 用户必须为此付费,即他们直接将数据存储在云上时,需要为云存储服务付费。广泛使用的云服务提供商,如 Amazon Web Services (AWS) Cloud1、Microsoft Azure Cloud2、百度智能云 Cloud3,提供了不同的数据存储类型,如热数据存储、低频率数据存储、冷数据存储、存档数据存储等数据存储服务。

在云上存储数据的成本因类型而异。为了降低在云上存储和处理数据的云上资源成本,需要基于数据放置算法选择合适的数据存储类型。然而,在构建云上数据存储的数据放置算法时,没有很好地利用作业执行频率。

本文提出了一种解决方案——数据联邦FedCube,使数据处理能够在云上进行,用于不同组织之间的科学协作。FedCube 基于云的安全数据处理平台,由一个多目标成本模型和一个数据置入算法组成。该平台支持使用存储在云上的加密数据进行安全数据处理,以便不同组织之间进行协作。多目标成本模型由云上资源成本和执行时间组成。数据放置算法基于成本模型创建数据存储计划,以降低成本和作业的执行时间。在平台上通过模拟和大量实验验证了所提算法,并运营了广泛使用的基准测试 Wordcount和 COVID-19 的实际数据处理应用。仿真和实验基于一个广泛使用的云——智能云进行。

1 相关平台介绍

1.1 数据置入

数据置入对于作业的云上资源成本和执行时间至关重要。为减少执行时间,可以基于图划分算法来减少数据传输。此外,可以利用不同作业之间的数据依赖性,减少传输数据的时间和金钱成本。但是,这些方法只考虑了减少执行时间这个目标,不能用于将数据放在云上的不同存储类型中。多重成本的加权函数虽然可用于实现多个目标,可以生成帕累托最优解决方案,但是没有考虑在云上存储数据的成本。负载均衡算法和动态配置算法在不考虑云上数据存储类型的情况下,可以生成最优配置计划,以最小化云上资源成本。

1.2 数据安全技术

为了保护数据安全,通过赋予不同级别权限来控制数据的可访问性,以避免未经授权或恶意访问云上的数据。此外,还可以利用加密技术和基于数据分区的分布式数据存储计划。联邦学习是为了在训练模型的同时保证数据的保密性,但它并不适用于云上不同组织之间的一般数据处理。此外,还提出了安全隔离的数据处理空间,以保证数据的访问控制和保密性。分离的数据处理空间与公共网络断开连接,确保了本地网络内数据的保密性和安全性。

本文提出了一种既能保证数据处理的安全性,又能降低成本和执行时间的方法。该方法由安全数据处理平台、多目标成本模型和大量数据置入算法组成。该平台不仅为不同的租户/用户提供不同的数据访问控制,而且还利用安全的独立数据处理空间来保证数据安全。成本模型是云上资源使用成本和执行时间的加权函数。数据置入算法生成一个存储计划在云中存储数据,其目标是降低成本和作业的执行时间。

2 数邦平台系统设计

2.1 数邦平台架构设计

FedCube 平台是一个数据联邦平台,为租户 / 用户提供云上的安全数据处理服务。租户/用户可以将他们的数据上传到平台上,并在已部署的公有云或混合云上执行自己编写的程序。此外,只要租户/用户获得了数据所有者的许可,则可以利用来自其他组织的数据完成自己的数据处理任务。该平台的体系结构如图 1 所示,平台的功能架构包括四个模块。

图 1 数邦平台架构设计

(1)环境初始化器 (Environment Initializer)。环境初始化器在协调节点上创建用户账户及其执行空间。创建的用户账户用于用户的安全配置,例如,对其他用户某些数据的访问权限。用户账户还与安全执行空间相关联,用于在集群中执行提交的作业。安全执行空间是不连接任何公网 ( 如 Internet) 的工作空间,可以保证局域网内数据的保密性和安全性。

(2)数据存储管理器 (Data Storage Manager)。数据存储管理器为用户在云上创建一个数据存储账户和存储桶。存储桶是一个独立的存储空间,用于使用自己的权限策略存储数据。数据存储账户用于在平台和用户设备 ( 如计算机 ) 之间传输数据。每个账户与用户数据桶、用户程序桶、输出数据桶、下载数据桶和执行空间桶五个桶相关联。每个账户都有独立的授权密钥 (AK) 和秘密密钥 (SK),租户 / 用户可以使用它们发送或检索存储在桶中的数据。此外,访问权限策略因桶而异。例如,用户对用户数据桶和用户程序桶有读写权限,而对下载数据桶只有读权限。用户可以在用户数据桶中存储数据,同时向用户程序桶提交自己编写的代码。租户 / 用户对输出数据桶和执行空间桶没有读写权限。根据提交的代码生成的程序执行后,输出数据存储在输出数据桶中。输出数据经过保密性审查后,将输出数据传输到下载数据桶。评审由作业输入数据的所有者进行,以避免原始数据或敏感信息出现在作业输出数据中的风险。执行空间桶用于缓存作业的中间数据,这对于后续执行很有用,可以减少无用的重复执行。

(3)作 业 执 行 触 发 器(Job Execution Trigger)。作业执行触发器启动集群中作业的执行。用户可以通过 web 门户将用户编写的代码上传到平台上,然后使用作业执行触发器开始程序的执行。一旦触发了程序的执行,就会创建、部署和配置一个集群,然后在集群的计算节点中执行作业。当多个作业在同一个集群中同时启动时,作业执行触发器将创建与作业相同数量的执行空间,以便启用并行执行而不发生冲突。当程序的输入数据由来自其他数据所有者的数据组成时,使用相应的数据接口以避免直接的原始数据共享。比如,用户 U1 和用户 U2,数据接口(I1) 是由数据所有者 ( 用户 U1) 定义的,它与平台上的数据 (D1) 相关联。当用户 U2 获得使用 D1权限后,根据用户 U2 提交的代码生成的程序可以使用接口 I1 对数据 D1 进行处理;当作业需要前一次执行的结果时,也可以使用存储在执行桶中的中间数据。如图 2 所示。

图 2 数邦平台基础设计架构

(4)安全模块(Security Module)。平台使用了四种机制来保证数据安全。第一种机制是在将数据存储到云中之前对其进行加密。加密基于 Rijndael 加密算法。第二种机制是将计算节点与公共网络 ( 如互联网 ) 分开,确保了集群与云上的外部设备 ( 如服务器 ) 之间不允许数据通信。第三种机制是统一的数据访问控制。当用户申请其他用户拥有的数据权限时,数据所有者提供数据访问接口,而不是直接共享原始数据。最后一种机制是由数据所有者检查代码和输出数据,以确保没有数据从输出数据中泄漏。通过这些机制,数据所有者定义的数据接口确保了数据的机密性和安全性,同时确保了不同组织之间的高效合作。

2.2 数邦平台生命周期设计

假设有 n 个科学合作者,每个合作者都有需要保密和安全的私有数据。通过生命周期,我们展示了n个合作者如何处理平台上的数据。

2.2.1 账户生命周期

账户生命周期包括账户创建、数据处理和账户清理三个阶段。首先,创建与平台用户相关的账户;然后,用户可以处理平台上的数据;最后,当用户不再需要该平台时,将删除与该账户相关的数据。

(1) 账户创建阶段。当新用户需要使用平台时,我们创建一个账户并使用环境初始化器模块配置平台,如图 1 所示。对于上述场景中的 n 名协作者,我们为平台上的每个科学协作者创建 n 个账户 (Ut, t 表示协作者的数量 )。首先,将为协调器节点中的每个用户部署作业执行触发器;然后,数据存储管理器为每个用户创建一个存储账户和 5 个存储桶;接着,环境初始化器为每个用户部署安全模块。安全模块包含每个用户的加密和解密信息。这里,加密和解密信息对不同的用户是不同的。

(2)数据处理阶段。账号创建完成后,租户/用户可以在平台上进行数据处理。在处理数据之前,每个用户上传自己的数据和数据接口文件到用户数据桶。如图 3 所示,如果用户 Ui 需要利用来自另一个用户 Uj 的数据,用户 Ui 可以申请该权限。一旦用户 Ui 从用户 Uj 获得权限,其还将获得必要的信息,例如模拟数据,以便使用相应的数据接口访问数据。模拟数据包含原始数据的数据模式和一些随机生成的示例,而原始数据从未与用户共享。用户 Ui 可能同时使用来自其他几个租户 / 用户的数据。然后,用户 Ui可以提交代码来处理数据。为了处理数据,用户 Ui 触发与提交代码相关的作业执行,对应于作业在平台上的执行 ( ji, i 表示执行的次数 )。在作业执行期间,可以直接使用作业的不同执行所生成的中间数据。执行并查看输出数据后,用户Ui 可以从用户下载桶中下载作业 ji 的输出数据。

图 3 数邦平台任务视角生命周期管理

(3)账户清理阶段。当用户不再需要平台时,环境初始化器模块将从平台中删除相应的数据、存储桶和账户。

2.2.2 作业生命周期

作业生命周期由初始化、数据同步、作业执行和终结四个阶段组成。

(1)初始化阶段。初始化阶段是为在平台上执行作业准备环境。准备工作包含供应、部署和配置。三个步骤 首先,VM 作为计算节点配给作业。通常在两种情况下可以为作业配置现有的VM,第一种情况是平台上有足够的实时计算节点,这些节点对应于同一用户执行相同或其他作业。第二种情况是其他租户 / 用户的程序有足够的实时计算节点,所有相关租户 / 用户都允许共享计算节点;否则,环境初始化器模块将动态创建新的 VM 作为计算节点,其中包含执行作业所需的工具。然后,为了执行作业,在分配的 VM上部署适当的执行空间。为了启用数据访问,每个节点中都配置了执行空间。例如,AK 和 SK文件被转移到计算节点,以使数据同步。

(2)数据同步的阶段。在数据同步阶段,数据存储模块对存储在云上的数据或数据接口进行同步。此外,与提交的代码对应的脚本或文件也被传输到在初始化阶段创建的执行空间中。

(3)执行阶段的工作。执行阶段是在相应VM 的执行空间中执行作业的周期。平台可以动态监控每个作业的执行频率,计算数据存储成本。如图 3 所示,在同步来自 bucket 的数据之后,与提交的代码对应程序将处理输入数据。执行可以在单个计算节点或多个计算节点中执行,以减少总体执行时间。执行之后,输出数据被传输到用户的输出桶中。一旦数据被输入数据的数据所有者审查和批准,则它被安全模块加密,并传输到下载桶供用户访问。

(4)终结阶段。在最终阶段,数据存储管理器上传作业的加密中间文件;然后,环境初始化器模块删除相应的执行空间。如果一个节点不包含任何执行空间,则环境初始化器会释放该节点,即删除该节点,以减少租用相应VM 的云上资源使用成本。

3 结束语

当机构将自有科技大数据向外融合集成时,选择适当的数据放置策略以降低成本至关重要。本文提出的解决方案可使用来自不同组织的数据在云上进行数据处理。更多技术细节与案例请详见百度数据联邦计算平台官方网站 http://fedcube.baidu.com/。

(参考文献略)

来源: 《中国人工智能学会通讯》