[Flask] secret_key키 관리 .gitignore 설정

Preview

플라스크는 세션관리 및 암호화를 위해 app.secret_key가 필수적으로 필요하다. 프로젝트 진행 후 코드 공유를 위해 깃헙(github.com)에 코드를 올릴 때 민감정보 노출을 막기 위해 .gitignore 설정이 필요하다.

이를 위해 xml로 키를 관리하는 방법과 .gitignore 파일 설정 방법을 정리한다.

keys.xml

xml파일은 데이터를 키(key)와 값(value)로 구분하여 구조화하여 전달하기 위해 만들어진 문서 형식이다. 메모장으로 열 수 있고 쉽게 편집, 열람이 가능하다.

파일의 첫 줄에 xml 파일임을 알린다.

<?xml version="1.0" encoding="utf-8"?>

사용할 키와 값을 입력한다. 여기서는 플라스크의 secret_key와 SQL DB 접속 패스워드를 예시로 한다.

<resources>
    <string name="SQL_PASS">PassWord</string>
    <string name="secret_key">Flask+Secret+Key+Here</string>
</resources>

작성을 완료했다면 파일로 저장한다(keys.xml).

.gitignore 설정하기

민감정보가 저장된 파일을 gitignore에 추가하여 커밋시 반영되지 않도록 설정한다.

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

#Auth Keys
keys.xml
config.py

# 으로 시작하는 것은 주석이고

와일드카드 *은 어떤 문자열이 와도 무시한다.

파일명.확장자를 정확하게 명시한 경우 해당 파일만을 무시한다.

!로 시작하는 패턴은 무시하지 않을 패턴이며 커밋시 반영된다.

 

이외에 Flask나 프로젝트에서 무시해야할 기본적인 .gitignore파일을 아래의 사이트에서 만들 수 있다.

https://www.toptal.com/developers/gitignore

 

gitignore.io

Create useful .gitignore files for your project

www.toptal.com

app.py에서 로드하기

키 값을 별도의 파일로 관리하고, gitignore에 등록하여 예외로 두었다면 python 실행 시 로드하여 사용할 수 있어야 한다.

xml파일을 파싱하여 값을 가져오기 위해 파이썬 내장 패키지인 XML 패키지를 사용한다.

import xml.etree.ElementTree as elemTree

#Parse XML
tree = elemTree.parse('keys.xml')
secretkey = tree.find('string[@name="secret_key"]').text

#DB connection
dbpass = tree.find('string[@name="SQL_PASS"]').text

app.config['SECRET_KEY'] = secretkey

app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'MYSQLUSER'
app.config['MYSQL_PASSWORD'] = dbpass
app.config['MYSQL_DB'] = 'SQLDB'

elemTree를 이용하여 파일에서 키값을 참조하고 app.config로 Flask 설정값으로 주었다. 이외에도 Open API를 사용하기 위한 토큰 관리에도 사용할 수 있다. 

반응형