API Key 관리
본 메뉴얼은 사용자가 서비스를 안전하고 효율적으로 이용할 수 있도록 API Key 생성, 중지, 삭제 및 보안 관리에 대한 표준 절차를 안내합니다.
1. API Key의 이해
API Key란 무엇인가요?
클라우드 시스템이 "우리 서비스를 사용할 자격이 있는 안전한 사용자가 맞구나" 하고 알아볼 수 있도록 인프라 시스템이 발급해 주는 디지털 신분증 입니다.
우리가 웹사이트에 로그인할 때 아이디와 비밀번호를 입력하듯, 클라우드 인프라에 접근할 때는 이 API Key를 제시하고 인증을 받게 됩니다.
API Key 구조
iwinv에서는 보안 강화를 위해 쌍(Pair)으로 이루어진 구조를 사용합니 다.
Access Key ID: 신원 확인을 위한 아이디 역할을 합니다.Secret Key ID: 절대 외부에 노출되어서는 안 되는 비밀번호 역할을 합니다.
디지털 서명(Signature) 방식
iwinv API는 보안을 위해 Secret Key 원본을 네트워크로 직접 전송하지 않습니다.
API를 요청할 때마다 호출 데이터와 Secret Key를 조합하고, 해커가 패킷을 가로채 똑같이 요청하는 재전송 공격(Replay Attack)을 방지하기 위해 Timestamp 값을 결합합니다.
이 세 가지 요소를 HMAC-SHA256 알고리즘으로 암호화하여 일회성 디지털 서명인 Signature를 생성한 후, HTTP 요청 헤더에 포함하여 전송합니다.
2. API Key 발급 및 상태 관리
메뉴위치
- Console 로그인 > 계정관리 > 인증관리 > API 인증 키 관리
https://console.iwinv.kr/member/apikey

API Key 생성 및 운영 규칙
- 생성하기: [생성하기]버튼을 클릭하면
Access Key와Secret Key가 발급됩니다. - 상태 제어
사용: 해당 API Key를 활성화하여 정상적인 API 호출을 허용합니다.중지: Key를 삭제하지 않고 잠시 권한을 차단합니다. 점검이나 유출 의심 시 일시적으로 사용을 중단할 때 활용합니다.삭제: 해당 Key를 시스템에서 영구히 폐기합니다. 삭제된 Key는 복구가 불가능하며 관련된 모든 프로세서가 차단됩니다.

3. 필수 보안 설정 가이드
Key 자체가 유출되거나 무방비하게 노출되면 클라우드 인프라 전체의 제어권이 위협받고 비정상적인 과금이 발생할 수 있습니다. 데이터를 안전하게 보호하기 위해 시스템 구축 시 다음 필수 보안 설정을 반드시 준수하십시오.
1. API 요청 IP 대역 제한
- 해당 Key를 사용할 서버의 공인 IP(또는 NAT 게이트웨이 IP) 또는 **접근 사무실 IP 대 역(CIDR)**을 반드시 지정해야 합니다.
- 허용되지 않은 IP 주소에서 API 호출 시, 올바른 Signature를 전송하더라도 서버는 403 Forbidden (Unauthorized IP) 에러를 반환하고 요청을 차단합니다.

2. 소스코드 하드코딩 방지 및 환경변수 설정
-
하드코딩 절대 금지: 소스코드 파일(.py, .php, .js 등) 내부에 API Key나 Secret Key 문자열을 직접 기입하는 행위를 금지합니다.
-
환경변수 분리: 서버의 OS 환경변수 또는 프로젝트 루트의 .env 파일(버전 관리에서 제외 필수)에 Key를 저장하고, 프로그램 실행 시 메모리에 로드하여 사용합니다.
Python
import os
# OS 시스템 환경변수에서 동적으로 로드
iwinv_access_key = os.environ.get('IWINV_ACCESS_KEY')
iwinv_secret_key = os.environ.get('IWINV_SECRET_KEY')
터미널 프로필(~/.bashrc 또는 /etc/enviroment)에 아래와 같이 환경변수를 선언하여 관리합니다.
Bash
export IWINV_ACCESS_KEY="IWINV_ACCESS_KEY"
export IWINV_SECRET_KEY="IWINV_SECRET_KEY"
3. 주기 적인 KEY 변경
- 교체 주기: 모든 운영 및 개발용 API Key는 최소 90일(분기별 1회) 주기로 재발급 및 기존 키 폐기를 수행합니다.
- 권장 절차 : 신규 Key 발급 -> 서비스 환경변수 적용 및 무중단 재기동 -> 호출 로그 확인 -> 기존 Key 콘솔에서 삭제