하이퍼레저 패브릭/이론

6. MSP(Membership Service Provide)(1)

아메숑 2019. 3. 31. 10:13

6. MSP (Membership Service Provider)

5장에서 우리는 PKI가 트러스트 체인을 통해 검증 가능한 인증서를 제공하는 방법을 살펴보았다. 이제 이러한 인증서를 사용하여 블록 체인 네트워크의 신뢰할 수 있는 멤버를 나타내는 방법을 살펴보겠다.

여기에 멤버쉽 서비스 공급자 (MSP)가 등장한다 - 트러스트 도메인의 구성원을(: 조직) 정의하기 위해 신뢰할 수 있는 루트 CA 및 중간 CA를 식별한다. MSP는 구성원의 인증서를 나열하거나 구성원에 대해 유효한 인증서를 발급할 수 있는 CA를 식별한다. 일반적으로는 두 가지를 조합하여 사용한다.

MSP는 단순히 누가 네트워크 참여자이고 채널의 멤버인지 나열하는 것뿐만 아니라 MSP가 대표하는 조직의 범위 내에서 액터가 수행할 수 있는 특정 역할(: 관리자 또는 하위 조직 그룹의 구성원)을 식별하고, 네트워크 및 채널(: 채널 관리자, readers, writers)의 맥락에서 접근 권한을 정의하는 토대를 설정할 수 있다.

MSP의 구성은 해당 조직의 구성원이 참여하는 모든 채널로 배포된다. (채널 MSP 형식) 채널 MSP 외에도 피어, orderers 및 클라이언트 또한 채널 외부로부터의 구성원의 메시지를 검증하고 특정 구성 요소에 대한 사용 권한을 정의하기 위해 로컬 MSP를 관리한다.

5(identity)에서 논의된 것처럼 MSP도 또한 해지된 인증서 목록을 확인할 수 있다. 이 프로세스가 MSP로 확장되는 방법에 대해서도 설명할 것이다.

조직에 MSP를 매핑하기

 

조직은 관리되는 구성원 그룹이다. 조직은 다국적 기업만큼 큰 것일수도 있고, 꽃집처럼 작은 것일 수도 있다. 조직에서 가장 중요한 것은 단일 MSP로 구성원을 관리한다는 것이다. 이것은 X.509 인증서에 정의된 조직 개념과는 다르며, 나중에 설명할 것이다.

조직과 MSP 간의 독점 관계로 인해 대부분의 정책 구성에서 채택되는 협약이나 조직의 이름을 따서 MSP로 명명하는 것이 좋다. 예를 들어 ORG1 조직에는 ORG1-MSP와 같은 MSP가있을 수 있다. 경우에 따라 조직에서 여러 구성원 그룹을 필요로 할 수 있다. 예를 들어 조직 간에 매우 다른 업무 기능을 수행할 때 채널을 사용하는 경우가 있다. 이러한 경우 여러 개의 MSP를 갖을 수도 있다. 예를 들어 ORG2-MSP-NATIONALORG2-MSP-GOVERNMENT는 조직 ORG2내의 NATIONAL sales 채널과 GOBERNMENT regulatory 채널을 비교해서 서로 다른 membership roots of trust 반영하여 이름을 짓는다.

조직에서의 두 가지 MSP 구성.

첫 번째 구성은 하나의 MSP가 하나의 조직의 구성원 목록을 정의하며, 이는 MSP와 조직의 전형적인 관계를 나타낸다. 두 번째 구성에서는 여러 개의 MSP가 여러 개의 조직 그룹(national, international, governmental)을 정의하는 것을 보여준다.

Organizational Units(OUs) MSP

 

조직은 대부분 여러 조직 단위(OU)로 나뉘며 각 조직 단위는 각각 특정한 역할이 있다. 예를 들어, ORG1 조직은 분리된 여러 비즈니스 분야를 반영하기 위해 ORG1-MANUFACTURING ORG1-DISTRIBUTION 조직단위를 모두 보유할 수 있다. CA X.509 인증서를 발급하면 인증서의 OU 필드는 ID가 속한 비즈니스 분야를 식별한다.

