SCQL使用/集成实践
目前SCQL只开放API供用户使用/集成
- 使用SCDBClient上手体验
- 可以基于SCQL API开发封装白屏产品,或集成到业务链路中
使用流程:
部署系统
- 环境配置:
- 机器配置: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
创建用户
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