Enclave 설치 및 실행
VerifyVASP에서 제공하는 Enclave 서버 개발 환경 설정에 대한 문서입니다.
시스템 요구 사항
시스템/인프라 구성도

Enclave Server
CPU : 최소 2, 권장 4G
메모리 : 최소 2G, 권장 4G
스토리지 : 최소 8G, 권장 16G (도커, 컨테이너 포함)
Enclave 서버 설치
Enclave docker 이미지 다운로드
Enclave docker 이미지는 Private Registry에 있어, 관리자에게 Docker Hub Credential ID를 전달하여 권한을 받을 수 있습니다.
[email protected]으로 Docker Hub ID를 전달하여 주시면 다운로드 권한을 드리겠습니다.
다운로드
$ docker pull verifyvasp/enclave:v1.5.7
Enclave 서버 환경 변수
VEGA_SERVER_PORT
21117
Enclave 서버의 포트 번호.
VEGA_ENCLAVE_PUBLIC_ENDPOINT
VV central 서버에서 접근할 수 있는 enclave 서버의 공개 엔드포인트 URL. 반드시 HTTPS 프로토콜 사용해야 한다.
예) “https://api.vasp.com/enclave”
VEGA_ALLIANCE_ACCESS_KEY
accessKey part of the API-Key
VEGA_ALLIANCE_SECRET_KEY
secretKey part of the API-Key
VEGA_DATABASE_CLIENT
mysql2
데이터베이스의 종류.
데이터베이스 클라이언트에 맞는 값을 기입하면 된다. pg, mysql, mysql2, oracledb, mssql 값을 사용할 수 있다.
VEGA_DATABASE_USERNAME
Database user name
VEGA_DATABASE_PASSWORD
Database password
VEGA_DATABASE_HOST
Address to access database
VEGA_DATABASE_PORT
3306
Port number to access database
VEGA_DATABASE_DB
verifyvasp
Database name that enclave server uses
VEGA_DATABASE_SEARCH_PATH
enclave
Custom schema name for PostgreSQL
VEGA_DATABASE_POOL_MIN
0
Minimum value of database connection pool
VEGA_DATABASE_POOL_MAX
5
Maximum value of database connection pool
VEGA_DATABASE_SSL
데이터베이스의 ssl 연결을 사용할지 여부 (true or false)
VEGA_DATABASE_SSL_CA
서버 인증서를 검증하기 위한 인증기관(CA)의 인증서 파일 경로
VEGA_DATABASE_SSL_KEY
ssl 연결에 사용할 클라이언트 인증서 개인키 파일 경로
VEGA_DATABASE_SSL_CERT
ssl 연결에 사용할 클라이언트 공개 인증서 파일 경로
VEGA_DATABASE_SSL_CAPATH
ca 인증서들이 저장되어 있는 디렉토리 경로
VEGA_DATABASE_SSL_CIPHER
클라이언트와 서버간 사용할 수 있는 암호화 알고리즘을 지정
VEGA_DATABASE_SSL_REJECT_UNAUTHORIZED
서버의 인증서가 신뢰되지 않더라도 ssl 연결을 허용할지 여부 (true or false) pool
VEGA_VERIFICATION_API_PATH
사용자 검증 API 엔드포인트 URL.
VEGA_VERIFICATION_ACCOUNT_API_PATH
사용자 계정 (지갑 주소 및 수취인 이름) 검증 API 엔드포인트 URL.
VEGA_VERIFICATION_TRANSACTION_API_PATH
트랜잭션 처리 상태 조회 API 엔드포인트 URL.
VEGA_VERIFICATION_CALLBACK_API_PATH
비동기 처리 결과를 받을 Callback API 엔드포인트 URL.
VEGA_VERIFICATION_AUTHORIZATION_TOKEN
VASP 백엔드로 API를 호출할 때 사용할 인증 토큰. Enclave 서버가 VASP 백엔드로 API를 호출할 때, 헤더로 인증 토큰을 전달한다.
VEGA_VERIFICATION_AUTHORIZATION_KEY
VASP 백엔드로 API를 호출할 때 인증 토큰을 전달할 헤더 키값. 설정하지 않으면 Authorization
헤더를 통해 인증 토큰을 전달한다.
VEGA_API_ENDPOINT
VerifyVASP central API server address. 앞서 말했듯이, 두 가지 환경을 제공하는데 목적에 맞게 사용하면 된다. 프로덕션 환경의 경우, https://api-kr.vega-protocol.com
로 기입한다. 스테이징 환경의 경우, https://api-kr.vega-protocol.xyz
로 기입하면 된다.
VEGA_LOG_LEVEL
info
Enclave 서버의 로그 레벨을 정할 수 있다.
none, error, warn, info, debug 값을 사용할 수 있다.
VEGA_PUBLIC_KEY_TTL
1800000
종단 간 암호화에 사용할 상대방 VASP의 public key을 얼마나 오랫동안 캐싱 할 것인지 설정할 수 있다. 단위는 밀리초.
VEGA_ENCRYPTION_KEY_BASE64
개인정보 암호화에 사용할 암호화 키
아래 VEGA_DECRYPT_API_ENDPOINT를 입력하지 않으면, VEGA_ENCRYPTION_KEY_BASE64 환경 변수에 설정된 값이 그대로 데이터베이스의 암호화 키로 사용된다. (권장하지 않음) VEGA_DECRYPT_API_ENDPOINT가 설정되어 있으면, VEGA_ENCRYPTION_KEY_BASE64 환경 변숫값을 request body의 inputKey로 설정하여 해당 API를 호출하고 응답으로 받은 outputKey를 암호화 키로 사용한다.
VEGA_DECRYPT_API_ENDPOINT
VEGA_ENCRYPTION_KEY_BASE64에 설정된 암호화 키를 한 번 더 복호화 하기 위해 설정하는 외부 서비스 엔드포인트. HSM과 같은 암호화에 관련된 외부 서비스를 사용하기 위해 설정한다
VEGA_CHAINALYSIS_SANCTION_API_KEY
Chainalysis sanction API 연동 기능을 이용하여 상대방 지갑 주소를 screening 하고자 할 때, Chainalysis Sanction API Key를 설정한다.
VEGA_CHAINALYSIS_KYT_API_KEY
Chainalysis KYT API 연동 기능을 이용하여 상대방 지갑 주소나 자산 전송 트랜잭션의 위험 평가를 수행하고자 할 때, Chainalysis KYT API Key를 설정한다.
VEGA_REFINITIV_WCO_API_KEY
Refinitiv World Check One API 연동 기능을 이용하여 거래 상대방에 대한 위험 평가를 수행하고자 할 때, Refinitiv World Check One API Key를 설정한다.
VEGA_REFINITIV_WCO_API_SECRET
Refinitiv World Check One API 연동 기능을 이용하여 거래 상대방에 대한 위험 평가를 수행하고자 할 때, Refinitiv World Check One API Key 와 함께 발급된 Secret을 설정한다.
VEGA_REFINITIV_WCO_GROUP_ID
Refinitiv World Check One API 연동 기능을 이용하여 거래 상대방에 대한 위험 평가를 수행하고자 할 때, Refinitiv console sit에서 생성한 group ID를 설정한다. 연동 기능을 통해 수행한 모든 screening case는 해당 그룹에 속한다.
Enclave 실행 방법
환경 변수를 파일에 적어 실행하는 방법.
환경 변수를 파일에 적어 실행합니다. (e.g. stg_env)
;Enclave 서버
VEGA_SERVER_PORT=21117
VEGA_ENCLAVE_PUBLIC_ENDPOINT=<Enclave Server endpoint URL>
;API Keys
VEGA_ALLIANCE_ACCESS_KEY=<issued accessKey>
VEGA_ALLIANCE_SECRET_KEY=<issued secretKey>
;DB Client
VEGA_DATABASE_CLIENT=mysql2
VEGA_DATABASE_USERNAME=vasp
VEGA_DATABASE_PASSWORD=1234
VEGA_DATABASE_HOST=<database endpoint URL>
VEGA_DATABASE_PORT=3306
VEGA_DATABASE_DB=vega
VEGA_DATABASE_POOL_MIN=0
VEGA_DATABASE_POOL_MAX=5
;VASP API
VEGA_VERIFICATION_API_PATH=<VerifyUser API endpoint URL>
VEGA_VERIFICATION_ACCOUNT_API_PATH=<VerifyAccount API endpoint URL>
VEGA_VERIFICATION_TRANSACTION_API_PATH=<Transaction processing state querying API endpoint URL>
VEGA_VERIFICATION_CALLBACK_API_PATH=<Callback API endpoint URL>
VEGA_VERIFICATION_AUTHORIZATION_TOKEN=<Auth Token>
VEGA_VERIFICATION_AUTHORIZATION_KEY=<Auth Token Header Key>
;VerifyVASP Central Server URL
VEGA_API_ENDPOINT=https://api-kr.vega-protocol.xyz
;Log
VEGA_LOG_LEVEL=info
;DB Encryption Key
VEGA_DECRYPT_API_ENDPOINT=<HSM URL>
VEGA_ENCRYPTION_KEY_BASE64=<Public Key on base64>
;Caching
VEGA_PUBLIC_KEY_TTL=1800000
;Risk Assessment
VEGA_CHAINALYSIS_SANCTION_API_KEY=<Chainalysis Public Sanction API Key>
VEGA_CHAINALYSIS_KYT_API_KEY=<Chainalysis KYT API Key>
VEGA_REFINITIV_WCO_API_KEY=<Refinitiv World Check One API Key>
VEGA_REFINITIV_WCO_API_SECRET=<Refinitiv World Check One API Secret>
VEGA_REFINITIV_WCO_GROUP_ID=<Refinitiv World Check One Group ID>
실행
$ docker run -d -p 21117:21117 --env-file=<환경 변수 파일 이름> --name=enclave verifyvasp/enclave:v1.5.7
환경 변수를 커맨드 명령어 직접 입력하여 실행하는 방법.
$ docker run -d -p 21117:21117 \\\\
-e VEGA_SERVER_PORT=21117 \\\\
-e VEGA_ENCLAVE_PUBLIC_ENDPOINT=<Enclave Server endpoint URL> \\\\
-e VEGA_ALLIANCE_ACCESS_KEY=<issued accessKey> \\\\
-e VEGA_ALLIANCE_SECRET_KEY=<issued secretKey> \\\\
-e VEGA_DATABASE_USERNAME=vasp \\\\
-e VEGA_DATABASE_PASSWORD=1234 \\\\
-e VEGA_DATABASE_HOST=<database endpoint URL> \\\\
-e VEGA_DATABASE_PORT=3306 \\\\
-e VEGA_DATABASE_DB=vega \\\\
-e VEGA_VERIFICATION_API_PATH=<VerifyUser API endpoint URL> \\\\
-e VEGA_VERIFICATION_ACCOUNT_API_PATH=<VerifyAccount API endpoint URL> \\\\
-e VEGA_VERIFICATION_TRANSACTION_API_PATH=<Transaction processing state querying API endpoint URL> \\\\
-e VEGA_VERIFICATION_CALLBACK_API_PATH=<Callback API endpoint URL> \\\\
-e VEGA_VERIFICATION_AUTHORIZATION_TOKEN=<Auth Token> \\\\
-e VEGA_VERIFICATION_AUTHORIZATION_KEY=<Auth Token Header Key> \\\\
-e VEGA_API_ENDPOINT=https://api-kr.vega-protocol.xyz \\\\
-e VEGA_LOG_LEVEL=info \\\\
-e VEGA_PUBLIC_KEY_TTL=1800000 \\\\
-e VEGA_DECRYPT_API_ENDPOINT=<HSM URL> \\\\
-e VEGA_ENCRYPTION_KEY_BASE64=<Public Key on base64> \\\\
-e VEGA_CHAINALYSIS_SANCTION_API_KEY=<Chainalysis Public Sanction API Key> \\\\
-e VEGA_CHAINALYSIS_KYT_API_KEY=<Chainalysis KYT API Key> \\\\
-e VEGA_REFINITIV_WCO_API_KEY=<Refinitiv World Check One API Key> \\\\
-e VEGA_REFINITIV_WCO_API_SECRET=<Refinitiv World Check One API Secret> \\\\
-e VEGA_REFINITIV_WCO_GROUP_ID=<Refinitiv World Check One Group ID> \\\\
verifyvasp/enclave:v1.5.7
Enclave 서버 기동
Enclave 서버 기동 및 기동 여부 확인
enclave 서버가 완전히 잘 떴는지 확인하는 방법
docker log를 봤을 때 “Listening port at 21117” 와 같이 설정한 포트 번호로 listening 하고 있다는 메시지가 보여야 합니다.
(단, 뒤이어 다른 에러 로그가 없어야 합니다.)
Enclave 서버 헬스 체크
<enclave endpoint>/healthcheck 경로로 GET 호출합니다.
VV central 서버에서 주기적으로 (5~10) 초에 한번 각 VASP enclave 서버의 health를 체크하고 있습니다.
Enclave 서버 재기동
Enclave docker가 동작을 멈추면 재기동 해야 합니다.
또는, Enclave docker log에 다음과 같은 로그가 찍히면 재기동 해야 합니다.
“Unhandled Rejection detect: <error message>”
“Uncaught Exception detect: <error message>”
Last updated