OU가 블록 체인 네트워크의 구성원으로 간주되는 조직의 일부를 제어하는데 얼마나 도움이 되는지 나중에 알 수 있다. 예를 들어, 조직 단위 ORG1-MANUFACTURING ID는 채널에 액세스할 수 있지만, ORG1-DISTRIBUTION은 그렇지 않다.

마지막으로 약간 오용이지만 조직단위(OU)를 컨소시엄의 여러 조직에서 서로를 구별하기 위해 사용할 수도 있다. 이 경우 서로 다른 조직에서 트러스트 체인내의 동일한 루트 CA와 중간 CA를 사용하지만, 각 조직의 구성원을 식별하기 위해 OU필드를 할당한다.

로컬 MSP와 채널 MSP

 

MSP는 블록체인 네트워크에서 두 부분으로 나타난다. Channel configuration (channel MSPs) locally on an actor’s premise (local MSP)이다. Local MSPs는 클라이언트(사용자)와 노드(피어, orderers)을 위해 정의된다. Node local MSPs는 노드(: 피어의 관리자)의 사용권한을 정의한다. Users local MSPs는 사용자가 채널의 구성원으로서 거래를 할 때 본인임을 인증하거나, 시스템안의 특정한 역할의 소유자(: configuration transaction에서 조직 관리자)임을 인증할 수 있도록 해준다.

로컬 MSP는 로컬 레벨에서 관리 권한이나 참가 권한을 가진 사용자를 정의한다. 그렇기 때문에 모든 노드와 사용자는 정의된 로컬 MSP를 보유하고 있어야 한다. (피어 관리자는 반드시 채널 관리자가 아니며 반대의 경우도 마찬가지이다.)

채널 MSP는 채널 레벨에서 관리 권한 및 참여 권한을 정의한다. 채널에 참여하는 모든 조직은 정의된 채널 MSP가 있어야한다. 채널내의 피어 노드와 orderers는 채널 MSPs의 동일한 뷰를 공유하므로 채널 참가자를 올바르게 인증할 수 있다. , 어떤 조직이 채널에 가입하고자 할 때 조직 구성원에 대한 신뢰 체계를 갖는 MSP를 채널 구성에 포함시켜야 한다. 그렇지 않으면 이 조직에서 발송하는 트랜잭션의 ID는 거부될 것이다.

로컬 MSPs와 채널 MSPs의 주요 차이점은 동작방식이 아니라 동작범위이다.

Local MSPschannel MSPs.

각각의 피어 노드의 트러스트 도메인(: 조직)은 피어의 local MSP(: ORG1, ORG2)에 의해 정의된다. 채널상에서 조직은 조직의 MSP를 채널 구성에 포함시킴으로써 표현될 수 있다. 예를 들어 위 그림의 채널은 ORG1ORG2(local MSPs) 의해 관리된다. 그림에 표시되지는 않았지만 비슷한 원리가 네트워크, orderers, users에게도 적용된다.

위 그림에서 블록 체인 관리자가 스마트 컨트랙트를 설치하고 인스턴스화 하는 과정을 관찰하면 local MSPchannel MSP가 어떻게 사용되는지 이해하는데 도움이 될 수 있다.

관리자 BRCA1에서 발행된 ID를 피어 노드에 연결하고 local MSP에 저장한다. 관리자 B가 피어 노드에 스마트 컨트랙트를 설치하려고 하면, 피어 노드는 local MSP(ORG1-MSP)를 확인하고 관리자 B가 정말 조직 단위 ORG1의 구성원인지 검증한다. 성공적으로 검증이 되면 설치 커맨드가 성공적으로 완료된다. 그 다음 관리자 B는 채널에 스마트 컨트랙트를 인스턴스화 하려고 한다. 인스턴스화는 채널에서 작동하기 때문에 채널 내의 모든 조직들이 수락해야 한다. 그러므로 피어 노드는 성공적으로 이 커맨드를 커밋하기 전에 채널의 MSP를 확인해야 한다.  

