赞
踩
目录
首先必须感谢蚂蚁集团及隐语社区带来的学习机会!
第八课也是由操顺德老师讲述,核心内容是动手玩SCQL!
下面我把通过docker方式的SCQL部署过程记录如下:
首先将SCQL代码从github上拉取下来,仓库地址:GitHub - secretflow/scql: SCQL (Secure Collaborative Query Language) is a system that allows multiple distrusting parties to run joint analysis without revealing their private data.
git clone https://github.com/secretflow/scql.git
进入examples/p2p-tutorial文件夹,执行bash setup.sh,然后执行docker compose up拉起容器。
- cd examples/p2p-tutorial
- bash setup.sh
- docker compose up
SCQL的容器已经成功运行:
我是在wsl中进行操作,在ubuntu系统中建立一个文件夹secretnote,然后在其中新建一个文件docker-compose.yml如下
services:
alice:
image: 'secretflow/secretnote:unstable-amd64'
#network_mode: "host"
platform: linux/amd64
environment:
- SELF_PARTY=alice
- ALL_PARTIES=alice,bob
ports:
- 8090:8888
entrypoint: /root/scripts/start.sh
volumes:
- /root/scripts
bob:
image: 'secretflow/secretnote:unstable-amd64'
platform: linux/amd64
environment:
- SELF_PARTY=bob
- ALL_PARTIES=alice,bob
ports:
- 8092:8888
entrypoint: /root/scripts/start.sh
volumes:
- /root/scripts
在该文件夹下拉起容器,执行命令docker compose up即可,secretnote容器已经成功运行。
3、修改secretnote的启动脚本/root/scripts/start.sh,alice和bob都需要修改,alice修改为
#!/usr/bin/env bash
ray start \
--head \
--port=6379 \
--include-dashboard=False \
--disable-usage-stats \
--resources="{\"$SELF_PARTY\": 4}"#secretnote --allow-root --no-browser 这是原来的启动脚本
secretnote --allow-root --no-browser --mode=scql --party=alice --host=http://你自己的ip:8081
bob修改为
#!/usr/bin/env bash
ray start \
--head \
--port=6379 \
--include-dashboard=False \
--disable-usage-stats \
--resources="{\"$SELF_PARTY\": 4}"#secretnote --allow-root --no-browser
secretnote --allow-root --no-browser --mode=scql --party=bob --host=http://你自己的ip:8082
重启容器后secretnote将以sqcl的模式运行容器,此时可以打开网页了。
alice端如下:
bob端如下:
alice创建一个新的项目,并邀请bob加入,bob加入后,两方就可以开始创建数据表。
同样为bob添加数据表(需要在对应的网页里操作,因为只能添加自己方的数据):
分别为alice和bob设置数据列的CCL控制,对自己方的数据都是明文PLAINTEXT,为对方的授权根据需要,比如有比较的就选PLAIN_AFTER_COMPARE等。
比如alice方的CCL设置如下:
bob方的CCL设置如下:
比如在bob端执行下面的查询代码:
- SELECT tb.id
- FROM tb
- WHERE tb.order_amount >= 100
- AND tb.is_active = 1
- AND tb.id NOT IN (SELECT id FROM ta);
上面的代码将获取到满足条件order_amount >= 100 和is_active = 1,但是不出现在alice记录id中的bob方的记录id。
由此则完成了SCQL的实践操作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。