更改 Hyperledger Fabric 中的默认值 mod_policy

Changing the default mod_policy in Hyperledger Fabric

我看到默认 mod_policy 在该配置级别设置为 A​​dmins 策略,但是如果我想将其设置为 MyPolicy (这可能是任何自定义有效策略)那么该怎么做?

我可以 configtx.yaml 自己实现吗?

是的,这是可以做到的。您可以查看 article,其中显示了如何创建新的自定义策略以及如何仅从 configtx.yaml 更新 ACL。

我可以通过以下步骤成功实现:

  1. 开始了 fabric-samples/first-network
  2. 执行docker exec进入cli容器。
  3. 设置对应于 peer0.org1.example.com 和该组织的管理员用户的环境:Admin@org1.example.com。获取最新的应用程序通道(此处mychannel)配置块。
  4. 通过为 Application 组下的 Org1MSP 更改 policies 部分下的 mod_policy 值来编辑解码的 JSON 块。将其从 Admins 更改为 Readers
  5. 通过将增量块编码并签名到 protobuf 信封中来提交通道更新交易。

现在,我们的任务是验证这个新的 mod_policy 是否正常工作。为此,请执行以下操作:

  1. cli 环境设置为 peer0.org1.example.com 以及该组织的用户:User1@org1.example.com。获取最新的应用程序通道(此处mychannel)配置块。
  2. 通过将 Org1MSP 中的 Readers 策略从 "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')" 更改为 "OR('Org1MSP.admin', 'Org1MSP.peer')" 并保留 JSON 来编辑解码的 JSON 块记住策略的语法。
  3. 提交频道更新交易。成功更新表示满足 Readers 政策(该部分的新 mod_policy),因为我们代表 User1@org1.example.comclient 用户)提交了频道更新.请注意,此时更新通道配置时,Readers 策略将被评估为 "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')",因为尚未处理更新。
  4. 现在使用相同的cli环境,尝试获取最新的应用程序通道配置块。出现以下错误:

    2020-04-09 22:25:48.990 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized 2020-04-09 22:25:49.001 UTC [cli.common] readBlock -> INFO 002 Got status: &{FORBIDDEN}

这是因为现在要读取 配置块,User1@org1.example.com 客户端 OU 将无法满足新的 Readers 策略,即 "OR('Org1MSP.admin', 'Org1MSP.peer')".