하이퍼레저 패브릭/이론

6. MSP(Membership Service Provider)(2)

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

MSP 구조

 

지금까지 MSP의 가장 중요한 요소는 각 조직에 대해 액터나 노드의 멤버십을 설정하는데 사용되는 루트CA와 중간CA의 규격이었다. 그러나 멤버십 기능을 보완하기 위해 두 가지 요소와 함께 사용되는 요소들이 더 존재한다.

위 그림은 로컬 MSP가 파일 시스템에 저장되는 방법을 보여준다. 비록 채널 MSP는 정확히 이런 방법으로 구조화되어 있지는 않지만, MSP를 이해하는데 유용하다.

MSP에는 9가지 요소가 있다. 이 요소들을 디렉토리 구조로 생각하면 된다. MSP의 이름은 루트 폴더의 이름과 같고 각 하위 폴더들은 MSP구성의 다른 요소들을 나타낸다.

이 폴더들을 상세하게 정의하고 이 폴더들이 중요한 이유를 알아보자.

- 루트 CA : 이 폴더는 MSP가 대표하는 조직이 신뢰하는 루트 CA의 자체 서명된 X.509 인증서 목록을 포함한다. MSP폴더에는 적어도 하나의 루트 CAX.509 인증서가 있어야 한다.

이 폴더는 해당 조직의 구성원임을 인증하기 위해 인증서를 발급하는 CA를 식별하기 때문에 가장 중요하다.

- 중간 CA : 이 폴더는 조직이 신뢰하는 중간 CAX.509 인증서를 포함한다. 각 인증서는 반드시 루트 CA 중 한 개 또는 신뢰할 수 있는 루트 CA로 연결되는 CA 체인에서 파생되는 중간 CA에 의해 서명되어야 한다.

중간 CA는 조직의 여러 개의 하위 그룹들을 나타낼 수도 있다. (: 조직ORG1ORG1-MANUFACTURING ORG1-DISTRIBUTION) 또는 조직 자체( 조직의 인증서 관리에 상업용 CA가 사용되는 경우)를 나타내기도 한다. 후자의 경우 중간 CA는 조직의 하위 그룹을 나타내기 위해 사용될 수 있다. 네트워크상에 중간CA가 존재하지 않는 경우도 있다. 이 경우에 중간 CA의 폴더는 비어 있을 것이다.

루트 CA 폴더와 마찬가지로 이 폴더 또한 조직의 구성원임을 인증하기 위해 인증서를 발급하는 CA를 정의한다.

- Organizational Units (OU) : 이 목록은 $ FABRIC_CFG_PATH / msp / config.yaml 파일에 나열되어 있으며, MSP에 의해 명시되는 하위 조직의 구성원목록이다. 이는 조직의 구성원을 특정한 OU가 있는 ID(MSP가 지정한 CA의 서명이 있는 ID)로 제한하려는 경우에 특히 유용하다.

OU를 지정하는 것은 선택사항이다. 만약 목록에 아무런 OU가 없을 경우, 루트 CA와 중간CA로 식별되는 MSP의 모든 ID가 조직의 구성원으로 간주된다.

- 관리자 : 이 폴더는 조직의 관리자 역할을 맡은 액터를 정의하는 ID 목록을 나열한다. 표준 MSP 유형에서는 X.509 인증서가 이 목록에 한 개 이상 있어야 한다.

액터가 관리가 역할을 맡았다고 해서 특정 리소스를 관리할 수 있는 것은 아니다. 시스템 관리에 대해 주어진 ID가 갖는 실제 권한은 시스템 리소스를 관리하는 정책에 의해 결정된다. 예를 들어 채널 정책이 ORG1-MANUFACTURING의 관리자가 채널에 새로운 조직을 추가할 수 있고, ORG1-DISTRIBUTION의 관리자는 그러한 권한이 없다고 지정할 수 있다.  

X.509 인증서에 ROLE 속성 ( : 액터가 관리자임을 지정)이 있더라도 이는 블록 체인 네트워크가 아니라 조직 내에서 액터의 역할을 나타낸다. 이는 OU가 정의되었다면 조직의 액터 위치를 나타내는 OU 속성의 목적과 유사하다.

