1. 程式人生 > >Hyperledger系列(十二)MSP詳細介紹

Hyperledger系列(十二)MSP詳細介紹

簡介

MSP的作用,不僅僅在於列出誰是網路參與者或Channel成員。 MSP可以確定,成員在MSP所代表的Org(trust domain)(例如,MSP管理員,組織細分成員)中扮演的特定角色。 它將MSP的配置通告給,相應組織的成員參與的所有Channel(以MSP Channel的形式)。 Peers, orderers 和 clients還維護本地MSP例項(也稱為 Local MSP),以在channel環境之外驗證其組織成員的訊息。 此外,MSP可以識別已被吊銷的身份列表。

也就是MSP可以分為:local 和 channel MSPs

organizations 最重要的是,他們在單獨的一個MSP下管理其成員。

請注意,這與在X.509證書中定義的organization概念不同,我們稍後會討論。

organization與MSP之間的專一性關係,使得在organization之後命名MSP是明智的,在大多數policy配置中,您會發現這一個慣例。 例如,organization ORG1將有一個名為 ORG1-MSP 的MSP。 在某些情況下,organization可能需要多個成員資格組 - 例如,不同的Channel用於在organisations之間執行完全不同的業務職能, 在這些情況下,擁有多個MSP並相應地命名它們是有意義的,例如ORG2-MSP-NATIONALORG2-MSP-GOVERNMENT

,反映了與政府監管Channel相比,國家銷售Channel中ORG2中不同的成員信任root。詳細見下圖例子:

第一種配置顯示了MSP和Org之間的典型關係 - 單個MSP定義Org成員的列表。
在第二種配置中,不同的MSP用於代表具有國家,國際和政府關係的不同組織團體。

Organizational Units(企業中各管理部門) and MSPs

一個組織經常被分成多個組織單位(organizational units 、OUs),每個組織單位都有一定的責任。 例如,ORG1組織可能同時具有ORG1-MANUFACTURINGORG1-DISTRIBUTION OUS,以反映這些單獨的業務線。 當CA頒發X.509證書時,證書中的OU

欄位將指定該identity(身份)所屬的業務線。

我們稍後會看到OUs如何有助於控制,區塊鏈網路成員的組織部分。 例如,只有來自ORG1-MANUFACTURING OU的身份可能能夠訪問某個Channel,而ORG1-DISTRIBUTION則不能。

Local and Channel MSPs

MSP出現在區塊鏈網路中的兩個地方:Channel配置(Channel MSP),以及本地(local MSP)。localMSP,是為節點(peer 或 orderer)和使用者(使用CLI或使用SDK的客戶端應用程式的管理員)定義的。每個節點和使用者都必須定義一個localMSP,因為它定義了誰在該級別和Channel的上下文之外,具有管理或參與權限(例如,誰是peer所在組織的管理員)。

相反,channel MSP在channel層面定義管理和參與權。參與Channel的每個組織,都必須為其定義MSP。Channel上的Peers 和 orderers將在Channel MSP上共享相同的檢視,並且此後將能夠正確認證Channel參與者。這意味著如果一個組織希望加入該Channel,那麼需要在Channel配置中,加入一個包含該組織成員的信任鏈的MSP。否則來自該組織身份的交易將被拒絕。

local和channel MSP之間的主要區別不在於它們的功能,而在於它們的範圍。

Local 和 channel MSP。 每個peer的信任域(例如,組織)由peer 的Local MSP(例如ORG1ORG2)定義。 組織在Channel中的表示,通過將組織的MSP包含在渠道中來實現。 例如,上圖的Channel由ORG1ORG2管理。 類似的原則適用於網路,orderers和使用者,但為簡單起見,這裡沒有顯示。

Local MSP僅在其應用的 節點或使用者 的檔案系統上定義。 因此,在物理上和邏輯上,每個節點或使用者只有一個Local MSP。

但是,由於Channel MSP可用於Channel中的所有節點,因此它們在其配置中的Channel中邏輯定義一次。 但是,Channel MSP在channel中的每個節點的檔案系統上,例項化並且通過共識保持同步。 因此,雖然每個節點的本地檔案系統上存在每個channel MSP的副本,但邏輯上,channel MSP駐留在channel或網路上並由其維護。

管理員B使用RCA1頒發的,並存儲在其local MSP中的身份連線到peer(使用者、管理員也有local MSP)。 當B嘗試在peer上安裝智慧合同時,peer檢查其local MSP ORG1-MSP,以驗證B的身份確實是ORG1的成員。 成功驗證將允許安裝命令成功完成。 隨後,B希望例項化該channel上的智慧合約。 由於這是Channel操作,Channel中的所有組織都必須同意。 因此,peer必須先檢查Channel的MSP,然後才能成功提交該命令。 (其他事情也必須發生,但現在要專注於上述內容。)

MSP Levels

MSP級別
channel 和 local MSP之間的分割反映了,組織管理其本地資源(例如peer or orderer節點)及其Channel資源(例如在Channel或網路級別,運營的ledgers,智慧合約和聯盟)的需求。 將這些MSP視為處於不同級別是有好處的,其中較高級別的MSP,處理與網路管理有關的問題,而較低級別的MSP,處理私有資源管理的身份。 MSP在每個管理級別都是必須的 - 它們必須為網路,Channel,peer, orderer 和 users 定義。

peer 和 orderer的MSP是本地的,而Channel的MSP(包括網路配置Channel)在該Channel的所有參與者之間共享。 在上圖中,網路配置Channel由ORG1管理,但另一個應用程式Channel可由ORG1和ORG2管理。

