【技术教程】TrustFlow 授权策略是怎么实现的?
打开链接即可点亮社区 Star,照亮技术的前进之路。
Github 地址:https://github.com/secretflow/trustflow/*
TrustFlow 提供了一套简洁易懂的语法帮助用户对数据使用行为的授权进行描述。接下来我们会详细描述这套语法,并结合示例进行讲解。
授权策略概览
constraint:约束表达式,描述了具体的数据使用行为约束。rule: 指具体的策略规则,rule 本质上由一条或者多条约束表达式组成。policy:指作用于具体数据的授权策略,policy 由一条或者多条 rule 组成。
constraint
constraint 本质上是描述“访问控制”这件事,比如允许对数据进行什么样的计算。
可限制的元信息
constraint 支持对以下元信息进行限制。具体语法上,每一条 constraint 的元素都是以r.作为开头。(TrustFlow 采用了casbin作为底层的访问控制实现)
platform
在global_constraints下设置。 限制代码运行的 TEE 平台。目前可选sim/sgx/tdx/csv。
mr_enclave
在globalconstraints下设置。 限制代码的 MRENCLAVE,关于 MRENCLAVE 的说明参见 Enclave 。
mr_signer
在globalconstraints下设置。 限制代码的 MRSIGNER,关于 MRSIGNER 的说明参见 Enclave 。
(暂不可用) execution_time
在global_constraints下设置。 限制执行时间。
(暂不可用) op 参数
在opconstraints下设置。 限制可信 app 的参数。具体参数名可以在可信APP中找到对应的 app 查询。 例如限制回归类型为逻辑回归:
元素之间支持的操作符
用户可以根据需要对元信息进行操作,TrustFlow 支持的操符作如下。
rule
成员说明
rule 包含以下信息。
rule_id
每一条 rule 都会有一个 ID 用于标识它。
granteepartyids
列表形式,由被授权方的机构 ID 组成。
op_constraints
opconstraints 表示作用于特定算法的约束,由一条或者多条 opconstraint 组成。opconstraint 表示针对具体算子的约束,包含算子名称和一条或者多条 constraint。 如果没有填写 opconstraints,则表示不允许进行任何计算。
global_constraints
作用于全局的约束,由一条或者多条 constraint 组成。
(可选)columns
对于结构化数据,可以限定数据的哪些列可以被使用。
使用示例
下列 rule 描述了以下限制
被授权方为 bob 和 carol
允许使用数据列 f1、f2 和 f3
允许 xgb_train 组件使用数据
允许 lr_train 组件进行逻辑回归时使用数据
限制组件运行平台为 sgx
限制代码的 mr_enclave 为 MRENCLAVE
policy
policy描述了完整的授权策略。
成员说明
data_uuid
策略所作用于的数据 id。
rules
由一条或者多条 rule 组成的列表。
示例
我们继续以上面 rule 的使用示例为例,一个完整的 policy 如下。







评论