거래소 API 키 보안 설정법

거래소 API 키, 왜 위험한가?

자동매매 봇을 운영하려면 거래소 API 키를 발급받아야 합니다. 이 키는 여러분의 계좌에 직접 접근하는 열쇠입니다. API 키가 유출되면 누군가 여러분의 자산을 마음대로 매매하거나, 최악의 경우 출금까지 가능합니다.

실제로 2022~2024년 사이 API 키 유출로 인한 피해 사례가 다수 보고되었습니다. GitHub에 실수로 커밋된 키, 피싱 사이트에 입력한 키, 보안이 취약한 VPS에서 탈취된 키 — 원인은 다양하지만 결과는 동일합니다: 자산 손실.

이 글에서는 거래소 API 키를 안전하게 관리하는 실전 보안 설정법을 단계별로 정리합니다.

API 키 발급 시 필수 설정

거래소에서 API 키를 생성할 때, 아래 3가지를 반드시 설정하세요.

1. 권한 최소화 (Least Privilege)

API 키에는 여러 권한을 부여할 수 있습니다. 필요한 권한만 활성화하세요.

권한 용도 자동매매 봇에 필요?
읽기 (Read) 잔고, 주문 조회 ✅ 필수
거래 (Trade) 주문 생성·취소 ✅ 필수
출금 (Withdraw) 자산 외부 전송 ❌ 절대 비활성화
내부 이체 (Transfer) 서브계정 간 이동 ⚠️ 필요 시에만

출금 권한은 절대로 부여하지 마세요. API 키가 유출되어도 출금 권한이 없으면 자산이 거래소 밖으로 빠져나가지 않습니다.

2. IP 화이트리스트

API 키를 특정 IP에서만 사용 가능하도록 제한하세요. 대부분의 거래소(바이낸스, 업비트, 빗썸 등)가 이 기능을 지원합니다.

  • VPS에서 봇을 운영한다면, 해당 VPS의 고정 IP 1개만 등록
  • 로컬 PC에서 운영한다면, 공인 IP를 확인 후 등록 (IP 변경 시 업데이트 필요)
  • IP 제한 없이 발급한 키는 어디서든 사용 가능하므로 유출 시 피해가 즉각적

3. 만료 기간 설정

일부 거래소는 API 키에 만료 기간을 설정할 수 있습니다. 90일 단위로 갱신하는 것을 권장합니다. 장기간 방치된 키는 보안 취약점이 됩니다.

API 키 저장 — 절대 하면 안 되는 것들

API 키를 안전하게 보관하는 것은 발급 설정만큼 중요합니다.

❌ 절대 금지

  • 소스 코드에 하드코딩: api_key = "abc123..." — GitHub에 푸시하는 순간 전 세계에 공개됩니다.
  • 메신저/이메일로 전송: 카카오톡, 텔레그램, 이메일 모두 안전하지 않습니다.
  • 메모장/텍스트 파일: 바탕화면의 api_key.txt는 악성코드의 1순위 타겟입니다.
  • 스크린샷으로 보관: 클라우드 동기화 시 유출 위험이 있습니다.

✅ 올바른 저장 방법

  • 환경 변수: export API_KEY=abc123 → 코드에서 os.environ["API_KEY"]로 읽기
  • .env 파일 + .gitignore: .env 파일에 저장하고 반드시 .gitignore에 추가
  • 시크릿 매니저: AWS Secrets Manager, HashiCorp Vault 등 전문 도구 사용
  • 암호화 저장: 최소한 파일 시스템 암호화(LUKS) 또는 GPG 암호화 적용

봇 서버 보안 강화

자동매매 봇을 운영하는 서버 자체의 보안도 중요합니다. 서버가 뚫리면 API 키도 함께 유출됩니다.

필수 서버 보안 설정

  • SSH 키 인증: 비밀번호 로그인을 비활성화하고 SSH 키만 허용하세요.
  • 방화벽: 필요한 포트(SSH, HTTPS)만 열고 나머지는 모두 차단합니다.
  • 자동 업데이트: OS 보안 패치를 자동으로 적용하세요 (unattended-upgrades).
  • 루트 로그인 차단: 일반 사용자 + sudo 방식으로 운영합니다.
  • fail2ban: SSH 무차별 대입 공격을 자동 차단합니다.

유출 감지와 대응 프로세스

아무리 보안을 강화해도 100%는 없습니다. 유출이 의심되면 즉시 대응할 수 있는 프로세스를 미리 준비하세요.

유출 징후

  • 본인이 하지 않은 주문이 체결됨
  • 거래소에서 “새 IP에서 API 접근” 알림 수신
  • 비정상적인 잔고 변동

즉시 대응 순서

  1. API 키 즉시 삭제 — 거래소 웹사이트에서 해당 키를 삭제합니다.
  2. 비밀번호 변경 — 거래소 계정 비밀번호를 즉시 교체합니다.
  3. 2FA 확인 — 2단계 인증이 활성화되어 있는지 확인합니다.
  4. 거래 내역 확인 — 비정상 거래를 파악하고 거래소에 보고합니다.
  5. 원인 분석 — 어디서 유출되었는지 추적합니다 (Git 히스토리, 서버 로그 등).

추가 보안 레이어

서브계정 활용

바이낸스, OKX 등은 서브계정을 지원합니다. 봇용 서브계정을 따로 만들고, 필요한 자금만 이체해 운영하면 피해 범위를 제한할 수 있습니다.

API 요청 로깅

봇이 보내는 모든 API 요청을 로그로 남기세요. 비정상적인 요청 패턴(예: 새벽 3시에 대량 주문)을 감지하면 즉시 알림을 보내도록 설정합니다. 계좌 생존 규칙과 마찬가지로, 보안도 예방이 핵심입니다.

정기 키 로테이션

90일마다 API 키를 새로 발급하고 기존 키를 삭제하세요. 자동화가 어렵다면, 최소 분기 1회 수동으로 교체합니다.

보안 점검 체크리스트

  1. 출금 권한이 비활성화되어 있는가?
  2. IP 화이트리스트가 설정되어 있는가?
  3. API 키가 소스 코드에 포함되어 있지 않은가?
  4. .env 파일이 .gitignore에 포함되어 있는가?
  5. 서버에 SSH 키 인증 + 방화벽이 적용되어 있는가?
  6. API 키가 90일 이내에 갱신되었는가?
  7. 유출 시 대응 프로세스를 알고 있는가?

마무리

자동매매에서 보안은 수익률보다 중요합니다. 아무리 좋은 전략으로 수익을 쌓아도, API 키 하나가 유출되면 모든 것을 잃을 수 있습니다. 출금 권한 차단, IP 제한, 환경 변수 저장 — 이 세 가지만 지켜도 대부분의 위협을 막을 수 있습니다. 보안은 선택이 아니라 자동매매의 전제 조건입니다.

위로 스크롤
WordPress Appliance - Powered by TurnKey Linux