Python

환경 변수 설정으로 API 키 숨기기

jsys 2024. 2. 1. 14:59

 

환경변수 이용한 API 크롤링을 할 때, 깃허브 등 온라인에 코드 업로드 시 API 인증키에 대한 보안을 유지하기 위해 환경 변수를 설정해야 한다. (이 외에 DB username, password 등 민감한 정보를 사용할 때 설정함)

 

 

 

*** 그 전에 .env와 .streamlit을 이용해야 하므로  .gitignore에 해당 폴더 등을 사전에 미리 정의해서 업로드 한 후 진행한다.(깃허브에 커밋되지 않게 하는 것)

>> 위와 같이 입력해준다.(없는 것만 작성하면 됨)

 

 

 

git add .gitignore

>> 이후 git commit & push하면 된다.

 

 

 

 

 

 

1. python-dotenv 이용

>> 프로젝트 폴더 내에 .env 파일을 생성한다.

 

 

 

pip install python-dotenv

>> python-dotenv 라이브러리를 설치한다.

 

 

 

>> .env 파일에 사용할 인증키를 정리한다.

 

 

 

from dotenv import load_dotenv
import os

>> 라이브러리를 불러온다.

 

 

 

load_dotenv()  # .env 파일 활성화

SERVICE_KEY = os.getenv('SERVICE_KEY')  # SERVICE_KEY 값 가져오기
print(SERVICE_KEY)

>> print를 이용해 확인해보면 env 파일에 있는 값이 불러와졌음을 알 수 있음

 

 

 

 

 

 

2. Streamlit Secerets Management 활용

 

Streamlit 배포의 경우 .streamlit/secrets.toml 파일을 생성하여 환경 변수를 정의할 수 있고, 이 파일은 Streamlit 클라우드로 배포할 때 Streamlit에 의해 자동으로 처리되어 환경 변수로 사용됨

 

 

 

(1) Streamlit 앱에서 환경 변수 접근하기

>> Streamlit 접속 후 "New app"을 누르고 정보 입력하고 Advanced settings 누른다.

 

 

 

>> Secrets에 인증키를 입력하면 된다.

 

 

 

(2) secrets.toml 파일 생성

>> .streamlit 폴더에 secrets.toml 파일 생성하고 여기에 인증키를 입력한다.

 

 

# secrets.toml
[api_credentials]
SERVICE_KEY = "api_key"

 

 

 

import streamlit as st
st.write(st.secrets["api_credentials"]["SERVICE_KEY"])

>> api 키 값이 출력되는 것을 확인할 수 있다.