Hyperledger fabric 允许参与者完全读取权限

Hyperledger fabric 允许参与者完全读取权限,hyperledger-fabric,hyperledger,hyperledger-composer,ibm-blockchain,Hyperledger Fabric,Hyperledger,Hyperledger Composer,Ibm Blockchain,我想为在公司工作的所有“个人”参与者提供读取权限,公司类型为BORDER。公司类型是一个枚举 ACL: 参与者模型文件: namespace org.acme.shipping.participants participant Company identified by cid { o String cid o String name o CompanyType type } enum CompanyType { o BORDER o COURIER o SHIPPE

我想为在公司工作的所有“个人”参与者提供读取权限,公司类型为BORDER。公司类型是一个枚举

ACL:

参与者模型文件:

namespace org.acme.shipping.participants

participant Company identified by cid {
  o String cid
  o String name
  o CompanyType type
}

enum CompanyType {
  o BORDER
  o COURIER
  o SHIPPER
}

participant Person identified by id {
  o String id
  o String name
  --> Company company
}
但是,此人仍然无法看到任何资产


您对如何解决这一问题有何建议?

您编写的允许边境公司访问所有容器的ACL规则没有问题。主要问题是,每个Person参与者都有对其公司的引用,但没有为Person类型的参与者指定访问/读取ACL中公司详细信息的规则。因此,默认情况下,ACL拒绝某人读取其公司详细信息的读取权限,并且当您在规则条件下访问此人的公司时

p.company.type
访问只是受到限制。要实现相同的功能,您必须首先使用

rule readCompany {
    description: "Allow Read Access to Person's Own Company"
    participant(p): "org.acme.shipping.participants.Person"
    operation: READ
    resource(comp): "org.acme.shipping.participants.Company"
    condition: (p.company.getIdentifier() == comp.getIdentifier())
    action: ALLOW
}
然后,您将能够使用与相同的规则将所有容器的访问权授予属于Border类型公司的人员

rule border {
    description: "Allow Border access to containers"
    participant(p): "org.acme.shipping.participants.Person"
    operation: READ
    resource: "org.acme.shipping.assets.**"
    condition: (p.company.type == "BORDER")
    action: ALLOW
}

请分享完整的ACL列表和模型文件。@r原始帖子中添加的追踪者甚至没有考虑需要读取权限的条件。谢谢!
rule border {
    description: "Allow Border access to containers"
    participant(p): "org.acme.shipping.participants.Person"
    operation: READ
    resource: "org.acme.shipping.assets.**"
    condition: (p.company.type == "BORDER")
    action: ALLOW
}