그 땐 IT활동했지/그 땐 영일영 근무했지

[010/Django] secret.json | API KEY 숨기기

루이란 2022. 4. 22. 12:51
728x90

 

1.  문제상황


2022.04.19 - [그 땐 IT활동했지/그 땐 영일영 근무했지] - [010/API] Naver API | 블로그, 카페 글 크롤링 해오기

이전 포스팅을 보면 Naver API KEY를 view에서 그냥 변수에 할당해 사용했다. 하지만 API KEY를 이렇게 관리하면 안 된다! 다른 사람이 악의적으로 이용할 수도 있기 때문이다. 그러므로 이러한 현상을 막기 위해 API KEY를 secret.json으로 관리하는 법을 알아보자!

 

2.  API KEY 관리


secret.json 파일 만들기


👉🏻먼저 secret.json 파일을 만든다.

{
  "Naver_id": "본인 API KEY",
  "Naver_secret": "본인 SECRET KEY"
}

👉🏻이러한 형식으로 API KEY를 적어준다.

 

settings.py에 불러오기


import os
import json
from django.core.exceptions import ImproperlyConfigured

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

secret_file = os.path.join(BASE_DIR, 'secrets.json')

with open(secret_file) as f:
    secrets = json.loads(f.read())

def get_secret(setting, secrets=secrets):
    try:
        return secrets[setting]
    except KeyError:
        error_msg = "Set the {} environment variable".format(setting)
        raise ImproperlyConfigured(error_msg)

👉🏻기존에 있던 SECRET_KEY를 get_secret 함수로 대체하면 secret.json에서 API KEY를 불러올 준비는 끝

NAVER_API = get_secret("Naver_id")

NAVER_SECRET = get_secret("Naver_secret")

👉🏻get_secret의 인자로 secret.json에서 설정했던 변수명을 넣어주어 API KEY와 SECRET KEY를 얻는다.

 

view에서 사용하기


from django.conf import settings

👉🏻먼저 settings를 import해준다.

client_id = settings.NAVER_API
client_secret = settings.NAVER_SECRET

👉🏻이전 코드를 다음과 같이 바꿔준다.

 

secret.json 파일 숨겨주기


👉🏻이렇게 기껏 비밀스럽게 만들어두고 github에 그냥 올려버리면 안되겠죠? .gitignore파일에 secret.json을 추가해 마무리합니다!

 

 

728x90