课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
相关文章
|
6月前
|
安全
隐语实训营笔记 第二讲
隐私计算通过开源促进数据要素安全流通,解决外循环中的信任问题。隐语开源项目旨在实现数据可用不可见、可算不可识、可控可计量的原则,统一产品度量标准,降低接入难度,构建完备的信任链,以推动数据的开放与共享。
65 0
|
1月前
|
机器学习/深度学习 人工智能 Kubernetes
技术探索之旅:从基础到进阶的心得体会
本文记录了作者在技术领域的学习和实践过程中积累的经验与感悟。文章涵盖了从基础知识的学习、项目实践,到新技术的探索与应用,最终总结出几点对未来技术发展的思考。希望这些分享能够启发更多的技术爱好者,共同进步。
|
6月前
|
API 数据库
课6-匿踪查询和隐语PIR的介绍及开发实践
隐匿查询(PIR)允许用户从服务器检索数据而不暴露查询内容。类型包括单服务器与多服务器方案,以及Index PIR和Keyword PIR。隐语支持SealPIR用于单服务器Index PIR,压缩查询并支持多维和多查询处理。另外,它采用Labeled PSI实现单服务器Keyword PIR,优化了计算和通信效率,基于微软代码并扩展了功能,如OPRF、特定ECC曲线支持和预处理结果保存。隐语提供的PIR相关API包括`spu.pir_setup`和`spu.pir_query`。
课6-匿踪查询和隐语PIR的介绍及开发实践
|
6月前
|
Docker 容器
|
6月前
|
算法 安全 数据安全/隐私保护
隐语实训营笔记 第三讲
隐私计算框架“隐语”提供全面的隐私保护技术,包括PSI、PIR和联邦学习等算法,层次间低耦合,支持开放合作。产品层包含多样化应用,计算层涉及SPU、HEU、TEEU及密码库YACL,资源层有kuscia管理,强调互联互通和跨域管控,旨在实现安全的数据协作。
56 0
|
6月前
|
机器学习/深度学习 算法 安全
2024.3.20隐语训练营第3讲笔记:详解隐私计算框架及技术要点
隐语架构是一个分层设计,支持不同技术路线,确保高内聚、低耦合,增强开放性。它包括产品层(如SecretPad和SecretNote)、算法层(如PSI和PIR协议)、计算层(RayFed和SPU)、资源层(KUSCIA)和互联互通及跨域管控机制。该架构旨在提供高性能、易用的隐私计算解决方案,支持MPC、TEE、SCQL等,并允许不同背景的研究人员参与。
195 0
|
6月前
|
存储 运维 安全
隐语实训营笔记 第一讲
构建数据可信流通体系,确保来源确认、范围界定、过程追溯及风险防范。该体系基于密码学和可信计算,包含身份验证(如CA证书和远程验证)、使用权跨域管控、安全分级测评和全链路审计。可信数字应用身份验证和跨域管控保护数据免于滥用,同时维护上下游利益。通过隐私、可信和机密计算技术,实现数据流通的控制面和数据面的平衡,即“不可能三角”。全链路审计形成内外循环的管控体系,密态天空计算作为基础设施,支持密态数据流通,解决数据安全保险中的定责和定损问题。
40 0
|
人工智能 搜索推荐 开发者
|
前端开发 JavaScript 小程序
微搭低代码零基础进阶课(第四课)
微搭低代码零基础进阶课(第四课)
微搭低代码零基础进阶课(第四课)
|
JavaScript 前端开发
微搭低代码零基础进阶课(第三课)
微搭低代码零基础进阶课(第三课)
微搭低代码零基础进阶课(第三课)