Local MSP는 적용 대상 노드 또는 사용자의 파일 시스템에서만 정의된다. 따라서, 물리적 및 논리적으로 노드나 사용자별로 하나의 local MSP만 존재한다. 그러나 채널 MSP는 채널의 모든 노드에서 사용할 수 있으므로 채널 구성에서 논리적으로 한번만 정의된다. 그러나 채널 MSP는 또한 채널내의 모든 노드의 파일시스템에서도 인스턴스화되며 합의를 동해 동기화 상태를 유지한다. 따라서 각 노드의 로컬 파일 시스템에 각 채널 MSP의 사본이 있는 반면, 논리적으로 채널 MSP는 채널이나 네트워크상에서 상주하며 유지 관리된다.

MSP 레벨

 

채널 MSP와 로컬 MSP는 자원을 관리하기 위한 조직의 필요성을 반영하여 분리되었다. 로컬 자원으로는 피어 노드 또는 orderer 노드가 있고 채널 자원으로는 원장, 스마트 컨트랙트, 컨소시엄 등이 있으며 채널이나 네트워크 레벨에서 동작한다. 따라서 이러한 MSP를 각각 다른 레벨로 생각하는 것이 좋다. 낮은 레벨의 MSP는 개인 자원 관리에 대한 ID를 처리하는 반면 높은 레벨의 MSP는 네트워크 관리에 관련된 문제들을 처리한다. MSP는 모든 관리 레벨에서 필수적이다. , 네트워크, 채널, 피어 노드, orderer 노드, 사용자 모두에 대해서 정의되어야 한다.

피어나 ordererMSP는 로컬 영역이지만 반면에 채널(네트워크 구성 채널 포함)MSP는 채널의 모든 참가자에게 공유된다. 위 그림에서 네트워크 구성 채널은 ORG1에 의해 관리되며 다른 어플리케이션 채널은 ORG1ORG2에 의해 관리된다. 피어 노드는 ORG2의 구성원이며 ORG2에 의해 관리된다. 반면에 ordererORG1에 의해 관리된다. ORG1은 인증기관 RCA1의 인증서를 신뢰하며, ORG2 RCA2의 인증서를 신뢰한다. 이러한 인증서는 관리 권한에 대한 인증서이며, 누가 이러한 구성요소들을 관리할 수 있는지를 명시한다. 따라서 ORG1은 네트워크를 관리하는 반면에 ORG2.MSP 는 네트워크 정의에 존재한다.

- 네트워크 MSP : 네트워크 구성은 네트워크의 구성원을 정의한다. (참가자 조직의 MSP를 정의) 또한 이 구성원들은 관리 작업(: 채널 생성)을 수행할 수 있는 권한을 부여받는다.

- 채널 MSP : 채널에서 구성원의 MSP를 별도로 관리하는 것은 중요하다. 채널은 조직의 특정한 그룹안에서 개인 통신을 제공하며 순서대로 제어 권한을 갖는다. 채널 MSP맥락에서 해석되는 채널 정책은 채널의 특정한 작업(: 조직 추가, 체인코드 인스턴스화 등)을 수행할 구성원을 정의한다. 채널의 관리 권한은 네트워크 구성 채널(또는 다른 채널)의 관리 권한과는 아무런 관계가 없으며 관리 권한은 관리 대상 범위 내에 존재한다.

- 피어 MSP : 이 로컬 MSP는 각 피어의 파일 시스템에 정의되며 각 피어마다 단일 MSP인스턴스가 존재한다. 개념적으로 피어 MSP는 채널 MSP와 정확히 동일한 기능을 수행하지만, 정의된 피어에만 적용된다는 제한이 있다. 피어의 로컬 MSP를 사용하여 권한을 부여하는 작업의 예로는 피어에 체인 코드를 설치하는 것이 있다.

- orderer MSP : 피어 MSP와 마찬가지로 orderer 로컬 MSP도 파일 시스템에 정의되어 있으며 해당 노드에만 적용된다. 피어 노드와 마찬가지로 orderer는 단일 조직에서 소유하므로 신뢰할 수 있는 액터 및 노드를 나열하는 단일 MSP가 있다.