更改 Hyperledger Fabric 中的默认值 mod_policy
Changing the default mod_policy in Hyperledger Fabric
我看到默认 mod_policy
在该配置级别设置为 Admins 策略,但是如果我想将其设置为 MyPolicy (这可能是任何自定义有效策略)那么该怎么做?
我可以 configtx.yaml 自己实现吗?
是的,这是可以做到的。您可以查看 article,其中显示了如何创建新的自定义策略以及如何仅从 configtx.yaml
更新 ACL。
我可以通过以下步骤成功实现:
- 开始了
fabric-samples/first-network
。
- 执行
docker exec
进入cli
容器。
- 设置对应于
peer0.org1.example.com
和该组织的管理员用户的环境:Admin@org1.example.com
。获取最新的应用程序通道(此处mychannel
)配置块。
- 通过为
Application
组下的 Org1MSP
更改 policies
部分下的 mod_policy
值来编辑解码的 JSON 块。将其从 Admins
更改为 Readers
。
- 通过将增量块编码并签名到 protobuf 信封中来提交通道更新交易。
现在,我们的任务是验证这个新的 mod_policy
是否正常工作。为此,请执行以下操作:
- 将
cli
环境设置为 peer0.org1.example.com
以及该组织的用户:User1@org1.example.com
。获取最新的应用程序通道(此处mychannel
)配置块。
- 通过将
Org1MSP
中的 Readers
策略从 "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')"
更改为 "OR('Org1MSP.admin', 'Org1MSP.peer')"
并保留 JSON 来编辑解码的 JSON 块记住策略的语法。
- 提交频道更新交易。成功更新表示满足
Readers
政策(该部分的新 mod_policy
),因为我们代表 User1@org1.example.com
(client
用户)提交了频道更新.请注意,此时更新通道配置时,Readers
策略将被评估为 "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')"
,因为尚未处理更新。
现在使用相同的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')"
.
我看到默认 mod_policy
在该配置级别设置为 Admins 策略,但是如果我想将其设置为 MyPolicy (这可能是任何自定义有效策略)那么该怎么做?
我可以 configtx.yaml 自己实现吗?
是的,这是可以做到的。您可以查看 article,其中显示了如何创建新的自定义策略以及如何仅从 configtx.yaml
更新 ACL。
我可以通过以下步骤成功实现:
- 开始了
fabric-samples/first-network
。 - 执行
docker exec
进入cli
容器。 - 设置对应于
peer0.org1.example.com
和该组织的管理员用户的环境:Admin@org1.example.com
。获取最新的应用程序通道(此处mychannel
)配置块。 - 通过为
Application
组下的Org1MSP
更改policies
部分下的mod_policy
值来编辑解码的 JSON 块。将其从Admins
更改为Readers
。 - 通过将增量块编码并签名到 protobuf 信封中来提交通道更新交易。
现在,我们的任务是验证这个新的 mod_policy
是否正常工作。为此,请执行以下操作:
- 将
cli
环境设置为peer0.org1.example.com
以及该组织的用户:User1@org1.example.com
。获取最新的应用程序通道(此处mychannel
)配置块。 - 通过将
Org1MSP
中的Readers
策略从"OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')"
更改为"OR('Org1MSP.admin', 'Org1MSP.peer')"
并保留 JSON 来编辑解码的 JSON 块记住策略的语法。 - 提交频道更新交易。成功更新表示满足
Readers
政策(该部分的新mod_policy
),因为我们代表User1@org1.example.com
(client
用户)提交了频道更新.请注意,此时更新通道配置时,Readers
策略将被评估为"OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')"
,因为尚未处理更新。 现在使用相同的
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')"
.