写点什么

【技术教程】TrustFlow 授权策略是怎么实现的?

  • 2025-12-17
    浙江
  • 本文字数:1803 字

    阅读完需:约 6 分钟

打开链接即可点亮社区 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

r.env.tee.platform=="tee platform type"
复制代码

mr_enclave

globalconstraints下设置。 限制代码的 MRENCLAVE,关于 MRENCLAVE 的说明参见 Enclave

r.env.tee.sgx.mr_encalve=="mrenclave of the enclave"
复制代码

mr_signer

globalconstraints下设置。 限制代码的 MRSIGNER,关于 MRSIGNER 的说明参见 Enclave

r.env.tee.sgx.mr_signer=="mrsigner of the enclave"
复制代码

(暂不可用) execution_time

global_constraints下设置。 限制执行时间。

r.execution_time<="2023-10-01 23:59:59"
复制代码

(暂不可用) op 参数

opconstraints下设置。 限制可信 app 的参数。具体参数名可以在可信APP中找到对应的 app 查询。 例如限制回归类型为逻辑回归:

r.op.params.reg_type=="logistic"
复制代码

元素之间支持的操作符

用户可以根据需要对元信息进行操作,TrustFlow 支持的操符作如下。



rule

成员说明

rule 包含以下信息。

rule_id

每一条 rule 都会有一个 ID 用于标识它。

granteepartyids

列表形式,由被授权方的机构 ID 组成。

op_constraints

opconstraints 表示作用于特定算法的约束,由一条或者多条 opconstraint 组成。opconstraint 表示针对具体算子的约束,包含算子名称和一条或者多条 constraint。 如果没有填写 opconstraints,则表示不允许进行任何计算。

global_constraints

作用于全局的约束,由一条或者多条 constraint 组成。

(可选)columns

对于结构化数据,可以限定数据的哪些列可以被使用。

使用示例

下列 rule 描述了以下限制

  1. 被授权方为 bob 和 carol

  2. 允许使用数据列 f1、f2 和 f3

  3. 允许 xgb_train 组件使用数据

  4. 允许 lr_train 组件进行逻辑回归时使用数据

  5. 限制组件运行平台为 sgx

  6. 限制代码的 mr_enclave 为 MRENCLAVE

{    "rule_id":"test_rule_id",    "grantee_party_ids":[        "bob",        "carol"    ],    "columns":[        "f1",        "f2",        "f3"    ],    "op_constraints":[        {            "op_name": "xgb_train",            "constraints":[]        },        {            "op_name": "lr_train",            "constraints":[                "r.op.params.reg_type==\"logistic\""            ]        }    ],    "global_constraints":[        "r.env.tee.platform==\"sgx\"",        "r.env.tee.sgx.mr_enclave==\"MRENCLAVE\""    ]}
复制代码

policy

policy描述了完整的授权策略。

成员说明

data_uuid

策略所作用于的数据 id。

rules

由一条或者多条 rule 组成的列表。

示例

我们继续以上面 rule 的使用示例为例,一个完整的 policy 如下。

{    "data_uuid":"data id",    "rules":[        {            "rule_id":"test_rule_id",            "grantee_party_ids":[                "bob",                "carol"            ],            "columns":[                "f1",                "f2",                "f3"            ],            "op_constraints":[                {                    "op_name": "xgb_train",                    "constraints":[]                },                {                    "op_name": "lr_train",                    "constraints":[                        "r.op.params.reg_type==\"logistic\""                    ]                }            ],            "global_constraints":[                "r.env.tee.platform==\"sgx\"",                "r.env.tee.sgx.mr_enclave==\"MRENCLAVE\""            ]        }    ]}
复制代码


用户头像

关注微信公众号:隐语的小剧场 2022-08-01 加入

隐语SecretFlow是蚂蚁自主研发的隐私计算开源框架,内置MPC、TEE、同态等多种密态计算虚拟设备供灵活选择。同时我们专注于隐私计算领域任何前沿技术、最新动态、行业资讯,隐语期待您的加入!

评论

发布
暂无评论
【技术教程】TrustFlow 授权策略是怎么实现的?_隐语SecretFlow_InfoQ写作社区