【隐私计算实训营008——SCQL】

1.SCQL使用/集成最佳实践

目前SCQL只开放API供用户使用/集成

  • 使用SCDBClient上手体验
  • 可以基于SCQL API开发封装白屏产品,或集成到业务链路中

在这里插入图片描述
在这里插入图片描述

1.1 部署系统

  • 环境配置:
    • 机器配置:CPU/MEM最低8C16G
    • 机构之间的网络互通
  • 镜像:secretflow/scql
  • SCDB
    • 启动:/home/admin/bin/scdbserver -config=/path/to/config.yml
  • SCQLEngine
    • 启动:/home/admin/bin/scqlengine --flagfile=/path/to/gflags.conf
      在这里插入图片描述

1.2 项目设置

SCQL中的一些概念

  • Project
    • 多个参与方在协商一致后加入到同一个项目中进行多方安全数据分析
  • 参与方身份认证
    • 参与方执行query时需要进行身份认证
  • 数据表管理
    • 管理参与分析的数据表的schema信息
  • 权限信息管理
    • 表字段的权限信息,特别是CCL信息
      用户在每次执行query的时候,均要提供上述信息,上手成本较高。
      将其映射成如下关系:
      在这里插入图片描述

1.2.1 创建用户(Create user)

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

在这里插入图片描述
为什么创建用户是需要公钥和签名?

  • 目的是防止伪造身份攻击

如何防止攻击

  1. 前提条件:每个参与方在部署SCQLEngine 节点时,需要生成(或提供)公私钥,并和合作方交换公钥,配置到引擎侧的 authorized profile 文件中;
  2. SCDB 在处理 create user 请求时,会校验签名,确保请求者有对应的私钥:
  3. SCDB 在处理请求者的 DQL 时,会把请求者和查询涉及参与方的公钥信息一起下发给 SCQLEngine。SCQLEngine会先校验自己和合作方的公钥,如果不匹配,就拒绝执行。

1.2.2 创建项目&用户授权

  • 创建一个名为db_test的数据库(项目)
    • root>CREATE DATABASE db_test;
  • 目的:将参与合作方添加到项目中
    • root>GRANT CREATE,GRANT OPTION,DROP ON db_test.* TO alice
  • 创建表
    • alice> CREATE TABLE db_test.ta(ID string,…,age int)REF_TABLE=alice.user_credit DB_TYPE=‘mysql’

设置CCL
在这里插入图片描述

1.3 联合分析

在这里插入图片描述

2. SCQL工作原理

在这里插入图片描述
SCQL对于同种查询内置了多种优化转换方式,
在这里插入图片描述

3. 使用SecretNote上手体验P2P的SCQL

在这里插入图片描述

3.1 安装部署

在这里插入图片描述
官方安装文档

# 从官网下载scql
git clone https://github.com/secretflow/scql.git
# 进入scql/examples/p2p-tutorial/
cd scql/examples/p2p-tutorial/
# 生成公私钥,并交换alice和bob的公私钥
bash setup.sh
# 使用docker compose拉起双方(这里的tk-sn是指去一个前缀)
docker compose -p tk-sn up -d
# 查看状态
docker compose -p tk-sn ps
# 查看启动的日志
docker-compose -p tk-sn logs engine_alice
# 查看启动端口
cat .env
# 启动Secretnote
secretnote -mode=scql --party=alice --host=http://127.0.0.1:8081 --allow-root
# 开启一个新的终端
secretnote -mode=scql --party=bob --host=http://127.0.0.1:8082 --allow-root

3.2 使用secretNote

3.2.1 创建项目

在这里插入图片描述

3.2.2 邀请合作者

进入项目后可以点击右上角的➕进行邀请。

3.2.3 创建表

在alice下创建如图所示的表
在这里插入图片描述
bob端创建如图所示的表:
在这里插入图片描述

3.2.4 设置CCL

如下是使用命令的方式进行设置,我们采用可视化的方式进行相同的操作。
在这里插入图片描述
通过如下进入配置界面:
在这里插入图片描述
在这里插入图片描述

