是否可以将“对等链码升级”命令限制为特定组织?我希望一个组织充当整个网络的“维护官”。
我正在建立一个由三个组织组成的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中的某个位置进行配置,但是我无法确定确切位置。
答案 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和更高版本(即将推出)中,新的链码生命周期模型也对此提供了更好的控制。