ROLE 속성은 해당 채널에 대한 정책이 조직 (또는 특정 조직)의 관리자가 특정 채널 기능 ( : 체인 코드 인스턴스 생성)을 수행 할 수 있는 권한을 허용하도록 작성된 경우 채널 레벨에서 관리 권한을 부여하는데 사용할 수 있다. 이러한 방식으로 조직의 ROLE 속성이 네트워크 역할을 부여할 수 있다.

- 해지된 인증서 : 만약 액터의 인증서가 해지 된 경우, 인증서 자체가 아닌 인증서에 관한 식별 정보가 이 폴더에 보관된다. X.509 기반 인증서의 경우 이러한 식별 정보는 SKI (Subject Key Identifier) ​​ AKI (Authority Access Identifier)로 알려진 문자열 쌍이며 X.509 인증서를 사용할 때마다 이 인증서가 해지되지 않았는지 확인된다.

이 목록은 개념적으로 CACRL(Certificate Revocation List)와 동일하지만 또한 조직의 구성원 권한 박탈과도 관련이 있다. 결과적으로 로컬 또는 채널의 MSP 관리자는 해지된 인증서를 발급한 CA의 업데이트된 CRL을 광고하여 조직에서 액터나 노드를 신속하게 취소할 수 있도록 한다. 이 목록은 선택 사항이며 인증서가 폐기되면서 채워진다.

- 노드 ID : 이 폴더에는 노드의 ID, 노드가 채널 및 네트워크의 다른 참가자에게 보내는 메시지에서 자신을 인증할 수 있는 암호화 자료가 포함된다. X.509 기반 ID의 경우, 이 폴더에는 X.509 인증서가 포함되어 있다. 이것은 피어가 트랜잭션 제안에 응답할 때 포함시키는 인증서이다. ( : 피어가 이를 승인했음을 나타내기 위해). 이후 유효성을 확인할 때 결과 거래 승인 정책에 대해 검사된다.

이 폴더는 로컬 MSP에는 필수 항목이며, 노드에 정확히 하나의 X.509 인증서가 있어야 한다. 채널 MSP에는 사용되지 않는다.

- 개인키를 위한 keystore : 이 폴더는 피어 또는 orderer 노드 (또는 클라이언트의 로컬 MSP)의 로컬 MSP에 대해 정의되며 노드의 서명키를 포함한다.

- 개인키를 위한 keystore : 이 폴더는 피어 또는 orderer 노드 (또는 클라이언트의 로컬 MSP)의 로컬 MSP에 대해 정의되며 노드의 서명키를 포함한다. 이 키는 Node Identity 폴더에 포함된 노드의 ID와 암호학적으로 일치하며 데이터 서명에 사용된다 ( : 승인 단계의 일부로 트랜잭션 제안 응답에 서명).

이 폴더는 로컬 MSP에 필수이고 정확하게 하나의 개인 키를 포함해야 한다. 이 폴더에 대한 액세스는 피어에 대한 관리 책임이 있는 사용자의 ID로 제한되어야 한다.

채널 MSP는 이 폴더를 포함하지 않는다. 채널 MSPID확인 기능만 제공하고 서명 기능은 제공하지 않기 때문이다.

- TLS 루트 CA : 이 폴더에는 이 조직에서 TLS 통신용으로 신뢰하는 루트 CA의 자체 서명 된 X.509 인증서 목록이 포함되어 있다. TLS 통신의 예로는 피어가 원장 업데이트를 받을 수 있도록 orderer에게 연결해야 할 때이다.

MSP TLS 정보는 네트워크를 사용하는 응용 프로그램 및 관리가 아닌 네트워크 내부의 노드, 즉 피어와 orderer와 관련이 있다.

이 폴더에는 하나 이상의 TLS 루트 CA X.509 인증서가 있어야한다.

- TLS 중간 CA : 이 폴더에는 TLS 통신을 위해 이 MSP가 나타내는 조직에서 신뢰하는 중간 CA의 인증서 목록이 있다. 이 폴더는 상용 CA가 조직의 TLS 인증서에 사용될 때 특히 유용합니다. 멤버십 중간 CA와 마찬가지로 중간 TLS CA를 지정하는 것은 선택 사항이다.