如何限制特定组织对 'peer chaincode upgrade' 的访问
How to restrict access to 'peer chaincode upgrade' to specific organisation
是否可以将 'peer chaincode upgrade' 命令限制为特定组织?我希望一个组织作为整个网络的'maintenance officer'。
我正在建立一个包含三个组织的 Hyperledger Fabric 1.4.3 网络:Org1、Org2、Org3。该网络使用单一渠道和多个私人数据集合在组织之间共享敏感数据。我想将第四个组织添加到 运行 网络。我知道如何生成必要的加密 material、启动额外的 Docker 容器、加入频道并安装链代码。但是,添加第四个组织需要额外的私有数据集合,这些集合必须使用“--collections-config”参数在 'peer channel upgrade' 命令中指定。
目前一切正常。我使用来自 Org1 的 Peer0 的 CLI 发出所有 'peer chaincode ...' 命令。但是,我想将此功能的访问权限限制为某些其他组织,例如:只有来自 Org3 的管理员可以发出 'peer chaincode upgrade'。
我尝试将 configtx.yaml 的 Channel/Policies/Admins 部分更改为:
Type: Signature
Rule: "OR('Org3MSP.admin')"
但我仍然能够从 Peer0.Org1 CLI 发出 'peer chaincode upgrade'。
我的应用部分 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 的某处进行配置,但我无法弄清楚具体位置。
实例化或升级链代码的访问控制是通过实例化策略处理的。使用 -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 及更高版本(即将推出)中,新的链代码生命周期模型也提供了更好的控制。
是否可以将 'peer chaincode upgrade' 命令限制为特定组织?我希望一个组织作为整个网络的'maintenance officer'。
我正在建立一个包含三个组织的 Hyperledger Fabric 1.4.3 网络:Org1、Org2、Org3。该网络使用单一渠道和多个私人数据集合在组织之间共享敏感数据。我想将第四个组织添加到 运行 网络。我知道如何生成必要的加密 material、启动额外的 Docker 容器、加入频道并安装链代码。但是,添加第四个组织需要额外的私有数据集合,这些集合必须使用“--collections-config”参数在 'peer channel upgrade' 命令中指定。 目前一切正常。我使用来自 Org1 的 Peer0 的 CLI 发出所有 'peer chaincode ...' 命令。但是,我想将此功能的访问权限限制为某些其他组织,例如:只有来自 Org3 的管理员可以发出 'peer chaincode upgrade'。 我尝试将 configtx.yaml 的 Channel/Policies/Admins 部分更改为:
Type: Signature
Rule: "OR('Org3MSP.admin')"
但我仍然能够从 Peer0.Org1 CLI 发出 'peer chaincode upgrade'。
我的应用部分 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 的某处进行配置,但我无法弄清楚具体位置。
实例化或升级链代码的访问控制是通过实例化策略处理的。使用 -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 及更高版本(即将推出)中,新的链代码生命周期模型也提供了更好的控制。