[Other skills]

dotenv를 이용한 API키 숨기기

indongspace 2024. 2. 2. 01:46

 

공공데이터를 활용할 때 개인 인증키를 발급받아 데이터에 접근하게 되는데, 이 인증키는 비밀번호처럼 외부에 노출되어서는 안되는 정보이다. 하지만 프로젝트 파일을 깃허브에 Public으로 업로드하거나,  대시보드를 만들 때 내가 작성한 코드 안에 직접적으로 이 API키가 입력되어있으면 노출될 수 있다. python-dotenv를 이용하여 이 API키를 숨기는 방법을 알아보자. (시나리오 : 프로젝트 제작 과정 중에 있다.)

 

 

1. GitHub에서 프로젝트 레포 생성

 

 

프로젝트를 진행할 레포를 생성한다. 여기에서 .gitignore파일을 꼭 생성해야 한다!

나의 Repository name : 'temprepo-dotenv-practice-' 으로 설정했다.

 

 

2. 로컬에 레포의 클론 폴더 생성

 

 

터미널을 열어 1.에서 생성한 레포의 주소를 복사해 git clone 뒤에 붙여넣는다. (.git도 뒤에 붙여준다.) 

나의 환경설정 : 바탕화면 내 'multicampus(데이터분석)' / '티스토리 작성용' / 'dotenv를 이용한 API키 숨기기'

실행하면, 

 

 

'temprepo-dotenv-practice-' 라는 폴더 생성, .gitignore 파일도 안에 들어있음을 확인 할 수 있다.

 

 

3. Streamlit 추가

gitignore 파일 실행한다.

 

 

맨 아래에 Streamlit을 추가해준다. (프로젝트 중 Streamlit으로 대시보드를 만드는 과정도 있다고 가정한 상황이기 때문)

 

 

 

> git add .gitignore 

> git commit -m "UPDATED"

> git push 

를 이용해 업데이트해준다.

 

4. 가상환경 구축

 

 

temprepo-dotenv-practice-에서 vs code를 실행하고, 터미널(Git Bash)을 열어서 가상환경을 만들어준다.
virtualenv venv로 venv 폴더가 만들어지고, source 이하로 가상환경으로 들어온다. 아래에 (venv)라고 뜨면 정상적으로 완료된 것이다.

 

 

5. 프로젝트 진행 (가상시나리오)

 

 

- temprepo-dotenv-practice- 내에 ch01폴더를 만들었다고 가정하자.

  ch01 폴더(임의) 내에 data 폴더를 생성해주자. (데이터 가공 후 별도 저장 용도, ETL)

- 프로젝트 폴더( TEMPREPO-DOTENV-PRACTICE-) 내에 .env 파일을 생성하자. (환경변수)

- 같은 경로에 data_collection.py 파일(프로젝트 파일)을 생성하자. (프로젝트 진행용)

+ requirements.txt를 생성하여 프로젝트에 필요한 라이브러리를 추가하자. 

 

 

프로젝트 코딩 (가상 시나리오)

- requirements.txt에 있는 라이브러리 설치
- etc.

 

 

6. dotenv 라이브러리 설치

 

 

pip install python-dotenv로 위 라이브러리를 설치한다.

 

 

7. .env 파일에 API Key 정리

 

 

 

위와 같이 .env 파일에 각종 API Key를 정리해둔다.
이 파일은 로컬에서만 사용되며, GitHub에는 올라가지 않는다. (.gitignore)


※ 보통 변수명을 SERVICE_KEY로 저장해 놓는데, 필자는 캡처 후 어느정도 작성&과정이 진행된 후 R -> I 로 오타가 난 것을 알아차렸다. 이 게시글에서는 I로 진행이 될 것이다.

 

 

8. .env 파일 활성화하여 API Key 불러오기

# -*- coding:utf-8 -*-
import requests
import json
import pandas as pd 
from dotenv import load_dotenv
import os

load_dotenv() # .env 파일 활성화
SEIVICE_KEY = os.getenv('SEIVICE_KEY')
print(SEIVICE_KEY)

 

.env파일에 넣어둔 API 키가 잘 불러와졌는지 확인한다.


load_dotenv(): .env 파일 활성화
os.getenv('~'): 활성화된 .env파일에서 ~라는 이름의 API키 가져오기

 

 

터미널에서 python data_collection.py로 파일을 실행해보면,  위와 같이 .env에 저장해둔 API키가 잘 출력된다.

 

 

9. 깃허브 변경사항 업데이트 

> git add .

> git commit -m "~"

> git push

로 변경사항을 업데이트해준다.

 

 

업데이트 후 깃허브에서 인증키가 보이지 않는지 꼭 확인해보자. (보이면 실패)