하이퍼레저v1.4 CA

네트워크 내 신원확인

- CA가 없는 경우

사용자가 정적(사용자의 수의 변화가 적음)일 때 유용함

네트워크 시작

cd fabric-samples/basic-network
./start.sh

docker-compose -f docker-compose.yml up -d cli
docker exec cli peer chaincode install -n sacc -v 0 -p github.com/sacc
docker exec cli peer chaincode instantiate -n sacc -v 0 -C mychannel -c '{"Args":["a", "100"]}'

인증정보 확인

패브릭 네크워크 내 모든 트랜잭션은 허가받은 유저에 의해서만 실행이 가능하다.
CLI컨테이너가 자동으로 인증정보를 제공하기 때문에 우리는 아무런 추가 작업없이 트랜잭션을 실행할 수 있었다.

docker exec cli env | grep CORE_PEER_MSPCONFIGPATH

[email protected]/msp 를 가리키는 환경변수 CORE_PEER_MSPCONFIGPATH 를 볼 수 있다. 이 인증정보는 체인코드를 실행할 때 사용된다

docker exec -e "CORE_PEER_MSPCONFIGPATH=" cli peer chaincode invoke -n sacc -C mychannel -c '{"Args":["get", "a"]}'

CORE_PEER_MSPCONFIGPATH 를 삭제한 경우 트랜잭션의 실행이 거부된다.

# 다른 사용자 인증정보 확인
docker exec cli ls crypto/peerOrganizations/org1.example.com/users

docker exec -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp" cli peer chaincode invoke -n sacc -C mychannel -c '{"Args":["set", "a", "300"]}'
docker exec -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp" cli peer chaincode invoke -n sacc -C mychannel -c '{"Args":["get", "a"]}'

CORE_PEER_MSPCONFIGPATH 값만 바꾸면 다른 사용자의 인증정보 사용가능

인증정보를 생성하는 곳 확인

1. Docker-Compose 파일

  • CLI 컨테이너 실행시 설정될 환경변수 CORE_PEER_MSPCONFIGPATHDocker-Compose 파일 내에서 기본적으로 설정됨.
  • 로컬호스트이 ./crypto-config 디렉터리가 컨테이너의 /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto 에 매핑됨

2. ./crypto-config 디렉터리 내부

org1.example.com/users 디렉터리 내부에 AdminUser1 존재 확인
msp/keystore : 사인키(개인키) 보관
msp/signcerts : 인증서 보관

3. crypto-config.yaml 파일

Users Count : Admin 이외에 추가 할 사용자 (User1, User2 ... 식으로 추가 됨)

체인코드 내 접근 제한

체인코드 레벨에서 접근 제한

1. 접근 제한 설정된 체인코드 생성

cd fabric-samples/chaincode
cp -r abac/ sacc-ac/
cp sacc/sacc.go sacc-ac/go/sacc-ac.go
cd sacc-ac/go
rm abac.go
  • sacc-ac.go 파일

2. 체인코드 설치

docker exec cli peer chaincode install -n sacc-ac -v 0 -p github.com/sacc-ac/go
docker exec cli peer chaincode instantiate -n sacc-ac -v 0 -C mychannel -c '{"Args":["a", "100"]}'

3. 체인코드 실행(유저 1)

docker exec -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp" cli peer chaincode invoke -n sacc-ac -C mychannel -c '{"Args":["set", "a", "500"]}'

admin이 아니라 접근 거부

docker exec -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp" cli peer chaincode invoke -n sacc-ac -C mychannel -c '{"Args":["get", "a"]}'

값 조회하는 건 문제없음

- CA가 있는 경우

fabcar 예제 사용

네트워크 시작

cd fabric-samples/first-network
./byfn.sh down
./byfn.sh up -a -n -s couchdb
  • -a : 두 조직의 CA를 불러옴
  • -n : 예제 체인코드를 실행하지 않음
  • -s : 각 피어 노드에 대해 couchDB를 불러옴

관리자 / 사용자 등록

1. 체인코드 설치

cd fabric-samples/fabcar
./startFabric.sh

2. 관리자 / 사용자 등록

#  필수 모듈 설치
cd fabric-samples/fabcar/javascript
npm install

# 관리자, 사용자 등록
node enrollAdmin.js
node registerUser.js

3. 새 사용자로 체인코드 실행

# 체인코드 실행
node invoke.js
node query.js

좋은 웹페이지 즐겨찾기