# KIS Live Secret Guide 한국투자증권 Open API 기반 quant agent가 사용할 장기 비밀값은 `SOPS + age`로 관리한다. ## 1. repo 위치로 이동 원격 host의 ALT repo에서만 진행한다. ```bash cd /Users/toki/docker/services/code-server/data/volume/workspace/alt ``` ## 2. SOPS 파일 열기 ```bash SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/keys.txt" \ EDITOR="${EDITOR:-nano}" \ sops secrets/kis.live.sops.yaml ``` ## 3. 템플릿 붙여넣기 2번 명령으로 열린 편집기 안에서 `secrets/kis.live.sops.yaml`의 전체 내용을 아래 형태로 맞춘다. 각 값 설명을 실제 값으로 바꾼 뒤 저장하고 편집기를 종료한다. ```yaml KIS_REAL_APP_KEY: "<한국투자증권 실전 Open API 앱키>" KIS_REAL_APP_SECRET: "<한국투자증권 실전 Open API 앱시크릿>" KIS_REAL_CANO: "<실전 증권계좌번호 8자리>" KIS_REAL_ACNT_PRDT_CD: "01" KIS_PAPER_APP_KEY: "<한국투자증권 모의투자 Open API 앱키>" KIS_PAPER_APP_SECRET: "<한국투자증권 모의투자 Open API 앱시크릿>" KIS_PAPER_CANO: "<모의투자 증권계좌번호 8자리>" KIS_PAPER_ACNT_PRDT_CD: "01" ``` 국내주식 종합계좌 기준 `ACNT_PRDT_CD`는 `01`로 둔다. 한국투자증권 공식 샘플도 증권계좌 8자리와 `my_prod: "01"`을 분리해서 사용한다. 실제 값은 문서, 채팅, 로그에 쓰지 않는다. `nano` 기준 저장은 `Ctrl+O`, `Enter`, 종료는 `Ctrl+X`다. ## 4. 입력 확인 값을 출력하지 않고 필요한 key가 모두 들어왔는지만 확인한다. ```bash SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/keys.txt" \ bin/kis-sops-env bash -lc ' for key in \ KIS_REAL_APP_KEY KIS_REAL_APP_SECRET KIS_REAL_CANO KIS_REAL_ACNT_PRDT_CD \ KIS_PAPER_APP_KEY KIS_PAPER_APP_SECRET KIS_PAPER_CANO KIS_PAPER_ACNT_PRDT_CD do test -n "${!key}" || exit 1 done echo "KIS SOPS secrets are ready" ' ``` ## 5. 모의/실전 테스트 실행 준비 확인 모의테스트 command는 `KIS_ACTIVE_ENV=paper`를 일반 환경변수로 주고, secret은 SOPS에서 주입한다. ```bash KIS_ACTIVE_ENV=paper \ SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/keys.txt" \ bin/kis-sops-env bash -lc ' test "$KIS_ACTIVE_ENV" = "paper" test -n "$KIS_PAPER_APP_KEY" test -n "$KIS_PAPER_APP_SECRET" test -n "$KIS_PAPER_CANO" test -n "$KIS_PAPER_ACNT_PRDT_CD" echo "paper smoke env is ready" ' ``` 실전 테스트 command는 `KIS_ACTIVE_ENV=real`을 일반 환경변수로 주고, secret은 SOPS에서 주입한다. ```bash KIS_ACTIVE_ENV=real \ SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/keys.txt" \ bin/kis-sops-env bash -lc ' test "$KIS_ACTIVE_ENV" = "real" test -n "$KIS_REAL_APP_KEY" test -n "$KIS_REAL_APP_SECRET" test -n "$KIS_REAL_CANO" test -n "$KIS_REAL_ACNT_PRDT_CD" echo "real smoke env is ready" ' ``` 첫 smoke는 삼성전자 `005930` 일봉 조회로 실행한다. 토큰과 secret은 출력하지 않고 결과 요약만 출력한다. 모의: ```bash KIS_ACTIVE_ENV=paper \ SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/keys.txt" \ bin/kis-sops-env bin/kis-paper-daily-smoke \ --symbol 005930 \ --start 20240527 \ --end 20240528 ``` 실전: ```bash KIS_ACTIVE_ENV=real \ SOPS_AGE_KEY_FILE="$HOME/.config/sops/age/keys.txt" \ bin/kis-sops-env bin/kis-paper-daily-smoke \ --symbol 005930 \ --start 20240527 \ --end 20240528 ``` ## 6. 확인 체크리스트 - [ ] SOPS에는 실전/모의 8개 값만 있다. - [ ] secret 값이 문서, 로그, 테스트 fixture에 출력되지 않았다. - [ ] 모의 일봉 smoke가 통과했다. - [ ] 실전 일봉 smoke가 통과했다.