课8-隐语SCQL的开发实践

简介: SCQL 是一种用于安全联合数据分析的工具,开放API供用户集成。通过SCDBClient可体验其功能,支持开发封装产品或集成到业务。使用流程包括部署系统、项目设置和联合分析。SCQL部署涉及环境准备及SCDB和SCQLEngine启动。示例场景是金融机构Alice联合电商平台Bob进行用户画像分析。SCDB中,项目、身份认证、数据表管理和权限信息管理是关键概念。用户需创建数据库、用户、项目,并设置权限和CCL后,发起联合分析查询。SCQL架构包含SPU,支持P2P模式,可用于聚合查询等操作。SecretNote UI界面的部署和使用,用于演示SCQL的业务场景。

上篇

如何使⽤ SCQL?

SCQL 开放 API 供⽤户使⽤/集成
• 使⽤ SCDBClient 上⼿体验
• 基于 SCQL API 开发封装⽩屏产品,或集成到业务链路中
image.png

使⽤流程

部署系统 》 项目设置 》 联合分析
image.png

SCQL 部署

image.png

环境准备:

• 机器配置:CPU/MEM 最低 8C16G
• 机构之间的⽹络互通

镜像:

https://registry.hub.docker.com/r/secretflow/scql

SCDB:

• 启动:/home/admin/bin/scdbserver -config=/path/to/config.yml

SCQLEngine

• 启动:/home/admin/bin/scqlengine --flagfile=/path/to/gflags.conf

SCQL 使⽤示例

假设场景:⾦融机构 Alice 想联合电商平台 Bob 做联合⽤户画像分析
Alice 希望统计不同信⽤等级,年龄在 20 岁到 30 岁之间且为电商平台 Bob 的活跃⽤户的⼈数,以及平均收⼊和平均交易额
image.png

SCDB

SCQL 概念

• Project: 多个参与⽅在协商⼀致后加⼊到同⼀个项⽬中进⾏多⽅安全数据分析
• 参与⽅身份认证:参与⽅执⾏ query 时需要进⾏身份认证
• 数据表管理:管理参与分析的数据表的 schema 信息
• 权限信息管理:表字段的权限信息,特别是 CCL 信息
⽤户在每次执⾏ query 的时候,均需要提供上述信息,上⼿成本较⾼
image.png

创建⽤户

SCDB 内置了⼀个权限受限的 root ⽤户,⽅便系统 bootstrap
• root ⽤户只能做 CREATE database/user 等操作
• root ⽤户⽆法修改普通⽤户设置的 CCL,⽆法发起查询(DQL)
• root ⽤户滥⽤不会导致数据泄露
image.png
image.png

防⽌伪造身份攻击
image.png

创建项⽬ & ⽤户授权

• 创建⼀个名为 db_test 的数据库(项⽬)
CREATE DATABASE db_test;
• ⽬的:将参与合作⽅添加到项⽬中
root> GRANT CREATE, GRANT OPTION, DROP ON dbtest.* TO alice

创建表

• ⽬的:参与⽅导⼊联合分析的数据表
image.png

设置 CCL

image.png

发起联合分析查询

DQL
image.png

SCQL Architecture & Workflow

image.png

SCQL x SPU

SCQL use SPU as a lib
• PPHLo C++ API 接⼊
• ColocatedIO 模式
image.png
image.png

示例:Aggregation w/ group by

image.png

以中心化模式的 SCQL 为例,讲解了 SCQL 的集成/ 使用的最佳实践


SecretNote,以UI界面的方式,上手体验P2P模式的SCQL

下篇

使⽤流程

部署系统 》 项目设置 》 联合分析
image.png

安装部署

image.png

1.部署 SCQL p2p 节点

• 单机 p2p 部署模式:https://www.secretflow.org.cn/zh-CN/docs/scql/0.5.0b2/intro/p2p-tutorial
image.png

• 多节点 p2p 部署模式:https://www.secretflow.org.cn/zh-CN/docs/scql/0.5.0b2/topics/deployment/how-to-deploy-p2p-cluster

2.部署启动 SecretNote

image.png

scql初始化

# openssl 1.1.0版本以上
git clone https://github.com/secretflow/scql
cd scql/examples/p2p-tutorial
bash setup.sh

image.png

拉起scql docker服务

docker-compose -p tf-sn up -d

image.png

安装启动secretnote-scql

pip install -U secretnote
secretnot --mode=scql --port 10000 --party=alice --host=http://10.8.3.155:8081 --allow-root
secretnot --mode=scql --port 10001 --party=bob --host=http://10.8.3.155:8082 --allow-root

邀请bob加入demo项目

image.png

SCQL使用示例

创建表

image.png

设置CCL

image.png

验证CCL

image.png

业务场景结果

image.png

番外

更新docker版本

