Hyperledger Fabric用户权限之间的差异

时间:2018-12-02 15:42:44

标签: hyperledger-fabric

如果我有1个组织orgA,并且在这个组织下我有2个用户:user1user2,则orgA中也有1个对等方,我们称之为peer0

现在想象一下,user1的证书位于orgA's msp/admincerts的伪造中,这使得user1成为orgA的管理员。另一方面,假设user2's证书位于peer0's msp/admincerts文件夹中,这使得user2成为peer0的管理员。

我的问题是user1user2之间的特权有什么区别,我的意思是user1可以做什么,user2不能做什么,反之亦然?

我还使用fabic canode sdk与网络进行交互。在我的示例中,当我从nod sdk注册fabric ca的引导用户(admin / adminpw),然后发出创建频道请求时,它起作用了,但是当我发出加入频道请求时,它失败了(因为该用户没有特权)。当我试图了解为什么会发生这种情况时,我发现如果我从证书用户发出的加入请求不在对等方的msp / admincerts文件夹中,则该用户没有权限使对等方加入频道。因此,唯一的方法是我必须将已注册管理员的证书复制到peer0的msp / admincerts文件夹中,然后我认为它将起作用,但这是使其生效的唯一方法,还是有其他避免复制/粘贴的方法?来自sdk,还是创建新的配置更新交易?

我也不明白是什么使该用户能够创建频道? fabric ca的引导用户具有什么权限?

1 个答案:

答案 0 :(得分:0)

这是一个很晚的回复,但希望有人会觉得这很有帮助。用户角色和权限没有直接关联,这是通过configtx.yaml中设置的策略来完成的。

为每个组织和订购者定义策略,将每个成员和管理员标记为一组特定的策略子组,例如ReadersWritersAdmins。这些是基层用于构造ImplicitMeta策略(例如用于chiancode查询和写入)的策略。

例如,一个组织定义了类似的策略

# Policies defines the set of policies at this level of the config tree
        # For organization policies, their canonical path is usually
        #   /Channel/<Application|Orderer>/<OrgName>/<PolicyName>
        Policies: &org1Policies
            Readers:
                Type: Signature
                Rule: "OR('org1.example.com.member')"
                # If your MSP is configured with the new NodeOUs, you might
                # want to use a more specific rule like the following:
                # Rule: "OR('org1MSP.admin', 'org1MSP.peer')"
            Writers:
                Type: Signature
                Rule: "OR('org1.example.com.member')"
                # If your MSP is configured with the new NodeOUs, you might
                # want to use a more specific rule like the following:
                # Rule: "OR('org1MSP.admin', 'org1MSP.client'')"
            Admins:
                Type: Signature
                Rule: "OR('org1.example.com.admin')

联盟的政策定义如下:

Policies:
        Readers:
            Type: ImplicitMeta
            Rule: "ANY Readers"
        Writers:
            Type: ImplicitMeta
            Rule: "ANY Writers"
        Admins:
            Type: ImplicitMeta
            Rule: "MAJORITY Admins"

这引用了先前定义的组织和订购者策略。

现在系统链码中可以具有以下策略:

Application: &ApplicationDefaults
    ACLs: &ACLsDefault
        #This section provides defaults for policies for various resources
        #in the system.
    #---Query System Chaincode (qscc) function to policy mapping for access control---#

        #ACL policy for qscc's "GetChainInfo" function
        qscc/GetChainInfo: /Channel/Application/Readers

        #ACL policy for qscc's "GetBlockByNumber" function
        qscc/GetBlockByNumber: /Channel/Application/Readers

这里引用的策略指向联盟策略。

有关详细说明,请阅读docs