SCQL使用/集成实践
目前SCQL只开放API供用户使用/集成
- 使用SCDBClient上手体验
- 可以基于SCQL API开发封装白屏产品,或集成到业务链路中
![image.png](https://img-blog.csdnimg.cn/img_convert/ea87150858ce1c3210a9102705e8cc12.png)
使用流程:
![image.png](https://img-blog.csdnimg.cn/img_convert/63fa6d0f1481a0f56f277b2551c00585.png)
部署系统
- 环境配置:
- 机器配置: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
![image.png](https://img-blog.csdnimg.cn/img_convert/86908b419c3d4bf95343eea68c46afdb.png)
创建用户
SCDB内置了一个权限受限的root用户,方便系统bootstrap
- root用户只能做CREATE database/user等操作
- root用户无法修改普通用户设置的CCL,无法发起查询(DQL)
- root用户滥用不会导致数据泄露
为什么创建用户是需要公钥和签名?
目的是防止伪造身份攻击。
如何防止攻击?
- 前提条件:每个参与方在部署SCQLEngine 节点时,需要生成(或提供)公私钥,并和合作方交换公钥,配置到引擎侧的 authorized profile 文件中;
- SCDB 在处理 create user 请求时,会校验签名,确保请求者有对应的私钥:
- SCDB 在处理请求者的 DQL 时,会把请求者和查询涉及参与方的公钥信息一起下发给 SCQLEngine。SCQLEngine会先校验自己和合作方的公钥,如果不匹配,就拒绝执行。
创建项目&用户授权
创建一个名为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
![image.png](https://img-blog.csdnimg.cn/img_convert/3c98649e6d609c340a6c9c13d2ab8a8a.png)
联合分析
![image.png](https://img-blog.csdnimg.cn/img_convert/829922acc2b15eac16e82731ccaeaa5b.png)