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下管理其成員。
organization與MSP之間的專一性關係,使得在organization之後命名MSP是明智的,在大多數policy配置中,您會發現這一個慣例。 例如,organization ORG1
將有一個名為 ORG1-MSP
的MSP。 在某些情況下,organization可能需要多個成員資格組 - 例如,不同的Channel用於在organisations之間執行完全不同的業務職能, 在這些情況下,擁有多個MSP並相應地命名它們是有意義的,例如ORG2-MSP-NATIONAL
和 ORG2-MSP-GOVERNMENT
第一種配置顯示了MSP和Org之間的典型關係 - 單個MSP定義Org成員的列表。
在第二種配置中,不同的MSP用於代表具有國家,國際和政府關係的不同組織團體。
Organizational Units(企業中各管理部門) and MSPs
一個組織經常被分成多個組織單位(organizational units 、OUs),每個組織單位都有一定的責任。 例如,ORG1
組織可能同時具有ORG1-MANUFACTURING
和ORG1-DISTRIBUTION
OUS,以反映這些單獨的業務線。 當CA頒發X.509證書時,證書中的OU
我們稍後會看到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(例如ORG1
或ORG2
)定義。 組織在Channel中的表示,通過將組織的MSP包含在渠道中來實現。 例如,上圖的Channel由ORG1
和ORG2
管理。 類似的原則適用於網路,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證書時,此資料夾特別有用。 它是可選的。