数据站点服务器#
预计阅读时间:10分钟
你将学习的内容#
本指南旨在帮助您了解Datasite的服务器、其工作原理以及如何使用它。
什么是数据站点?#
数据站点是由数据所有者启动的一组服务器集合,旨在实现对资产的有责任访问。在大多数情况下,它由一台或两台服务器组成。
数据站点服务器#
Datasite服务器的核心是一个通用的容器化网络服务器,它促进了对非公开资产的负责任、隐私保护的访问,使数据科学家能够在不直接访问或获取副本的情况下研究这些资产。
其目的是托管数据集或模型,并实现对它们的负责任访问。
远程代码执行
数据站点通过以下方式实现负责任的数据访问:
基于模拟数据的原型设计: 服务器除了托管真实资产外,还同时托管结构相同但实际值为随机生成的模拟/虚拟版本。这使得研究人员在进行远程代码执行前,能够先对分析方案进行原型设计和测试。
人工代码审查: 最基本的数据保护形式。数据科学家可以提交他们基于模拟数据构建的原型代码给数据所有者进行审查和执行,在此过程中数据所有者可以决定哪些操作是可接受的。
隐私增强技术:虽然前两个功能可能支持研究人员在不查看数据集的情况下访问任何类型的数据——数据使用规则可以进一步自动化。隐私增强技术(PETs)有助于扩展人工审核流程。可以通过服务器添加各种隐私增强技术来保护数据,例如访问控制(如预批准查询、速率限制)或差分隐私,从而实现自动化流程。这是当前一个活跃的开发方向。
根据它们托管的数据类型,Datasite的服务器可分为两种类型:
高安全区: 指托管私有敏感数据的服务器,需要高度关注数据管理和访问权限分配,因其存在较高的安全风险。
低端服务器: 仅托管模拟数据的服务器。实际上,这类服务器可以公开访问,因为它不会带来任何安全隐患,例如允许自助注册。
低端与高端的起源
为了在处理敏感数据时提供最高级别的保护,PySyft允许以物理隔离方式部署托管私有数据的服务器(高安全区)。这种将高安全区服务器与不安全网络(如公共互联网或不安全的局域网)进行物理隔离的方式,实际上是服务器所能获得的最高级别保护。
低端(low-side)和高端(high-side)的命名源自安全社区:当系统承载不同级别的机密信息时,断开连接的系统被称为低端和高端,低端指未分类的,高端指机密的(或更高机密级别的)。您可以在此此处阅读更多内容。PySyft实现了多种机制,这些机制的灵感通常来自此类系统中使用的访问策略。
其他类型的服务器#
在Syft生态系统中,有服务于不同目的的多种类型服务器,例如安全飞地服务器或网关服务器,这些将在不同章节中详细介绍。
Datasite 服务器工作原理#
Datasite 服务器有三种变体:
本地开发服务器
单容器
全栈部署
本地开发服务器#
本地开发服务器是一种非常轻量级且快速的部署模式,专为调试和开发目的而设计。它能在本地模拟容器化服务器环境,易于启动和关闭,让用户在实际部署前拥有本地开发环境。
需要指出的是,尽管它很轻量级,但它拥有自己的本地SQLite存储来保存服务器的元数据和数据,并且存储名称与服务器的唯一名称相同。如果您启动一个已有存储的服务器,该存储将被一同加载。了解更多信息请点击这里。
单容器部署#
如标题所示,单容器部署方式轻量级且最适合初学者。它主要用于在Docker或Podman上部署。了解更多信息请点击这里。
全栈部署#
全栈部署专为K8s上的生产部署而设计,支持在云端托管的集群或最终在本地(通过k3d)进行部署。
它附带一套容器和功能:
database: 使用 MongoDB 存储服务器数据,使用 SeeweedFS 存储大型二进制数据
自定义工作负载: 使用Kaniko动态创建Docker镜像和新容器,以实现跨容器的计算扩展
网络功能: 使用rathole支持反向隧道,并允许配置traefik或ingress作为反向代理
编排与可观测性: 通过我们的Helm图表支持轻松部署和升级,并通过opentelemetry实现可观测性
前端: 为服务器托管一个网页客户端。该功能正在开发中。
了解更多关于我们使用k8s的全栈部署方案。
部署#
如前所述,Datasite服务器可以部署在您的:
本地机器: 首先,本地服务器是最简单的入门方式。对于本地开发,您可以按照下文所述使用本地开发服务器进行实验,或者通过部署单容器部署。然而,若要允许外部数据科学家访问您部署的Syft服务器,由于需要扩展网络功能,必须使用k3d进行本地部署。
云端虚拟机: 对于项目初期而言,单容器部署方案可能非常适用。但如果您发现单容器的分析能力受限或需要更强的健壮性,本地k3d全栈部署方案会是不错的选择。
云计算集群: 对于需要高可靠性或更大规模的生产环境部署,在k8s上进行全栈部署是最佳选择。
更多相关信息请参阅部署指南。
这是一个启动开发服务器的简单示例。我们可以像这样使用orchestra API:
import syft as sy
server = sy.orchestra.launch(
name="my_special_server",
reset=True,
port=8093,
)
server.deployment_type
返回的对象sy.ServerHandle允许获取关于您部署的本地服务器的具体信息,例如url或deployment_type。这里的部署类型是python,因为服务器是在Python进程中运行的。
客户端还提供了更多API以便于测试,例如register、login_as_guest等。
server.url
server.port
server.deployment_type
可以传递更多参数来配置您希望使用开发服务器的方式:
dev_mode: True/False,表示在使用服务器进行调试时是否需要详细日志记录server_type:enclave,domain或gatewayserver_side_type:high或low,用于声明您的服务器是用于托管私有数据(high)还是仅模拟数据(low)。高安全级别的服务器对数据使用方式有更严格的防御措施。local_db: True/False,是否要初始化本地数据库create_producer: True/False,表示您的服务器是否可以实例化其他内存服务器来模拟与多个容器的协作n_consumers: 模拟的内存工作节点数量,能够消费调度的工作负载。这是启动和运行作业所必需的,并且要求create_producer设置为True。thread_workers: True/False,是否应使用线程模拟内存中的工作进程association_request_auto_approval: True/False,表示是否应自动批准与其他服务器关联的请求(例如从一个服务器路由到另一个服务器)
连接到数据站点服务器#
连接到服务器需要客户端能够访问该服务器。这可以通过公共IP实现,或者当客户端和服务器处于同一网络(甚至同一台机器)时也可行。
假设服务器可通过公共或内部/本地IP访问,用户可以:
使用他们的凭据以适当的权限连接到服务器
向服务器注册,如果服务器允许的话
为简化说明,我们在此展示第一个示例,更多详细信息请参阅用户API(LINK)。
data_owner_client = sy.login(url="localhost",port=server.port, email="[email protected]", password="changethis")
data_owner_client
data_owner_client.settings
服务器设置#
您可以配置关于Datasite服务器的大部分信息,包括其设置,甚至可以自定义连接时的欢迎消息,以便使用您节点的数据科学家能最清楚地了解服务器的所有权和用途。
你可以在这里了解更多关于Settings API组件的信息。
关闭本地服务器#
要关闭本地开发服务器并删除其相应的本地存储,您可以执行以下操作:
server.land()
安全服务器配置#
Datasite服务器可以部署为多种配置,以优化安全性或自动化程度,或在某种程度上兼顾两者。
以下是您的数据站点可用的主要配置。我们建议您根据数据的敏感性和安全影响,选择最适合您场景的方案:
联网部署: 此设置仅需一台服务器 - 一个同时托管模拟数据和私有数据的高安全服务器,且仅通过审核的研究人员拥有访问权限。顾名思义,在此设置中,数据所有者以外的其他方可直接访问高安全节点。
优势:
熟悉度: 数据科学家可以密切接触私有数据,因为模拟数据集充当了指向真实数据的指针
自动化: 由于数据集是共置的,因此在自动化审批流程方面有很大空间,可以减少审查周期时间并降低人工参与的成本。
资源: 由于只需托管一个服务器,这降低了启动服务器的必要条件
风险:
安全风险: 由于服务器是公开的或数据科学家可以直接访问,可能存在来自以下方面的攻击向量:知晓服务器存在的未知恶意行为者、数据科学家本人,或能够冒充数据科学家的恶意行为者。
法律影响: 尝试启用自动数据发布机制必须符合现行法规。虽然许多组织已成功使用隐私增强技术(如差分隐私)发布数据,但从法律和政策角度来看,技术的应用可能因司法管辖区和解释不同而产生各种影响。
物理隔离部署:该设置需要启动两台服务器——一台托管非敏感模拟数据的低安全级服务器,以及一台托管私有信息的高安全级服务器,且两者之间无法建立连接。在此场景下,数据所有者能通过同步机制控制哪些信息可以在两侧之间传输,其设计灵感源自Bell-LaPadula保密模型:数据从低安全级向高安全级流动时仅需最低安全措施,而高安全级向低安全级传输则需更严格的保护措施。
优势:
安全性: 这为数据提供了最高级别的保护,因为数据所有者能够在细粒度级别控制流入和流出高安全级别服务器的信息,除数据所属组织的员工外,其他任何人都无法访问。
最高控制权限: 数据所有者需要手动审核在两个服务器之间以及与数据科学家共享的代码和资产,便于执行组织关于数据使用和共享的规则
风险:
无 - 鉴于数据所有者可以通过该系统执行现有规则,这种部署方式不会引起隐私和法律团队的担忧,同时还能提供最高级别的安全性。
让你的服务器可被发现!#
Datasite服务器本身很难被发现,因此数据所有者可能需要宣传其面向公众的服务器或与相关研究人员共享凭证。
如果您希望扩大数据的影响力,让更多研究人员发现您的数据、创建新的研究项目并与其他数据所有者协作,我们鼓励您加入DataNet——一个由数据站点组成的网络,它充当注册中心,使研究人员能够在可用的模拟数据集中搜索、发现新的数据站点并提出新项目。
你可以在这里了解更多关于Network API组件的信息。