Hyperledger fabric 使用CA附属关系v2.2设置渠道策略
我们有一个基本的商业网络,除了有管理员、节点和客户端之外,我们还需要有在网络上进行交易的用户(个人公民)。问题是,我们需要给用户一个不是客户端的角色,因为这不是一个可扩展的解决方案,也不会是一个可持续的基础设施,以供将来添加。出于各种原因,我们需要实现这一点,其中一个原因是用户只能调用链码,而不能访问事件注册等其他资源 由于Fabric不允许自定义节点OU,AFAIK我们有2个选项:Hyperledger fabric 使用CA附属关系v2.2设置渠道策略,hyperledger-fabric,channel,hyperledger-fabric-ca,policies,organizational-unit,Hyperledger Fabric,Channel,Hyperledger Fabric Ca,Policies,Organizational Unit,我们有一个基本的商业网络,除了有管理员、节点和客户端之外,我们还需要有在网络上进行交易的用户(个人公民)。问题是,我们需要给用户一个不是客户端的角色,因为这不是一个可扩展的解决方案,也不会是一个可持续的基础设施,以供将来添加。出于各种原因,我们需要实现这一点,其中一个原因是用户只能调用链码,而不能访问事件注册等其他资源 由于Fabric不允许自定义节点OU,AFAIK我们有2个选项: 创建两个中间CA以区分两个部门/附属机构:成员和用户 在CA中使用从属关系,并在config.yaml中设置组织
affiliations:
org1:
- USERS
- MEMBERS
在config.yaml上:
OrganizationalUnitIdentifiers:
- Certificate: cacerts/cacert.pem
OrganizationalUnitIdentifier: USERS
- Certificate: cacerts/cacert.pem
OrganizationalUnitIdentifier: MEMBERS
NodeOUs:
Enable: true
ClientOUIdentifier:
# Certificate: cacerts/cacert.pem
OrganizationalUnitIdentifier: client
PeerOUIdentifier:
# Certificate: cacerts/cacert.pem
OrganizationalUnitIdentifier: peer
AdminOUIdentifier:
# Certificate: cacerts/cacert.pem
OrganizationalUnitIdentifier: admin
OrdererOUIdentifier:
# Certificate: cacerts/cacert.pem
OrganizationalUnitIdentifier: orderer
在configtx.yaml上:
- Org1
...
Readers:
Type: Signature
# If your MSP is configured with the new NodeOUs, you might
# want to use a more specific rule like the following:
Rule: "OR('Org1MSP.MEMBERS.admin', 'Org1MSP.MEMBERS.peer', 'Org1MSP.MEMBERS.client')"
Invokers:
Type: Signature
Rule: "OR('Org1MSP.USERS.client', 'Org1MSP.MEMBERS.client', 'Org1MSP.MEMBERS.peer', 'Org1MSP.MEMBERS.admin')"
...
Policies:
Invokers:
Type: ImplicitMeta
Rule: "ANY Invokers"
尽管我向附属用户注册用户,但他们在Org1MSP下而不是Org1MSP.users下进行验证,并被分类为Org1.client,因此他们可以注册以阻止仅为读卡器的事件
ACLS:
# ACL policy for invoking chaincodes on peer
peer/Propose: /Channel/Application/Invokers
# ACL policy for chaincode to chaincode invocation
peer/ChaincodeToChaincode: /Channel/Application/Invokers