3.2.5 CSQL查询

新建jupyter,alice可以查看自己的数据,但不能查看别人的数据(因为方式不被允许)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/787547.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记一个Unity的异常问题

今天同事给我反馈了一个Unity使用ThreadStatic的问题&#xff0c;问题如下&#xff1a; [ThreadStatic]private static Dictionary<int, Mesh> dic;IEnumerator Start(){dic new Dictionary<int, Mesh>();dic.Add(0, new Mesh());yield return Resources.UnloadUn…

Flutter应用在苹果商店上架前的准备工作与注意事项

引言 &#x1f680; Flutter作为一种跨平台的移动应用程序开发框架&#xff0c;为开发者提供了便利&#xff0c;使他们能够通过单一的代码库构建出高性能、高保真度的应用程序&#xff0c;同时支持Android和iOS两个平台。然而&#xff0c;完成Flutter应用程序的开发只是第一步…

构建开源可观测平台

企业始终面临着确保 IT 基础设施和应用程序全年可用的压力。现代架构&#xff08;容器、混合云、SOA、微服务等&#xff09;的复杂性不断增长&#xff0c;产生大量难以管理的日志。我们需要智能应用程序性能管理 (APM) 和可观察性工具来实现卓越生产并满足可用性和正常运行时间…

算法错题本

这里写目录标题 错题本注意数据的耦合性对于无解情况的处理思路一组数据以0为结束标记&#xff0c;如何输入到数组中&#xff0c;并计数多个数据进行比较链表删除重复元素的启发循环体里谨慎写类型定义并初始化&#xff08;一般写上就是错&#xff09;队列中读取队尾元素数组当…

实现3D模型无变形的减面渲染方法---模大狮模型网

在进行3D模型渲染时&#xff0c;减面(或降面)是一种常用的优化技术&#xff0c;用于降低模型的复杂度&#xff0c;提高渲染效率。然而&#xff0c;在减面过程中&#xff0c;若不小心可能会引起模型的形变或细节丢失。模大狮将介绍一些方法和技巧&#xff0c;帮助您在减面渲染时…

在 Kubernetes 中使用 Traefik 作为入口点并将流量路由到您的应用程序服务

在 Kubernetes 中使用 Traefik 作为入口点并将流量路由到您的应用程序服务 您可以按照以下步骤操作&#xff1a; 1. 确保您已经在 Kubernetes 集群中部署了 Traefik。 在Kubernetes集群中部署Traefik&#xff0c;您可以按照以下步骤操作&#xff1a; 1. 创建一个Traefik C…

安卓主板MT8390(Genio 700)_MTK联发科Linux开发板方案

MediaTek Genio 700 &#xff08;MT8390&#xff09;是一款高性能的边缘 AI 物联网平台&#xff0c;专为智能家居、互动零售、工业与商业应用而设计。提供快速响应的边缘计算能力、先进的多媒体功能、广泛的传感器和连接方式&#xff0c;且支持多任务操作系统。 MT8390安卓核心…

IDA Pro *(_QWORD *)和*(_BYTE *)表达式解释

在IDA Pro&#xff08;一个交互式的反汇编器和调试器&#xff09;或其他类似的低级代码分析工具中&#xff0c;*(_QWORD *) 这种表达式通常用于类型转换和解引用。 这里的 _QWORD 通常表示一个64位的无符号整数类型&#xff08;在64位系统上&#xff09;。* 是解引用操作符&am…

在Linux或类Unix系统中获取帮助的命令

man <name>&#xff1a;该命令显示指定命令或主题的手册页面。例如&#xff0c;man ls 显示 ls 命令的手册页面。man <section> <name>&#xff1a;此命令允许你为手册页面指定一个部分编号。例如&#xff0c;man 2 open 显示位于手册第 2 部分的 open 系统调…

如何同时使用多个Gmail账号而不被关联?

