본문 바로가기
▶개발/Python&Django

파이썬 ini파일로 설정값 관리하기(ini파일 gitignore)

by 브라더 준 2018. 8. 2.

파이썬 외부파일로 설정값 관리하기

(ini파일 gitignore하여 보안관리, python configparser)


- 실행환경 : MacOS


파이썬 장고프로젝트로 서버와 데이터베이스를 구축하고 있는 가운데 MySQL을 사용하기 위해서는 데이터베이스 settings 정보가 코드에 여실히 드러나게 된다. 패스워드등의 정보가 그대로 드러난 이 코드를 형상관리하기 위해 그대로 git repository에 push를 했다가는 낭패를 볼 수 있다. 


그래서 코드에서 숨기고 싶은 부분을 ini파일에 기입하고, 기입된 정보를 'configparser' 패키지를 이용해 읽어올 수 있다. 그런 다음 ini파일을 .gitignore에 설정해둔다. 그렇게 되면 나를 제외한 타인이 DB 셋팅 정보를 들여다볼 수 없게 된다.

(파이썬 3.0.0 위 버전에서만 configparser가 적용된다.)


차근차근 순서대로 따라가보자.




1. pip를 통해서 configparser 설치하기

- (pip 다운로드는 본 블로그의 http://markim94.tistory.com/81 에서 참고)

아래의 코드를 터미널 창에 입력하여 설치한다. 터미널창에 python --version을 했을때 3.0.0이상의 버전이 나오는지 확인한다. 그렇지 않다면 pip3로 대체하여 입력해야한다.

$ pip install configparser




2. 해당되는 프로젝트 파일에 import 하기

import configparser

config = configparser.ConfigParser()
config.read('읽고자하는 ini파일 이름.ini')

숨길 정보가 있는 프로젝트 파일에 configparser를 import하고, 설정값을 저장시킬 ini파일을 읽어온다.




3. ini 파일 생성과 숨길 정보 config화 하기


파이참이나 기타 개발툴을 통해 .ini 파일을 생성한다. ini파일에 숨길 정보들을 기입한다.


읽고자하는 ini파일 이름.ini

[DBSETTINGS]
DB_NAME=database
USER=user
PASSWORD=db_pwd
HOST=localhost
PORT=portnumber


그리고 숨기고자하는 코드가 있는 위치에는 아래와 같이 config['ini 파일이름']['ini 파일에 기입된 키워드'] 형태로 코딩을 해준다.


settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': config['DBSETTINGS']['DB_NAME'],
        'USER': config['DBSETTINGS']['USER'],
        'PASSWORD': config['DBSETTINGS']['PASSWORD'],
        'HOST': config['DBSETTINGS']['HOST'],
        'PORT': config['DBSETTINGS']['PORT'],
    }
}


이렇게 되면 settings.py 파일 내 DATABASES의 'NAME'속성은 DBSETTINGS라는 이름을 가진 ini 파일의 DB_NAME 정보로 인식된다. 즉, NAME : ini파일(DB_NAME이 갖고 있는 값)의 형태를 갖는다. 


이제 이 ini파일을 .gitignore에 설정하면 깃허브에 푸시를 진행해도 보안정보가 입력된 ini파일은 타인이 볼 수 없게 된다.






4. .gitignore 파일 생성


터미널에 아래의 명령어를 통해 .gitignore 파일을 생성, 진입한다. 생성하고 추후에 수정하고자 하면 vi .gitignore로 진입이 가능하다. 또한 .gitignore파일은 .git이 있는 위치에 만들어주어야 한다. 

vim .gitignore

.gitignore 터미널 내에 ignore할 폴더나 확장자, 파일들을 지정이 가능하다. 그러나 해당 폼에 대해서 능숙하지 않다면 https://www.gitignore.io/, 위 사이트를 통해 django의 gitignore의 대략적인 형태를 쉽게 카피할 수 있다.


그리고 아래의 이미지와 같이 .gitignore에 /숨길ini파일이름.ini 을 입력하거나 *.ini 로 ini 형식을 갖는 파일 전부를 ignore하면 된다. 이렇게 설정하고 git add, commit, push를 진행하면 된다. 






5. 깃허브 레포지토리 확인


터미널에 존재했던 settings.ini가 레포지토리에서 보이지 않는다. 정상적으로 git ignore된 것이다.




보안 설정이 필요한 코드부분은 철저하게 .gitignore하여야 한다. 서버 key라도 푸시되는 순간 미친 카드고지서가 날라 올 수 있으니 항상 주의해야한다.

반응형