zoukankan      html  css  js  c++  java
  • Membership(成员)

    Membership

    如果您已经阅读了有关身份(Identity)的文档,那么您已经了解了PKI如何通过信任链提供可验证的身份。现在让我们看看这些身份如何用于表示区块链网络的可信成员。

    这是成员服务提供商(MSP)发挥作用的地方 - 它通过列出其成员的身份或通过识别来识别信任哪些根CA和中间CA以定义信任域(例如组织)的成员。哪些CA被授权为其成员发布有效身份,或者 - 通常情况下 - 通过两者的组合。

    MSP的功能不仅仅是列出谁是一个网络参与者或一个频道的成员。一个MSP可以识别一个参与者可能在MSP所代表的组织范围内扮演的特定角色(例如,管理员,或者作为子组织组的成员),并为在网络环境中定义访问权限设置基础和频道(例如,频道管理员,读者,作家)。

    MSP的配置被通告给相应组织的成员参与的所有渠道(以信道MSP的形式)。除了渠道MSP,peers,orderer和客户端之外,还维护本地MSP以对通道上下文之外的成员消息进行身份验证,并定义对特定组件(具有在peers上安装链码的能力)的权限,例)

    此外,MSP可以允许识别已被撤销的身份列表 - 如身份文档中所述 - 但我们将讨论该流程如何扩展到MSP。

    我们稍后会详细讨论本地和渠道MSP。现在让我们看看MSP一般会做些什么。

    Mapping MSPs to Organizations(将msp映射到组织)

    组织是一个管理的成员群体。这可以像跨国公司一样大,或者像花店一样小。组织(ORC)最重要的是他们在单个MSP下管理他们的成员。请注意,这与X.509证书中定义的组织概念不同,我们稍后将对此进行讨论。

    组织与其MSP之间的独占关系使得在组织之后命名MSP是明智的,这是大多数策略配置中都会采用的约定。例如,组织ORG1可能会有一个名为ORG1-MSP的MSP。在某些情况下,组织可能需要多个成员资格组 - 例如,使用渠道在组织之间执行非常不同的业务功能。在这些情况下,有多个MSP并相应地命名它们是有意义的,例如,ORG2-MSP-NATIONAL和ORG2-MSP-GOVERNMENT,反映了与GOVERNMENT监管渠道相比,NATIONAL销售渠道中ORG2内信任的不同成员根。

    组织的两种不同MSP配置。 第一个配置显示MSP与组织之间的典型关系 - 单个MSP定义组织成员列表。 在第二种配置中,不同的MSP用于表示具有国家,国际和政府关联的不同组织组。

    Organizational Units and MSPs(组织单位和MSP)

    组织通常被划分为多个组织单位(OU),每个组织单位都有一定的责任。例如,ORG1组织可能同时具有ORG1-MANUFACTURING和ORG1-DISTRIBUTION OU,以反映这些独立的业务线。当CA颁发X.509证书时,证书中的OU字段指定身份所属的业务线

    稍后我们将看到OU如何有助于控制被视为区块链网络成员的组织部分。例如,只有ORG1-MANUFACTURING OU中的标识可能能够访问通道,而ORG1-DISTRIBUTION则不能。

    最后,尽管这是对OU的轻微滥用,但它们有时可以被联盟中的不同组织用来区分彼此。在这种情况下,不同的组织将相同的根CA和中间CA用于其信任链,但是分配OU字段以标识每个组织的成员。我们还将看到如何配置MSP以便以后实现此目的。

    Local and Channel MSPs(本地和渠道MSP)

    MSP出现在区块链网络中的两个位置:通道配置(通道MSP),以及在参与者的前提下本地(本地MSP)。为客户端(用户)和节点(peers和orderers)定义本地MSP。节点本地MSP定义该节点的权限(例如,peer管理员是谁)。用户的本地MSP允许用户侧在其交易中作为渠道的成员(例如,在链码交易中)认证自身,或者作为特定角色的所有者在系统中进行认证(例如,在组织中的组织管理员)交易)。

    每个节点和用户都必须定义一个本地MSP,因为它定义了谁在该级别具有管理或参与权限(peer管理员不一定是渠道管理员,反之亦然)。

    相反,渠道MSP在渠道层面定义了行政和参与权利。参与渠道的每个组织都必须为其定义MSP。通道上的peers和orderers都将共享相同的通道MSP视图,因此能够正确地验证通道参与者。这意味着,如果有组织希望加入该渠道,则需要将包含该组织成员信任链的MSP纳入渠道配置中。否则,将拒绝源自该组织身份的交易。

    本地MSP和通道MSP之间的关键区别不是它们如何作用,而是将身份转换为角色——而是它们的作用范围

    本地和渠道MSP。每个peer的信任域(例如,组织)由peer的本地MSP定义,例如ORG1或ORG2。通过将组织的MSP添加到通道配置来实现组织在通道上的表示。例如,该图的通道由ORG1和ORG2管理。类似的原则适用于网络,订购者和用户,但为简单起见,此处未显示这些原则.

    通过查看区块链管理员安装和实例化智能合约时会发生什么,您可能会发现如何使用本地和渠道MSP很有帮助,如上图所示。

    管理员B使用RCA1发布的身份连接到peer节点并存储在其本地MSP中。当B尝试在peer节点上安装智能合约时,peer节点检查其本地MSP ORG1-MSP,以验证B的身份确实是ORG1的成员。成功验证将允许install命令成功完成。随后,B希望在频道上实例化智能合约。因为这是一个频道操作,所以频道上的所有组织都必须同意。因此,peer节点必须先检查通道的MSP,然后才能成功提交此命令。 (其他的事情也必须发生,但是现在就集中在上面。).

    本地MSP只定义在它们所应用的节点或用户的文件系统上。因此,在物理和逻辑上,每个节点或用户只有一个本地MSP。然而,当通道MSP对信道中的所有节点可用时,它们在通道配置中被逻辑地定义一次。然而,通道MSP也被实例化在通道中的每个节点的文件系统中,并通过协商保持同步。因此,尽管每个节点的本地文件系统上都有每个通道MSP的副本,但逻辑上,通道MSP驻留在通道或网络上。

    MSP Levels(MSP级别)

    渠道和本地MSP之间的分离反映了组织管理其本地资源(例如peer或orderer节点)及其渠道资源(例如在渠道或网络级别运营的分类帐,智能合约和财团)的需求。 将这些MSP视为处于不同层次是有帮助的,MSP处于与网络管理问题相关的更高级别,而较低级别的MSP处理私有资源管理的身份。 MSP在每个管理级别都是必需的 - 必须为网络,渠道,peer,orderer和用户定义MSP。

    MSP级别。 peer和orderer的MSP是本地的,而通道的MSP(包括网络配置通道)在该通道的所有参与者之间共享。 在此图中,网络配置通道由ORG1管理,但另一个应用程序通道可由ORG1和ORG2管理。 peer是ORG2的成员和管理者,而ORG1管理图的orderer。 ORG1信任来自RCA1的身份,而ORG2信任来自RCA2的身份。 请注意,这些是管理身份,反映了谁可以管理这些组件。 因此,当ORG1管理网络时,ORG2.MSP确实存在于网络定义中。

    Network MSP:网络的配置定义了谁是网络中的成员 - 通过定义参与者组织的MSP - 以及授权哪些成员执行管理任务(例如,创建通道)。

    Channel MSP:通道必须单独维护其成员的MSP。通道在特定的一组组织之间提供私人通信,这些组织又对其进行管理控制。在该频道的MSP的上下文中解释的频道策略定义谁有能力参与频道上的某些动作,例如,添加组织或实例化链码。请注意,管理频道的权限与管理网络配置频道(或任何其他频道)的权限之间没有必然的关系。管理权限存在于管理范围内(除非规则已经另行编写 - 请参阅下面对ROLE属性的讨论)。

    Peer MSP:此本地MSP在每个peer节点的文件系统上定义,并且每个peer节点都有一个MSP实例。从概念上讲,它执行与通道MSP完全相同的功能,其限制是它仅适用于定义它的peer节点。使用peer节点的本地MSP评估其授权的操作的示例是在peer节点上安装链码。

    Orderer MSP:像peer节点的MSP一样,在orderer节点的文件系统中也定义了一个有序的本地MSP,并且只适用于该节点。与peer节点一样,排序器也由单个组织拥有,因此具有单个MSP来列出它信任的参与者或节点。

    MSP Structure(MSP 结构)

    到目前为止,您已经看到MSP最重要的元素是用于在相应组织中建立参与者或节点成员资格的根CA或中间CA的规范。 但是,有更多的元素与这两个元素结合使用以协助成员函数。

    上面的图显示了本地MSP是如何存储在本地文件系统上的。尽管通道MSP不是以这样的方式物理构造的,但仍然是一种有益的思考方式。

    正如您所看到的,MSP有九个元素。在目录结构中最容易想到这些元素,其中MSP名称是根文件夹名,每个子文件夹代表MSP配置的不同元素。

    让我们更详细地描述这些文件夹,看看它们为什么很重要。

    Root CAs:此文件夹包含由此MSP表示的组织信任的根CA的自签名X.509证书列表。 此MSP文件夹中必须至少有一个Root CA X.509证书。

    这是最重要的文件夹,因为它标识了必须从中派生所有其他证书才能被视为相应组织的成员的CA.

    Intermediate CA:此文件夹包含此组织信任的中间CA的X.509证书列表。 每个证书必须由MSP中的一个根CA或中间CA签名,中间CA颁发的CA链最终会返回到受信任的根CA.

    中间CA可以代表组织的不同细分(如ORG1的ORG1-MANUFACTURING和ORG1-DISTRIBUTION),或组织本身(如果商业CA用于组织的身份管理,则可能是这种情况)。 在后一种情况下,中间CA可用于表示组织细分。 在这里,您可以找到有关MSP配置最佳实践的更多信息。 请注意,可能有一个没有中间CA的正常运行的网络,在这种情况下,此文件夹将为空。

    Organizational Units (OUs):这些单位列在$ FABRIC_CFG_PATH / msp / config.yaml文件中,并包含一个组织单位列表,其成员被视为该MSP所代表的组织的一部分。 当您希望将组织成员限制为拥有其中包含特定OU的身份(由MSP指定的CA之一签名)的成员时,此功能尤其有用。

    指定OU是可选的。 如果未列出任何OU,则作为MSP一部分的所有身份(由根CA和中间CA文件夹标识)将被视为组织的成员。

    Administrators:此文件夹包含一个标识列表,用于定义具有此组织管理员角色的角色。对于标准MSP类型,此列表中应该有一个或多个X.509证书。

    值得注意的是,仅仅因为一个参与者具有管理员的角色,并不意味着他们可以管理特定的资源!给定的身份对于管理系统方面的实际功能由管理系统资源的策略决定。例如,渠道策略可能指定ORG1-MANUFACTURING管理员有权将新组织添加到渠道,而ORG1-DISTRIBUTION管理员则没有此类权限。

    即使X.509证书具有ROLE属性(例如,指定某个参与者是管理员),这也是指其在组织内而不是在区块链网络中的角色。这类似于OU属性的目的,如果已定义,则指向组织中的角色。

    如果该通道的策略已被写入,以允许来自组织(或某些组织)的任何管理员允许执行某些通道功能(例如实例化链码),则可以使用ROLE属性来授予通道级的管理权限。这样,一个组织角色可以赋予一个网络角色。

    Revoked Certificates(撤销证书):如果一个参与者的身份被撤销,则在此文件夹中保存有关身份的信息 - 而不是身份本身。 对于基于X.509的标识,这些标识符是称为主题密钥标识符(SKI)和授权访问标识符(AKI)的字符串对,并且只要使用X.509证书来确保证书未被证实,就会对其进行检查。撤销。

    此列表在概念上与CA的证书吊销列表(CRL)相同,但它也与从组织中撤消成员身份有关。 因此,MSP的管理员(本地或频道)可以通过向CA发布的已撤销证书发布CA的更新CRL来快速撤销组织中的参与者或节点。 这个“列表列表”是可选的。 它只会在证书被撤销时填充.

    Node Identity(节点标识):该文件夹包含节点的标识,即加密材料 - 与KeyStore的内容组合 - 将允许节点在发送给其通道和网络的其他参与者的消息中认证自身。 对于基于X.509的标识,此文件夹包含X.509证书。 这是peer在交易提议响应中放置的证书,例如,用于指示peer已经认可它 - 随后可以在验证时针对结果交易的认可策略进行检查。

    此文件夹对于本地MSP是必需的,并且该节点必须只有一个X.509证书。 它不用于通道MSP。

    KeyStore for Private Key(私钥的KeyStore):此文件夹是为peer或orderer节点(或客户端的本地MSP)的本地MSP定义的,包含节点的签名密钥。 此密钥以加密方式匹配节点标识文件夹中包含的节点标识,并用于签署数据 - 例如签署交易提议响应,作为认可阶段的一部分。

    此文件夹对于本地MSP是必需的,并且必须只包含一个私钥。 显然,对此文件夹的访问权限必须仅限于对peer节点具有管理职责的用户的身份。

    通道MSP的配置不包括此文件夹,因为通道MSP仅旨在提供身份验证功能而不是签名功能。

    TLS Root CA:此文件夹包含此组织信任的用于TLS通信的根CA的自签名X.509证书列表。 TLS通信的一个示例是当peer需要连接到orderer以便它可以接收分类帐更新时。

    MSP TLS信息涉及网络内的节点 - peer和orderer,换句话说,而不是消耗网络的应用程序和管理。

    此文件夹中必须至少有一个TLS根CA X.509证书。

    TLS Intermediate CA:

    此文件夹包含MSP用于TLS通信的组织信任列表。中间CA证书CA。当商业CA用于组织的TLS证书时,该文件夹尤其有用。与成员资格中间CA类似,指定中间TLS CA是可选的。

    如果您已经阅读过本文档以及我们的Identity文档,那么您应该非常了解Hyperledger Fabric中的身份和成员身份。 您已经了解了如何使用PKI和MSP来识别在区块链网络中协作的参与者。 除了MSP的物理和逻辑结构之外,您还了解了证书,公钥/私钥和信任根的工作原理。

    本文来源于官方文档:http://hyperledger-fabric.readthedocs.io/en/release-1.1/membership/membership.html#local-and-channel-msps

  • 相关阅读:
    LeetCode 4 :Majority Element
    LeetCode 3 :Min Stack
    Oracle操作4
    plsql安装教程
    java Date与String互相转化
    Oracle操作3
    Oracle操作2
    Oracle操作
    Oracle11g修改密码
    Visual Studio2013完全卸载
  • 原文地址:https://www.cnblogs.com/apolov-fabric/p/9263938.html
Copyright © 2011-2022 走看看