您的业务活动需要多个 Gmail 帐户吗&#xff1f;出海畅游&#xff0c;Gmail账号是少不了的工具之一&#xff0c;可以关联到Twitter、Facebook、Youtube、Chatgpt等等平台&#xff0c;可以说是海外网络的“万能锁”。但是大家都知道&#xff0c;以上这些平台注册多账号如果产生关…

Linux:入门篇

文章目录 前言1. Linuxd的安装环境2.Linux的简单介绍2.1 新建目录2.2 新建文件 3.指令到底是什么&#xff1f;4.shell命令以及运行原理5.总结 前言 很多人对于Linux的学习总是感觉无法下手&#xff0c;不知道从何开始学习&#xff0c;相信这篇文章将会为你提供一个清晰的思路。…

如何在Python中实现多线程和多进程?

如何在Python中实现多线程和多进程&#xff1f; 在Python中&#xff0c;多线程和多进程是实现并发编程的两种主要方式。它们各自有其特点和适用场景。下面将分别介绍如何在Python中实现多线程和多进程&#xff0c;并探讨它们的优缺点。 一、多线程 Python的标准库提供了thre…

【SpringBoot整合系列】SpirngBoot整合EasyExcel

目录 背景需求发展 EasyExcel官网介绍优势常用注解 SpringBoot整合EaxyExcel1.引入依赖2.实体类定义实体类代码示例注解解释 3.自定义转换器转换器代码示例涉及的枚举类型 4.Excel工具类5.简单导出接口SQL 6.简单导入接口SQL 7.复杂的导出&#xff08;合并行、合并列&#xff0…

C++小代码

//新生训练 //欧几里得法求最大公约数 #include <bits/stdc.h> #include <iostream> #include <algorithm> using namespace std; int main(){int a,b;cin>>a>>b;int r a%b;while (r!0){a b;b r;r a%b;}cout<<b<<endl;return …

碧昂丝的新专辑《Cowboy Carter》是对人工智能音乐的反对声明

碧昂丝的《牛仔卡特》才发行几天&#xff0c;但很明显我们将在未来几年里谈论它——它打破了流媒体平台的记录&#xff0c;艺术家本人称其为“最好的音乐[她是 ] 做过。” 但在《牛仔卡特》的新闻稿中&#xff0c;碧昂斯出人意料地发表了反对人工智能在音乐中日益增长的声明。 …

音视频处理相关基础概念

1. RTP协议 RTP协议&#xff0c;即实时传输协议&#xff08;Real-time Transport Protocol&#xff09;&#xff0c;是一种用于实时传输音频和视频数据的协议。它运行在UDP协议之上&#xff0c;通过将音频和视频数据分成小的数据包&#xff0c;并添加一些头部信息&#xff08;…

mysql 本地电脑服务部署

前提&#xff1a; 下载mysql 新建配置文档 在安装mysql目录新建 my.ini [mysqld] # 设置3306端口 port3306#设置mysql的安装目录 basedirC:\Program Files\MySQL\MySQL Server 8.3 #切记此处一定要用双斜杠\\,单斜杠我这里会出错&#xff0c;不过看别人的教程&#xff0c;有…

Docker容器与虚拟化技术:OpenEuler 部署 Docker UI

目录 一、实验 1.环境 2.OpenEuler 部署 docker-compose-ui 2.OpenEuler 部署 docker ui 3.使用cpolar内网穿透 二、问题 1.docker run -w 的作用 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 系统架构版本IP备注LinuxopenEuler22.03 LTS SP2 192.168…

动态规划——计数类dp

例题&#xff1a;acwing900整数划分 完全背包解法 #include <iostream> #include <algorithm>using namespace std;const int N 1010, mod 1e9 7;int n; int f[N];int main() {cin >> n;f[0] 1;for (int i 1; i < n; i )for (int j i; j < n; …

Golang 哈希表底层实现原理

1、本文讨论Golang的哈希表 Golang哈希表的实现&#xff0c;底层数据结构是数组单链表&#xff0c;链表节点由8个key、value和键的高八位组成的。为了方便理解&#xff0c;先简单看一个图快速理解。 我们来看一下Golang哈希表的结构体定义 简单介绍一下结构体中几个关键的…