curl -fsSL https://get.docker.com/ | sh

修改docker源(国内加速器)

vim /etc/docker/daemon.json

{
   
  "registry-mirrors": ["https://docker.mirrors.sjtug.sjtu.edu.cn"]
}

重启docker

systemctl restart docker
相关文章
|
SQL 安全 数据挖掘
课7-隐语SCQL的架构详细拆解
SCQL是安全协作查询语言,针对多⽅隐私保护的数据分析。它在不泄露数据隐私的情况下,允许互不信任的参与⽅联合分析数据。SCQL采用半诚实安全模型,支持多⽅协作(N大于等于2方),并提供MySQL兼容的SQL接口。关键特性包括列级别授权(CCL)、多种密态协议支持和跨多种数据源接入。CCL是列控制列表,定义数据使用约束。SCQL架构包括SCDB(不参与计算)和SCQLEngine(部署在数据参与⽅),通过流程图和架构图展示其工作原理,适用于医疗研究、联合营销和保险理赔等场景。
|
机器学习/深度学习 供应链 安全
TSMixer:谷歌发布的用于时间序列预测的全新全mlp架构
这是谷歌在9月最近发布的一种新的架构 TSMixer: An all-MLP architecture for time series forecasting ,TSMixer是一种先进的多元模型,利用线性模型特征,在长期预测基准上表现良好。据我们所知,TSMixer是第一个在长期预测基准上表现与最先进的单变量模型一样好的多变量模型,在长期预测基准上,表明交叉变量信息不太有益。”
774 1
|
网络协议 Windows
59【工控通信】ModbusTCP通讯之ModbusPoll客户端工具配置
【工控通信】ModbusTCP通讯之ModbusPoll客户端工具配置
951 0
|
10月前
|
机器学习/深度学习 编解码
《攻克GANs训练难题:破解模式坍塌迷局》
生成对抗网络(GANs)在图像生成等领域展现巨大潜力,但模式坍塌问题严重影响其性能。模式坍塌指生成器生成的样本多样性急剧降低,仅覆盖部分真实数据分布。原因包括生成器与判别器失衡、损失函数局限性及数据分布复杂性。解决策略涵盖改进训练策略、优化损失函数、增强生成器多样性和利用辅助信息等,通过这些方法可有效缓解模式坍塌,提升GANs的应用效果。
405 16
|
SQL 安全 数据挖掘
隐私计算实训营第7讲:隐语SCQL的架构详细拆解丨隐私计算实训营 第1期
SCQL是安全协作查询语言,让不信任的多方能在保护隐私的前提下进行联合数据分析。它假设参与者半诚实,支持多方(N>=2)合作,且具备SQL语法支持和性能优化。SCQL提供类似SQL的用户界面,通过CCL机制允许数据所有者控制数据使用权限。系统基于SPU的MPC框架运行,适用于多个应用场景。
499 0
|
数据处理 Python
Python 高级技巧:深入解析读取 Excel 文件的多种方法
在数据分析中,从 Excel 文件读取数据是常见需求。本文介绍了使用 Python 的三个库:`pandas`、`openpyxl` 和 `xlrd` 来高效处理 Excel 文件的方法。`pandas` 提供了简洁的接口,而 `openpyxl` 和 `xlrd` 则针对不同版本的 Excel 文件格式提供了详细的数据读取和处理功能。此外,还介绍了如何处理复杂格式(如合并单元格)和进行性能优化(如分块读取)。通过这些技巧,可以轻松应对各种 Excel 数据处理任务。
743 16
|
机器学习/深度学习 分布式计算 安全
联邦学习的简要概述
联邦学习(Federated Learning, FL)是一种分布式机器学习方法,旨在保护数据隐私的同时,利用多方数据进行模型训练。
1351 5
|
关系型数据库 MySQL 数据库
如何使用Docker部署MySQL数据库?
【10月更文挑战第1天】如何使用Docker部署MySQL数据库?
658 0
|
块存储 芯片 内存技术
计算机组成原理(4)-----Cache的原理及相关知识点(1)
计算机组成原理(4)-----Cache的原理及相关知识点
1246 2
|
Ubuntu Linux Docker
课4-隐语SecretFlow、SecretNote安装部署
SecretFlow是支持Python 3.8及以上版本的隐私计算框架,兼容CentOS 7、Anolis8、Ubuntu 18.04等等。它提供两种安装包:所有需求的大体积`secretflow`和仅含基础功能的小体积`secretflow-lite`。用户可通过Docker、pip或源码安装。安装后,可使用Docker镜像在本地部署,并通过Ray进行集群仿真。更多详细信息和部署指南可在官方手册中找到。此外,SecretFlow还提供了类似Jupyter Notebook的SecretNote工具,实现多节点代码自动执行和跟踪。