파이썬 & 오픈소스 개발 Tip과 강좌

이곳은 파이썬과 여러 오픈소스 기반 프레임워크 관련 Tip과 강좌 게시판 입니다. 관련 개발을 진행하면서 알아내신 Tip이나 강좌와 새로운 소식을 적어 주시면 다른 공부하는 분들에게 큰 도움이 됩니다. 감사합니다. SQLER.com은 개발자와 IT전문가의 지식 나눔을 실천하기 위해 노력하고 있습니다.

안녕하세요. SQLER의 코난 김대우입니다. 

이번 강좌에서는, Python 초급 강좌 목차 - 19. 코드에서 중요한 키(패드워드) 관리를 진행토록 하겠습니다.

 

SQLER에서 진행되는 전체 Python / 머신러닝 강좌 목록

 

코드를 실행하기 위해서는, vscode에서 새로운 파일을 만들고 실행하시면 됩니다.

예를 들어, 19_keys.py를 생성하고 코드를 실행합니다.

 

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에 올라가지 않도록) 구성해야 합니다.

 

서버측에서 배포/실행될 경우, 서버에는 .env가 없습니다.

자신의 개발 환경과 서버의 배포/실행 환경은 다릅니다. 서버에서는 구성관리나 서버측 환경변수 처리 루틴을 만들고 이곳에서 이런 중요 정보를 관리하거나, DevOps 등에 의해, 배포 단계에서 자동으로 환경변수를 물고 배포되도록 구성할 수 있습니다. 

대부분의 클라우드 서비스 벤더는 이런 환경변수 기능을 관리 기능에서 제공합니다. 

 

python dotenv 같은 패키지를 이용해 중요한 키값을 관리 하고, 이런 민감한 정보를 절대 코드에 넣어서 공유하지 마십시오.

수고하셨습니다.

 

참고링크 

개발자 커뮤니티 SQLER.com - Python 무료 강좌 - 기초, 중급, 머신러닝

theskumar/python-dotenv: Get and set values in your .env file in local and production servers. (github.com)

Key Vault | Microsoft Azure

 

No. Subject Author Date Views
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2021년 1월 업데이트) 코난(김대우) 2021.01.01 549
109 embedded SQL - GlueSQL, rust 기반 오픈소스 프로젝트 file 코난(김대우) 2021.10.22 8
108 대규모 머신러닝 프로젝트 Serving에 사용되는 Python WAS, ASGI - uvicorn file 코난(김대우) 2021.10.06 41
107 Apache Arrow 리뷰 file 코난(김대우) 2021.10.05 29
106 autopep8을 이용한 python 린트(linting) 구현 코난(김대우) 2021.09.15 38
105 Python에서 환경변수(environment variable) 처리 코난(김대우) 2021.09.15 31
104 Python에서 random 문자열이나 숫자 가져오는 방법 코난(김대우) 2021.09.15 35
103 Python 중급 강좌 - 9. 비동기 작업(Asynchronous operations): asyncio 코난(김대우) 2021.01.03 326
102 Python 중급 강좌 - 8. 외부 리소스 관리(Managing external resources): with 코난(김대우) 2021.01.03 180
101 Python 중급 강좌 - 7. 파일작업(File read/write) file 코난(김대우) 2021.01.03 206
100 Python 중급 강좌 - 6. 파일시스템(File system) 관리 코난(김대우) 2021.01.03 215
99 Python 중급 강좌 - 5. 다중상속(Mixins - multiple inheritance) 코난(김대우) 2021.01.03 116
98 Python 중급 강좌 - 4. 상속(Inheritance) 코난(김대우) 2021.01.03 63
97 Python 중급 강좌 - 3. 클래스(Class) 코난(김대우) 2021.01.03 77
96 Python 중급 강좌 - 2. 람다(Lamda) file 코난(김대우) 2021.01.03 103
95 Python 중급 강좌 - 1. Python 스타일 가이드: 서식(Formatting)과 린팅(Linting) file 코난(김대우) 2021.01.02 141
» Python 초급 강좌 목차 - 19. 코드에서 중요한 키(패드워드) 관리 - dotenv 코난(김대우) 2021.01.02 98
93 Python 초급 강좌 목차 - 18. 데코레이터(Decorators) 코난(김대우) 2021.01.02 72
92 Python 초급 강좌 목차 - 17. JSON 데이터 처리 file 코난(김대우) 2021.01.02 165
91 Python 초급 강좌 목차 - 16. 외부 웹서비스 API 호출 file 코난(김대우) 2021.01.02 182
90 Python 초급 강좌 목차 - 15. 패키지(Package): import, pip 코난(김대우) 2021.01.02 67





XE Login