Hyperledger fabric 使用CA附属关系v2.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中设置组织

我们有一个基本的商业网络,除了有管理员、节点和客户端之外,我们还需要有在网络上进行交易的用户(个人公民)。问题是,我们需要给用户一个不是客户端的角色,因为这不是一个可扩展的解决方案,也不会是一个可持续的基础设施,以供将来添加。出于各种原因,我们需要实现这一点,其中一个原因是用户只能调用链码,而不能访问事件注册等其他资源

由于Fabric不允许自定义节点OU,AFAIK我们有2个选项:

  • 创建两个中间CA以区分两个部门/附属机构:成员和用户
  • 在CA中使用从属关系,并在config.yaml中设置组织单位
  • 问题:

  • 你将如何处理这个问题?有第三条路吗
  • 我们如何实施第二个方案?关于如何实现这一点,文献资料有限。我将展示我尝试过但不起作用的东西
  • 在CA配置上:

    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