파이썬(Python)과 바이낸스(Binance) 거래소를 연동하여 자동매매 봇을 구축하기 위한 첫 단계, API Key 발급 및 보안 세팅 방법을 정리합니다.
해킹으로 인한 자산 손실을 완벽하게 차단하기 위해 필수적인 IP 제한(Whitelist) 설정과 권한 분리 방법까지 모두 포함되어 있습니다.
📌 핵심 요약
- Secret Key 보관: 발급 직후 단 한 번만 화면에 노출되므로 반드시 안전한 곳(메모장, 패스워드 매니저 등)에 복사해 두어야 합니다.
- 출금(Withdrawals) 권한 차단: 자동매매용 API는 절대 출금 권한을 활성화해서는 안 됩니다.
- IP 바인딩 필수: 내가 봇을 실행할 PC나 서버(AWS 등)의 고정 IP만 접근할 수 있도록 화이트리스트를 설정해야 해킹을 방지할 수 있습니다.
1단계: API Management 메뉴 진입
바이낸스 웹사이트에 로그인한 후, 우측 상단의 사람 모양(프로필) 아이콘을 클릭하고 드롭다운 메뉴에서 [API Management]를 선택합니다.

최근 바이낸스 UI 업데이트로 인해 메뉴 위치가 조금씩 바뀔 수 있으나, 보통 계정 및 보안(Security) 관련 탭 근처에 위치해 있습니다.
2단계: API Key 생성 및 Secret Key 백업
API Management 페이지에 들어왔다면 본격적으로 키를 생성합니다.
- 우측 상단의 노란색
[Create API]버튼을 클릭합니다. - 생성 방식은
System generated(바이낸스 시스템이 자동 생성)를 선택하고[Next]를 누릅니다. - API의 용도를 알기 쉽게 입력합니다. (예:
trading-bot) - 구글 OTP 또는 이메일/SMS 인증을 거치면 생성이 완료됩니다.

⚠️ 주의사항: 화면에 표시된 API Key와 Secret Key를 즉시 복사하여 별도의 안전한 파일에 저장합니다. 이 창을 닫거나 새로고침하면 Secret Key는 암호화되어 다시는 전체 문자열을 확인할 수 없습니다. 만약 저장하지 못했다면 해당 API를 삭제하고 처음부터 다시 만들어야 합니다.
3단계: IP 보안 세팅 및 권한 설정 (핵심)
API를 발급받은 직후에는 보안을 위해 ‘읽기(Reading)’ 권한만 부여되어 있습니다. 매매를 수행하려면 권한을 수정해야 합니다.
- 생성된 API 항목 우측 상단의
[Edit Restrictions]를 클릭합니다. - 화면 하단의 IP 접근 제한 설정에서
Restrict access to trusted IPs only를 선택합니다. - 봇이 실행될 컴퓨터나 클라우드 서버(AWS EC2 등)의 공인 IP 주소를 입력하고
[Confirm]을 누릅니다. (공인 IP는 네이버에 ‘내 IP 주소’를 검색하면 확인할 수 있습니다.) - IP가 등록되면 위쪽의 권한 체크박스가 활성화됩니다. 용도에 맞게
Enable Spot & Margin Trading(현물 및 마진) 또는Enable Futures(선물)를 체크합니다.

🚨 보안 경고:
Enable Withdrawals(출금) 항목은 절대 체크하지 마십시오. 이 항목이 해제되어 있고 IP가 지정되어 있다면, 설령 API 키가 유출되더라도 해커가 내 자산을 외부로 빼낼 수 없습니다.
세팅이 끝났다면 우측 상단의 [Save]를 눌러 설정을 저장합니다.
4단계: 파이썬(ccxt) 연동 정상 작동 테스트
발급받은 API 키가 정상적으로 작동하는지 파이썬과 ccxt 라이브러리를 통해 테스트해 봅니다. 내 바이낸스 지갑의 USDT 잔고를 불러오는 5줄짜리 간단한 코드입니다.
(아직 ccxt 라이브러리가 없다면 터미널에 pip install ccxt를 입력해 설치하세요.)
Python
import ccxt
# 본인의 API Key와 Secret Key를 입력하세요
binance = ccxt.binance({
'apiKey': '여기에_API_KEY_입력',
'secret': '여기에_SECRET_KEY_입력',
'enableRateLimit': True,
})
# 현물(Spot) 지갑의 잔고 데이터 불러오기
balance = binance.fetch_balance()
print(f"나의 USDT 잔고: {balance['total'].get('USDT', 0)}")
나의 USDT 잔고: 1.0USDT
코드를 실행했을 때 본인의 USDT 잔고가 정상적으로 출력된다면, 거래소와 봇이 완벽하게 연결된 것입니다.