Hyperledger Composer-如果参与者在ACL中具有UPDATE权限,如何防止参与者更改其资源的某些属性?

时间:2018-12-24 22:46:40

标签: hyperledger-fabric hyperledger blockchain hyperledger-composer

我在超级账本编辑器中编码了一种文章提交系统,该系统基本上应允许“作者”类型的参与者创建“文章”资产,该资产应由评论者进行审查(另一个“作者”属性isReview = true)。

问题是,遵循ACL的逻辑,作者可以更改其数据,并且该属性包括确定他们是否为审阅者的属性。不允许这样做,因为作者只有在成功发表文章后才成为审稿人。

我的问题是我是否需要在hyperledger的javascript逻辑中进行某种方式的限制,或者是否可以在客户端应用程序中对其进行屏蔽(如果可以在客户端上完成),黑客是否可以利用此“空白” “?

我知道我可以在客户端应用程序中执行此操作,但是我不知道这种方法的含义,因为由于安全问题,系统应该全部在后端工作。

.cto

participant Author identified by email {
  o String authorId optional
  o String email
  o String firstName
  o String lastName
  o Boolean isReviewer default=false
  o Double points default=0.0
  o Double reputation default=0.0
}

.acl

  rule AuthorCanUpdateData {
      description: "Allow all author access to all resources"
      participant(m): "org.dasp.net.Author"
      operation: ALL
      resource(v): "org.dasp.net.Author"
      condition: (v.getIdentifier() == m.getIdentifier())
      action: ALLOW
  }

我希望能够确定参与者可以更改或不更改哪些功能。但我没有发现任何这些,只是读取,更新,创建并全部

1 个答案:

答案 0 :(得分:0)

Hyperledger Composer没有“属性级别”授权控制,它主要控制哪些参与者对业务网络中哪些资源(类,实例等)具有限制。

所以-对于所提出的问题:如果需要属性级别控制(并且'作者'正在通过客户端应用程序访问业务网络)-是的,您应该实现客户端。常见的安全体系结构问题在这里适用(对不起,我不能帮助您哪些人可以从客户端访问您的业务网络,组织/对等方需要批准哪些交易等)。

关于业务网络中的限制,简而言之,问题似乎是:“我可以阻止未出版的作者专门更改其isReviewer状态吗?”

是的,您可以通过在这种情况下维护单独的状态资产清单来进行限制:

participant Author identified by email {
o String email
o String authorId optional
o String firstName
o String lastName
o Double points default=0.0
o Double reputation default=0.0

}

asset Authorship identified by authorId {
      o String authorId 
      o Boolean isReviewer default=false
    }

然后,当您在资源级别上工作时,您的ACL(如果存在)将起作用(“作者可以编辑自己的个人资料”),客户可以检查审阅者状态(如果这是当前正在执行的操作,即是否有人有权审核)。