peer是ORG2的成員,並由ORG2管理,而ORG1管理orderer。 ORG1信任來自RCA1的身份,而ORG2信任來自RCA2的身份。 請注意,這些是管理身份,反映了誰可以管理這些元件。 所以當ORG1管理網路時,ORG2.MSP確實存在於網路定義中。

  • Network MSP:網路配置通過定義參與者組織MSPs,來定義網路中的成員。同時定義這些成員中哪些成員,有權執行管理任務(例如,建立Channel)

  • Channel MSP:Channel分開維護其成員的MSP非常重要。Channel提供了一組特定的組織之間的私人通訊,這些組織又對其進行管理控制。在該Channel的MSP上下文中的Channel policies定義誰能夠參與Channel上的某些操作,例如新增組織或例項化chaincodes。請注意,管理Channel的許可權與管理網路配置Channel(或任何其他頻道)的許可權之間沒有必要的關係。管理許可權存在於正在管理的範圍內(除非規則已另行編寫 - 請參閱下面關於ROLE屬性的討論)。

  • Peer MSP:此Local MSP在每個peer的檔案系統上定義,並且每個peer都有一個MSP例項。從概念上講,它執行的功能與Channel MSP完全相同,限制條件是它僅用於定義它的peer上。

  • Orderer MSP:與peer MSP一樣,orderer local MSP也在節點的檔案系統上定義,並且僅用於該節點。與peer 節點相似,orderer也由單個組織擁有,因此只有一個MSP來列出其信任的參與者或節點。

MSP Structure

到目前為止,已經看到MSP中最重要的兩個要素,是用於確定相應組織中的參與者或節點成員資格的(root or intermediate)CA的規範。 但是,有更多的元素與這兩個元素結合使用來協助membership功能。

下面詳細介紹下:

Root CAs

此資料夾包含,由此MSP代表的組織信任的Root CA的,自簽名X.509證書列表。此MSP資料夾中必須至少有一個Root CA X.509證書。
這是最重要的資料夾,因為它標識了所有其它證書,必須從中派生出來的CA,以便被視為相應組織的成員。

Intermediate CAs

此資料夾包含此組織信任的Intermediate CA的X.509證書列表。每個證書都必須由MSP中的一個Root CA簽署,或者由 Intermediate CA 簽署。

Intermediate CA可以表示組織的不同細分或組織本身(例如,如果商業CA用於組織的身份管理)。在後一種情況下,可以使用CA層次結構中,較低的其他Intermediate CA來表示組織細分。請注意,可能有一個沒有任何中間CA的功能網路,在這種情況下,此資料夾將為空。

與Root CA資料夾一樣,此資料夾定義了,必須從中頒發證書才能被視為組織成員的CA。

Organizational Units (OUs)

可選的

Administrators

該資料夾包含一個身份列表,用於定義具有該組織管理員角色的參與者。對於標準MSP型別,此列表中應該有一個或多個X.509證書。

值得注意的是,僅僅因為演員具有管理員的角色,並不意味著他們可以管理特定的資源!給定身份在管理系統方面的實際權力,取決於管理系統資源的策略。例如,Channel policy可能會指定ORG1-MANUFACTURING管理員有權將新組織新增到Channel,而ORG1-DISTRIBUTION管理員則沒有此許可權。

即使X.509證書具有ROLE屬性(例如,指定角色是管理員),這也是指角色在其組織中而不是區塊鏈網路中的角色。這與OU屬性的用途類似 - 指的是參與者在組織中的位置。

如果該Channel的策略已經寫入,允許來自組織(或某些組織)的任何管理員,執行某些channel功能(例如例項化chaincode)的許可權,則ROLE屬性,可用於在channel級別授予管理許可權。通過這種方式,組織角色可以賦予網路角色。這在概念上類似於美國佛羅里達州頒發的駕駛執照,是如何授權某人在美國的每個州開車的。

Revoked Certificates:

可選的

Node Identity(節點身份)

該資料夾包含節點的自身身份。與KeyStore內容相結合的密碼材料,將允許節點,在傳送給其channels和network的其他參與者的訊息中,對自身進行身份驗證。 對於基於X.509的身份,此資料夾包含一個X.509證書。 例如,這是peer在交易提議響應中的證書,以表明peer已經認可了該證書 - 隨後可以在驗證時,根據所得到的交易的認可政策,來檢查該證書。

該資料夾對於本地MSP是必需的,並且該節點必須只有一個X.509證書。 它不用於Channel MSP。

KeyStore for Private Key(私鑰KeyStore)

該資料夾為peer 或 orderer節點(或客戶端的local MSP)的local MSP定義,幷包含節點的signing key(簽名金鑰)。 此金鑰,與上面Node Identity 資料夾中的節點身份匹配,並用於簽署資料 - 例如簽署交易提議響應,作為認可階段的一部分。

該資料夾對Local MSP是必須的,並且必須包含一個私鑰。 很明顯,訪問這個資料夾,只能由,對次peer有管理許可權的使用者。

Channel MSP的配置不包括此部分,因為Channel MSP旨在提供純粹的身份驗證功能,而不是簽署能力。

TLS Root CA

此資料夾包含,此組織為TLS通訊所信任的Root CA的自簽名X.509證書列表。 TLS通訊的一個例子是,peer需要連線到orderer以便它可以接收ledger更新。

MSP TLS資訊涉及網路內的節點,即對peers 和 the orderers,而不是那些使用網路的節點 - 應用程式和管理員。

此資料夾中必須至少有一個TLS Root CA X.509證書。

TLS Intermediate CA

此資料夾包含由此MSP代表的,組織信任的用於TLS通訊的Intermediate CA證書列表。當商業CA用於組織的TLS證書時,此資料夾特別有用。 它是可選的。