본문 바로가기

항해99_10기/105일의 TIL & WIL

[20221116] .env로 민감정보 감추기 (language : python)

오늘 배운 것

  • dotenv 모듈
  • .gitignore

풀스택 미니 프로젝트를 진행하면서, mongodb 클라이언트 주소 값을 깃헙 public 레포에 올리면 깃헙에서 위험하다는 알림 메일이 온다.

이를 해결하기 위해 폭풍 검색을 통해 환경변수 설정이라는 개념이 있다는 것을 알게 되었다.

즉, 프로그램을 사용할때, 필요한 환경변수들을 설정할 수 있는 별도의 파일이다.

통칭 닷엔브(dotenv) 파일...

 

프로젝트 루트 디렉토리에 ".env" 파일을 생성하고,  만약 해당 프로젝트를 깃헙 퍼블릭 레포에 올려야 한다면, ".gitignore" 파일도 함께 생성한다. 

프로젝트 루트 디렉토리

.env 파일 리터럴

리터럴이랄 것이 없다 사실.

.env 파일에는 "key = value" 쌍으로 저장만 하면 된다.

# .env 파일

MONGODB_CLIENT = 몽고디비 클라이언트 주소
DB = project7

그리고 .gitignore에는 .env를 추가한다. => 이렇게 하면, 깃에서 .env 파일을 인식하지 못한다.

# .gitignore

.env

 

이렇게 하고, python 파일에서 해당 값을 받아오면 끝난다.

import os
from dotenv import dotenv_values
from pymongo import MongoClient

config = dotenv_values('.env')
atlas_url = config['MONGODB_CLIENT']

client = MongoClient(atlas_url)
db = client.db이름

dotenv 모듈을 사용하기 위해서는 python-dotenv 모듈을 먼저 설치해야 한다.

그리고, os, dotenv_values를 import해서 위의 코드와 같이 사용하면 된다.

 

- (시도) db이름도 처음에는 .env 파일에 저장해서 불러와봤는데, 타입이 string이라 그런지 빈 문자열만 돌아왔다.

config = dotenv_values('.env')
atlas_url = config['MONGODB_CLIENT']
db_name = config['DB']

client = MongoClient(atlas_url)
db = client.db_name

data = list(db.users.find({}, {'_id': False}))
print(data) #[]

=> 나중에 여유가 되면 왜 그런지 알아볼 것!