사용자가 정적(사용자의 수의 변화가 적음)일 때 유용함
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
Admin@org1.example.com/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/User1@org1.example.com/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/User1@org1.example.com/msp" cli peer chaincode invoke -n sacc -C mychannel -c '{"Args":["get", "a"]}'
CORE_PEER_MSPCONFIGPATH 값만 바꾸면 다른 사용자의 인증정보 사용가능
org1.example.com/users 디렉터리 내부에 Admin 과 User1 존재 확인
msp/keystore : 사인키(개인키) 보관
msp/signcerts : 인증서 보관
Users Count : Admin 이외에 추가 할 사용자 (User1, User2 ... 식으로 추가 됨)
체인코드 레벨에서 접근 제한
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
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"]}'
docker exec -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/User1@org1.example.com/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/User1@org1.example.com/msp" cli peer chaincode invoke -n sacc-ac -C mychannel -c '{"Args":["get", "a"]}'
값 조회하는 건 문제없음
fabcar 예제 사용
cd fabric-samples/first-network
./byfn.sh down
./byfn.sh up -a -n -s couchdb
cd fabric-samples/fabcar
./startFabric.sh
# 필수 모듈 설치
cd fabric-samples/fabcar/javascript
npm install
# 관리자, 사용자 등록
node enrollAdmin.js
node registerUser.js
# 체인코드 실행
node invoke.js
node query.js