Hyperledger Fabric中参与者/资产与事务访问控制规则冲突问询
问题解答:Hyperledger Fabric员工社交网络的访问控制疑问
1. 员工是否无法修改自身数据?
咱们先拆解两条ACL规则的实际作用:
rule EmployeesHaveWriteAccessToTheirOwnData { description: "Allow employees write access to their own data" participant(p): "org.company.biznet.Employee" operation: UPDATE resource(r): "org.company.biznet.Employee" condition: (p.getIdentifier() == r.getIdentifier()) action: ALLOW }
rule EmployeeCanSubmitTransactionsToUpdateData { description: "Allow employees to update their data" participant: "org.company.biznet.Employee" operation: CREATE resource: "org.company.biznet.UpdateTransaction" action: DENIED }
这里的核心逻辑是:Hyperledger Fabric中修改资源必须通过提交事务来触发。规则1确实给了员工更新自身数据的权限,但规则2直接禁止了员工提交用于触发更新的UpdateTransaction事务——没有合法的事务来发起这个UPDATE操作,员工根本没有途径执行修改动作。
所以结论很明确:员工确实无法修改自身数据,因为触发更新的唯一合法路径被规则2堵死了。
2. 是否可不通过.cto文件定义的事务访问拥有权限的数据?
答案是绝对不行。在Hyperledger Fabric的业务网络架构里,所有对资源的访问(读、写、删)都必须严格遵循.cto文件中定义的业务模型和事务逻辑:
- 资源的操作权限(比如规则1里的UPDATE)是针对资源本身的,但执行这些操作必须通过预定义的事务来承载;
- 不存在绕过
.cto定义的事务直接访问或修改资源的方式,因为整个网络的交互流程、权限校验都是基于你在.cto中声明的模型来运行的。哪怕你拥有某个资源的操作权限,没有对应的事务来触发,也无法实际执行任何操作。
内容的提问来源于stack exchange,提问作者Tommy
相关产品推荐
相关产品推荐

