장고 secrets.json 작성

JungYun K·2023년 11월 6일

Django

목록 보기
2/2

이번 글은 장고 secrets.json에 대한 글입니다.

secrets.json은 장고 프로젝트를 진행할 때 API KEY나
장고 Secret Key를 github에 올리면 보안상 취약하기 때문에 숨기기 위해 작성합니다.

secrets.json을 작성하고 gitignore에 secrets.json을 적어서 해당정보를 push할 때 github에 올리지 않도록 하는 것입니다.

작성하는 방법은 아래와 같습니다.

{
	"SECRET_KEY": "secret key 작성",
	"API_KEY": "api키 작성"
}

제 옛날을 생각해서 말씀드리자면 " " 안에 비밀키를 넣어야합니다. 어떤 게시물들(secrets.json 작성 이외의)을 보면 가끔 ""를 빼고 적어야하는데 저걸 적어서 헷갈린적이 있어서 적습니다.

API_KEY 같은 경우는 이제 OPEN API에서 발급받은 API 키 같은 것들을 적으면 됩니다. API 키가 노출되면 사용이 막히기 때문에 조심해야 합니다. (이 경우 OPEN AI API키는 그랬던 것 같은데 다른 API 키는 노출 된 경험이 없어서 잘 모르겠습니다.)

이제 이 작성한 SECRET_KEY와 API_KEY를 갖고오는 법은 아래와 같습니다. 해당 코드를 settings.py에 작성하면 됩니다.

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

secret_file = os.path.join(BASE_DIR, 'secrets.json')  
# secrets.json 파일 위치를 명시
with open(secret_file) as f:
    secrets = json.loads(f.read())
    
def get_secret(setting):
    """비밀 변수를 가져오거나 명시적 예외를 반환한다."""
    try:
        return secrets[setting]
    except KeyError:
        error_msg = "Set the {} environment variable".format(setting)
        raise ImproperlyConfigured(error_msg)


SECRET_KEY = get_secret("SECRET_KEY")
API_KEY = get_secret("API_KEY")

secrets.json 위치는 아래 폴더 구조를 확인하시면 됩니다.

📦project
┣ 📂project
┃ ┣ 📜asgi.py
┃ ┣ 📜settings.py
┃ ┣ 📜urls.py
┃ ┣ 📜wsgi.py
┃ ┗ 📜init.py
┣ 📜manage.py
┗ 📜secrets.json

마지막으로 만약 secretkey가 이미 노출된 경우는 생성해주는 곳도 있습니다. 아래 사이트에 들어가면 키를 다시 만들 수 있습니다.

https://djecrety.ir/

DB 정보를 작성하거나 API KEY를 views.py에서 사용하는 법은 다음 게시글에 작성하겠습니다.

profile
매일 발전하고 싶은 개발자가 꿈인 사람

0개의 댓글