如何将访问“对等链码升级”限制为特定组织

时间:2019-10-29 15:38:20

标签: hyperledger-fabric blockchain hyperledger

是否可以将“对等链码升级”命令限制为特定组织?我希望一个组织充当整个网络的“维护官”。

我正在建立一个由三个组织组成的Hyperledger Fabric 1.4.3网络:Org1,Org2,Org3。该网络使用单个通道和几个私有数据集合在组织之间共享敏感数据。我想在正在运行的网络中添加第四个组织。我知道如何生成必要的加密材料,启动其他Docker容器,加入渠道并安装Chaincode。但是,添加第四组织需要额外的私有数据收集,这些收集必须在“对等通道升级”命令中使用“ --collections-config”参数指定。 目前,一切正常。我使用来自Org1的Peer0的CLI发出所有“ peer chaincode ...”命令。但是,我想将对此功能的访问限制在其他组织中,例如:只有Org3的管理员才能发布“对等链码升级”。 我尝试将configtx.yaml的Channel / Policies / Admins部分更改为:

Type: Signature
Rule: "OR('Org3MSP.admin')"

但是我仍然能够从Peer0.Org1 CLI发出“对等链码升级”。

我的configtx.yaml的“应用程序”部分:

Application: &ApplicationDefaults
    Organizations:
    Policies:
        Readers:
            Type: ImplicitMeta
            Rule: "ANY Readers"
        Writers:
            Type: ImplicitMeta
            Rule: "ANY Writers"
        Admins:
            Type: ImplicitMeta
            Rule: "MAJORITY Admins"
        Org1MemberPolicy:
            Type: Signature
            Rule: "OR('Org1MSP.member')"
        Org2MemberPolicy:
            Type: Signature
            Rule: "OR('Org2MSP.member')"
        Org3MemberPolicy:
            Type: Signature
            Rule: "OR('Org3MSP.member')"
    Capabilities:
        <<: *ApplicationCapabilities

我的configtx.yaml的频道部分:

Channel: &ChannelDefaults
    Policies:
        Readers:
            Type: ImplicitMeta
            Rule: "ANY Readers"
        Writers:
            Type: ImplicitMeta
            Rule: "ANY Writers"
        Admins:
            Type: ImplicitMeta
            Rule: "ANY Admins"
    Capabilities:
        <<: *ChannelCapabilities

我的configtx.yaml的“个人资料”部分:

Profiles:
    ThreeOrgsOrdererGenesis:
        <<: *ChannelDefaults
        Orderer:
            <<: *OrdererDefaults
            Organizations:
                - *OrdererOrg
            Capabilities:
                <<: *OrdererCapabilities
        Consortiums:
            SampleConsortium:
                Organizations:
                    - *Org1
                    - *Org2
                    - *Org3
    Orgs123Channel:
        <<: *ChannelDefaults
        Consortium: SampleConsortium
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
                - *Org2
                - *Org3
            Capabilities:
                <<: *ApplicationCapabilities

我认为这可以在configtx.yaml中的某个位置进行配置,但是我无法确定确切位置。

1 个答案:

答案 0 :(得分:1)

通过实例化策略处理用于实例化或升级链码的访问控制。使用-i选项将实例化策略定义为链码包的一部分:

peer chaincode package -n mycc -p github.com/hyperledger/fabric/examples/chaincode/go/example02/cmd -v 0 -s -S -i "AND('OrgA.admin')" ccpack.out

在Fabric v2.x和更高版本(即将推出)中,新的链码生命周期模型也对此提供了更好的控制。