为了调用create/join channel, install/instantiate chaincode,以及list channel, list installed cc, list instantiated cc, 以及update block size/timeout等功能,需要调研每个操作所需要的权限是什么。
readthedocs
以fabric v1.2为例,v1.2中引入了新的ACL机制,其中关于application(user chaincode, system chaincode以及events stream)的ACL基本都在configtx.yaml里面定义。而这里我们更关注的是系统管理所需要的各种权限。
系统操作 | 所需权限/policy | 描述 |
---|---|---|
create channel | orderer genesis block中channel_group->groups->Consortiums->{consortiumName}->values->ChannelCreationPolicy中定义的,默认应该为ANY admin of the consortium. 用configtxlator decode orderer Genesis Block即可查看ChannelCreationPolicy. ChannelCreationPolicy的mod_policy是/Channel/Orderer/Admins | 任意admin of the consortium签名。channel genesis block中应该包含所有channel定义的org的admin certs, tls certs等等 |
join channel | peer local MSP Admin Policy | join channel是peer级别的操作,通过调用peer的join channel方法让peer加入到某个channel。 Join channel实际上是向peer发送proposal,调用的是cscc的JoinChain方法,而次方法的调用需要检查的是peer local MSP Admin Policy。 |
install cc | peer local MSP Admin Policy | chainless proposal不会改变ledger状态,通过peer local MSP验证,也就是peer本地所保存的Org的admin证书验证。install cc只是对lscc的install方法的调用 参考源码 |
instantiate cc | any MSP admin of the channel | 由chaincode package中的instantiate policy(和endorsement policy格式一样)决定。如果未指定instantiate policy则使用默认policy。the default instantiation policy is any channel MSP administrator |
update block size/timeout | /Channel/Orderers/Admins | Orderer Orgs中的大多数Admin的signature,由于通常一个fabric网络中只有一个orderer Org, 因此只要一个orderer Org的admin的signature即可 参考->readthedocs |
网友评论