바이낸스 API 보안을 위한 리눅스 환경 변수 설정
지난 포스팅에 이어 이번에도 바이낸스 API 보안을 유지할 수 있는 키 관리 방법에 대해 알아보겠습니다. 이 방법은 바이낸스 뿐만 아니라 API key로 인증하는 모든 곳에 적용 가능합니다. API Key를 리눅스 환경 변수로 설정하는 방법과 파이썬 코드에서 환경 변수를 불러오는 방법을 확인해 보시기 바랍니다.
글의 순서
API 보안의 중요성
API 보안을 위한 Key 보관 방법
환경변수 설정 : 리눅스(Linux)
파이썬 코드에서 API Key 사용 : os 내장 모듈
API 보안의 중요성
API 중에서는 API Key를 통해서 사용권한을 통제하기도 합니다. 이 통제 과정을 영어로는 authentication이라고 하고, 우리말로는 인증이라고 합니다. API Key, API Secret으로 인증하는 API가 쓰기 편한 경우가 많습니다. 코인 거래소 중 바이낸스나 업비트도 API Key로 간편하게 인증하며, 인증 후에는 계좌 조회부터 코인 매매까지 원하는 작업을 할 수 있습니다.
이렇게 간편한 만큼 만약 해커가 이 API Key, API Secret을 손에 넣는다면 간편하게 돈을 빼내 올 수도 있습니다. 따라서, API Key는 은행계좌의 비밀번호와 같은 수준으로 관리해야 합니다.
API 보안을 위한 Key 보관 방법
API 연동을 위해 필요한 API Key, API Secret는 보안 상 코드에 저장하면 안 됩니다. 여기서 API Key, API Secret는 각각 API에 접근하기 위한 접근키(access key)와 보안키(secret key)를 의미합니다. API Key, API Secret 보안성을 높일 수 있는 방법 중 하나가 시스템의 환경 변수로 설정해 두고 쓰는 방법입니다.
지금부터는 리눅스(Linux) 운영체제에서 API Key, API Secret을 환경 변수로 저장하는 방법을 알아보겠습니다.
환경변수 설정 : 리눅스(Linux)
환경 변수는 동작되는 응용 프로그램에 영향을 주는 변수입니다. 인증을 위해서는 쉘 스크립트(shell script) 파일 내에 API Key와 API Secret라는 변수에 Key 값이 지정되어 있어야 합니다.
먼저 환경 변수를 확인하고, 설정하기 위한 리눅스 명령어부터 알아보겠습니다. 터미널 또는 쉘(shell)에서 이 리눅스 명령어를 쓰면 환경 변수를 처리하거나 확인할 수 있습니다. 아래에 각 명령어와 의미를 정리하였습니다.
▶env : 시스템에 적용된 환경 변수 확인
▶set : 환경 변수, 일반 변수 모두 확인
현재 이 시스템에 적용되어 있는 환경변수만 보려면 명령어 env를 사용합니다. 만약 특정한 환경 변수의 값을 확인하고 싶으면, echo 명령어와 함께 환경 변수 앞에 $를 붙입니다. 아래는 HOME 이라는 변수 값을 확인하기 위한 명령어입니다.
▶echo $HOME
(1) 지역 환경변수 설정 : 해당 터미널에서만 사용가능
터미널에서 아래의 방법으로 환경 변수를 설정할 수 있습니다. 이때 주의할 사항은 공백이 없어야 합니다.
▶[환경변수]=[환경변수 값]
만약 Binan_KEY에 12345라는 값을 등록하고 싶으면, 아래와 같이 설정합니다.
▶Binan_KEY=12345
변수를 확인하려면 터미널에 다음의 echo 명령을 입력합니다. 이때 변수 앞에는 $가 붙어 있어야 합니다.
▶echo $Binan_KEY
만약 이 Binan_KEY를 지우고 싶다면 unset 명령어를 이용합니다. unset으로 변수를 제거한 다음 제거되었는지 확인하려면 역시나 echo를 사용합니다. 정상적으로 제거되었으면 아무런 값이 안나옵니다.
▶unset Binan_KEY
(2) 전역 환경변수 설정
지역 환경 변수 설정 방법은 명령어 앞에 export를 추가한 후, 지역환경변수 설정 방법과 동일하게 합니다.
▶export Binan_KEY=12345
(3) 시스템 환경 변수 설정 : 영구적으로 사용 가능한 환경 변수
지역 환경 변수나 전역 환경 변수 모두 터미널을 종료하고 재시작한 후 확인해보면 환경변수가 안보입니다. 환경 변수를 영구적으로 사용하기 위해서는 홈 디렉토리 밑에 있는 .bashrc 파일에 환경 변수를 추가해줘야 합니다. 이렇게 하면 이 시스템을 사용하는 모든 사용자가 이 변수를 사용할 수 있습니다. .bashrc 파일 편집을 위해서 vi 에디터를 사용하는데, 리눅스의 vim 에디터도 vi 에디터와 같은 종류입니다.▶vim ~/.bashrc
으로 .bashrc 파일을 엽니다. 파일 안에 Binan_API_KEY, Binan_API_SECRET 이라는 변수를 아래의 방법처럼 export를 사용하여 추가합니다.
export Binan_API_KEY=abcde1234512345…..
export Binan_API_SECRET=123451234512345….
▶source ~/.bashrc
~/.bashrc 파일에 원하는 환경 변수를 추가한 후, 이를 바로 사용하려면 source 명령어를 써서 수정 내용을 적용시켜 줘야 합니다. 아니면 로그아웃 후에 다시 로그인 해야 합니다.
환경변수 설정 : 리눅스(Linux)
환경변수로 저장해 둔 API Key를 파이썬 코드에서는 os 모듈을 이용해서 읽어올 수 있습니다. ‘바이낸스 코인거래소 API Key로 계좌에 접속하는 파이썬 프로그래밍’이란 포스팅에서 이부분을 간단히 설명하였는데요. 아래 코드는 Binan_API_KEY, Binan_SECRET_KEY라는 환경 변수에 키 값을 저장해 두고 읽어오는 방법을 보여주고 있습니다. 만약 이 코드를 실행시켰는데, 혹시 환경 변수 이름이 틀려서 api_key라는 변수에 아무런 값이 담기지 않았다면 ‘None’을 출력합니다.
1 2 3 4 5 6 7 |
import os api_key = os.getenv('Binan_API_KEY') api_secret = os.getenv('Binan_SECRET_KEY') print(api_key) print(api_secret) |
마치며 …
바이낸스 API는 API Key를 통해 인증합니다. 인증을 마치고 나면, 파이썬 코드로 바이낸스에서 계좌정보를 가져오는 것은 물론이고, 코인을 매매할 수도 있습니다. 편리한 만큼 API 보안에도 신경써야 합니다. 이번 포스팅에서는 바이낸스 API 보안을 유지할 수 있는 키 관리 방법에 대해 알아보았습니다. 이 포스팅에서 제시한 방법은 바이낸스 뿐만 아니라 API key로 인증하는 모든 곳에 적용 가능합니다. 핵심은 API Key를 코드 상에 저장하지 말고, 시스템 환경 변수로 저장한 후 사용할 것을 추전한다는 것입니다. 파이썬의 os 내장 모듈의 os.getenv도 기억해 주시기 바랍니다.
함께 참고하면 더 좋은 글 :
▶ 바이낸스 API 보안을 위한 환경 변수 설정 : 윈도우 10
▶ 바이낸스 코인거래소 API Key로 계좌에 접속하는 파이썬 프로그래밍
▶ 파이썬 바이낸스 API로 시계열 데이터를 가져오는 파이썬 프로그래밍
▶ 업비트 REST API를 이용한 비트코인 가격 추출 파이썬 프로그래밍
▶ 파이썬 IDE 설정. 비주얼 스튜디오 코드(Visual Studio Code, VS code)
참고자료
DaleSeo, 파이썬에서 환경 변수 읽어오기 (os.environ)