반응형
❤️🔥TIL : Today I Learned❤️🔥
그날그날 내가 공부한 것을 정리하는 것
내일배움캠프 AI트랙 44day
오늘 배운 내용
Django-environ을 통해서 Secret Key 관리
문제발생
API를 사용하면 보통 client_id 와 client_secret_key 값을 같이 넣어줘야 API가 동작하는 경우들이 많다.
스포티파이API를 사용하려고 하는데 스포티파이에서도 그러한 API키를 넣어줘야했다. 하지만 넣는 방법을 몰라서 한참이나 헤매게 되었는데 알고보니 환경변수로 처리해줘야하는 문제였다.
import spotipy
import pandas as pd
from spotipy.oauth2 import SpotifyClientCredentials
spotify = spotipy.Spotify(client_credentials_manager=SpotifyClientCredentials())
spotipy.oauth2.SpotifyOauthError: No client_id. Pass it or set a SPOTIPY_CLIENT_ID environment variable.
해결방법
API키는 보안과 직결되는 문제이기 때문에 사실상 유출되지 않게 보안처리를 해서 관리하는게 맞지만 지금껏 django를 하면서 이러한 시크릿키를 관리하지를 않았다.
하지만 이런 시크릿키는 세션, 메시지, 토큰, 암호화된 서명 등에 사용되므로 외부로 유출되지 않게 잘 관리해야 합니다. 이번에 spotify 사용하면서 Secret key 관리하는 법을 익히게 되었다.
환경변수 설정
환경 변수란 운영 체제(OS)에서 프로세스를 실행하기 위해 참조하는 변수를 의미한다. 즉, 터미널을 통해서 변수를 입력해주면 django를 실행할때 참조하는 방식이다.
export SPOTIPY_CLIENT_ID='dcxxxxxxxxxxxxxxxxxxxxxxxxxxx'
export SPOTIPY_CLIENT_SECRET='84xxxxxxxxxxxxxxxxxxxxxxxxxxx'
로컬 파일 생성
- django-environ 설치
pip install django-environ
2. 환경변수를 관리할 .env 파일생성 - .gitignore를 통해서 관리되어서 보안 ok
touch .env
3. .env 파일 내용 채우기 변수와 값 사이에 반드시 공백이 없게 넣어야 한다
SECRET_KEY = ''
DEBUG=True
SPOTIPY_CLIENT_ID='dcfb14c870344e1a9de9e60d68108d57'
SPOTIPY_CLIENT_SECRET='847faf8d25ee41cda36de2ac5e6b64f6'
4. env 사용하기
# import
import os
import environ
BASE_DIR = Path(__file__).resolve().parent.parent
# 각 호출자가 기본 매개변수를 전달할 필요가 없도록 환경 변수의 체계 기반 조회를 제공합니다.
environ.Env(DEBUG=(bool, True))
environ.Env.read_env(
env_file=os.path.join(BASE_DIR, '.env')
)
# 환경변수 파일 읽기
environ.Env.read_env(
env_file=os.path.join(BASE_DIR, '.env')
)
# 환경변수 사용
SECRET_KEY = env('SECRET_KEY')
DEBUG = env('DEBUG')
반응형