带你读《从基础到应用云上安全航行指南》——一文教你如何从零构建机密计算平台解决方案(2):
https://developer.aliyun.com/article/1441288
三、数据产品交付
接下来为大家介绍数据交易的第二类场景——数据产品交付。
数据产品交付通常只发生在甲乙双方之间。甲方是数据消费者,乙方是数据拥有者,数据拥有者需要把数据打包成数据产品交付给数据使用者。通常有两种方式,一种是通过API交付,怎么使用数据,通过API接口定义、封装好,API通常是一种线上服务。另一种是离线的数据交付,通常离线的数据交付不需要线上运维,资源租赁,这种交付的资源使用和维护成本较低,但存在数据在流转过程中泄漏的可能性;数据被非法二次分发、扩散的可能性;数据处理不当泄露个人隐私数据的可能性等。
这里提供一个参考方案,用于数据离线的交付场景,可以参考通过该方式把数据包装成数据产品交付使用。这里引入了一个机密隐私保护的SCQL应用(蚂蚁开源应用)。
SCQL是在MySQL、PSQL等传统数据库之上封装了一个SQL分析引擎,根据CCL定义的表字段的授权要求,对SQL检查,避免敏感字段的数据对使用者泄露。同时,利用机密计算对软件本身、内存中的数据进行保护,从而避免数据(实际是通过保护软件)被二次分发、数据泄露、隐私数据泄露的风险。
SCQL是一款安全,协作查询语言,可以给数据库的数据源授予不同的用户访问。对不同的用户允许访问什么,不允许访问什么,什么条件下载访问什么,可以使用约束性的语言描述。允许多个相互不信任的参与方在不泄露各自隐私数据的条件下进行联合分析,允许A提供数据给B受限使用。基于CCL机制,CCL能让owner定义数据的使用方式和披露的限制。SCQL会拒绝不满足CCL要求的Query查询。
CCL并不复杂,用三元组表示什么属性,针对什么用户,使用限制是什么。比如某个属性针对某个用户可以是密文的,可以是明文的,或者在什么情况下允许是明文的。如果SCQL的引擎判断SCQL查询不符合CCL,或者有可能把具体的属性内容泄露出来,就返回相应错误。稍后会给大家演示一下具体使用。
如何使用SCAL交付数据产品?这里有数据拥有者、数据消费者。
数据拥有者希望通过离线的方式,把数据产品交付给消费者。数据拥有者可以把自己的数据灌装到离线的数据文件(如mysql、psql数据库文件)中,在灌装数据后,数据拥有者要根据隐私数据保护的需要,对敏感字段定义CCL。然后把离线的数据文件进行加密,加密后的文件可以放心传播,如通过中介交付给消费者。文件的密钥(被目标用户公钥、云平台公钥加密后)与SCQL一起打包成TEE的应用镜像。这保证TEE镜像只能在云平台运行,并限定目标用户使用。
使用时,TEE镜像在云上TEE硬件运行,文件秘钥被云平台和用户解密还原,文件中的数据可被数据库软件访问,秘钥和数据被TEE保护。用户使用SCQL 接口访问数据,受CCl的限制,无法得到保护字段的明文数据。
https://cloud.video.taobao.com/play/u/null/p/1/e/6/t/1/448390733211.mp4
以上就是本节课程的全部内容。