VerifyVASP
  • VerifyVASP
  • Change Log
  • Getting Started
    • 시작
    • 제품 구성
    • Alliance 가입 및 API Key 발급
    • VASP API 구현
    • 데이터베이스
    • Enclave 설치 및 실행
    • 보안 가이드
    • Robot VASP 활용
    • Enclave Server API 활용
  • Reference
    • Enclave API Reference
      • v1
        • 자신의 VASP ID API
        • VASP 목록 조회 API
        • Screening API
          • Chainalysis Sanction 기능을 이용한 위험 평가 API
          • Chainalysis KYT 기능을 이용한 위험 평가 API
          • Refinitiv WCO 기능을 이용한 위험 평가 API
        • 사용자 검증 요청 API
        • 사용자 계정 검증 요청 API
        • 검증 결과 조회 API
        • 단일 검증 결과 조회 API
        • 트랜잭션 결과 리포트 API
        • 에러 상황 리포트 API
        • 트랜잭션 상태 문의 API
    • VASP API Reference
      • 사용자 검증 API
      • 사용자 계정 검증 API
      • 트랜잭션 처리 상태 조회 API
      • Callback API
      • Database 암호화 키를 복호화 하는 API
    • IVMS101 가이드
      • IVMS101 포맷 정의
      • IVMS101 정보 기입 가이드
      • IVMS101 사용자 개인 정보 종류 코드
    • 추가 정보
      • Network 필드 가이드
      • 지갑 주소 및 트랜잭션 ID 표준 가이드
    • Terms
Powered by GitBook
On this page
  • 시스템 요구 사항
  • Enclave 서버 설치
  • Enclave 서버 환경 변수
  • Enclave 실행 방법
  • 환경 변수를 파일에 적어 실행하는 방법.
  • 환경 변수를 커맨드 명령어 직접 입력하여 실행하는 방법.
  • Enclave 서버 기동
  • Enclave 서버 기동 및 기동 여부 확인
  • Enclave 서버 헬스 체크
  • Enclave 서버 재기동
  1. Getting Started

Enclave 설치 및 실행

VerifyVASP에서 제공하는 Enclave 서버 개발 환경 설정에 대한 문서입니다.

Previous데이터베이스Next보안 가이드

Last updated 5 months ago

시스템 요구 사항

  • 시스템/인프라 구성도

  • Enclave Server

    • CPU : 최소 2, 권장 4G

    • 메모리 : 최소 2G, 권장 4G

    • 스토리지 : 최소 8G, 권장 16G (도커, 컨테이너 포함)

Enclave 서버 설치

  • Enclave docker 이미지 다운로드

    • Enclave docker 이미지는 Private Registry에 있어, 관리자에게 Docker Hub Credential ID를 전달하여 권한을 받을 수 있습니다.

    • corporate-kr@verifyvasp.com으로 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>”