2023년 6월 업데이트
안녕하세요. SQLER의 코난 김대우입니다.
이번 강좌에서는, Python 초급 강좌 목차 - 19. 코드에서 중요한 키(패스워드) 관리를 진행토록 하겠습니다.
SQLER에서 진행되는 전체 Python / 머신러닝 강좌 목록
코드를 실행하기 위해서는, vscode에서 새로운 파일을 만들고 실행하시면 됩니다.
예를 들어, 19_keys.py를 생성하고 코드를 실행합니다.
TL;DR
중요한 키 값(패스워드)을 코드에 저장하지 않고 관리해야 합니다. dotenv와 같은 패키지를 사용하여 환경변수를 관리하고, 클라우드 서비스를 이용할 경우 전체 암호화 기술을 활용해야 합니다. 환경변수를 활용하여 중요한 정보를 애플리케이션 외부에서 관리하는 것이 좋으며, python-dotenv 패키지를 사용하여 환경변수를 관리할 수 있습니다.
Python 초급 강좌 목차 - 19. 코드에서 중요한 키(패스워드) 관리 - dotenv
Python으로 개발하면서 중요한 키 값(패스워드 값)을 관리해야 할 경우가 있습니다.
우리가 전에 살펴본 Cognitive 서비스의 API 키 같은 정보입니다.
- 중요한 키 값(패스워드)을 절대 코드에 저장하지 마십시오
- 키 값(패스워드)이 포함된 어떤 종류의 파일도 git 저장소에 올리거나 공유하지 마십시오(기록이 남습니다)
- dotenv와 같은 패키지를 이용해 관리하십시오.
- 클라우드 서비스를 이용할 경우, 전체 암호화 기술을 이용하세요.(예를 들어, Azure KeyVault)
모든 종류의 민감한 정보를 다루는 데이터를 처리할 경우에는 극도로 주의해야 합니다.
이런 중요한 키 값들은 애플리케이션 외부에서 관리하는 것이 좋습니다.
환경변수 활용
이런 경우 환경변수(environment variable)를 활용할 것을 권장해 드립니다.
환경 변수는 시스템에서 제공하는 환경변수와 자신이 직접 선언하고 사용 가능한 환경변수가 있습니다.
이런 정보를 환경변수로 만들고 애플리케이션에서는 가져가다 쓰는 형태로만 이용해야 합니다.
python-dotenv 설치
python-dotenv는 이러한 환경변수를 관리할 수 있는 훌륭한 python 패키지입니다.
다음과 같이, pip 명령을 이용해 설치합니다.
pip install python-dotenv
환경변수를 관리할 파일 생성
예를 들어, 디렉토리에 ".env" 파일을 생성하고 다음 내용을 넣습니다.
# .env 파일을 만들고 이 파일에 추가합니다. DATABASE=DB_SERVER_CONNECTION_STRING
Python 코드에서 다음을 실행합니다.
import os from dotenv import load_dotenv load_dotenv() database = os.getenv('DATABASE') print(database)
이렇게, 개발자 로컬 머신의 .env 파일에 정보를 처리할 수 있습니다.
중요한 부분으로, .env 파일은 git등에 의해 public github 저장소 등에 절대 올라가면 안 됩니다.
.gitignore 파일에 .env 파일을 추가해 ignore 되도록(git과 같은 SCM에 올라가지 않도록) 구성해야 합니다.
☑️ 챗GPT 활용: git의 gitignore에 대해서 알려줘
☑️ 챗GPT 활용: git에 대해서 알려줘
서버 측에서 배포/실행될 경우, 서버에는 .env가 없습니다.
자신의 개발 환경과 서버의 배포/실행 환경은 다릅니다. 서버에서는 구성관리나 서버 측 환경변수 처리 루틴을 만들고 이곳에서 이런 중요 정보를 관리하거나, DevOps 등에 의해, 배포 단계에서 자동으로 환경변수를 물고 배포되도록 구성할 수 있습니다.
대부분의 클라우드 서비스 벤더는 이런 환경변수 기능을 관리 기능에서 제공합니다.
python dotenv 같은 패키지를 이용해 중요한 키값을 관리하고, 이런 민감한 정보를 절대 코드에 넣어서 공유하지 마십시오.
수고하셨습니다.
파이썬 강좌 책 구매
강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다.
책구매 링크: 챗GPT와 함께하는 파이썬 & 머신러닝 코딩 마스터
참고링크
개발자 커뮤니티 SQLER.com - Python 무료 강좌 - 기초, 중급, 머신러닝