안녕하세요. 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 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 1240
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2021년 1월 업데이트) 코난(김대우) 2021.01.01 1160
96 Python 중급 강좌 - 2. 람다(Lamda) file 코난(김대우) 2021.01.03 267
95 Python 중급 강좌 - 1. Python 스타일 가이드: 서식(Formatting)과 린팅(Linting) file 코난(김대우) 2021.01.02 480
» Python 초급 강좌 목차 - 19. 코드에서 중요한 키(패드워드) 관리 - dotenv 코난(김대우) 2021.01.02 491
93 Python 초급 강좌 목차 - 18. 데코레이터(Decorators) 코난(김대우) 2021.01.02 174
92 Python 초급 강좌 목차 - 17. JSON 데이터 처리 file 코난(김대우) 2021.01.02 486
91 Python 초급 강좌 목차 - 16. 외부 웹서비스 API 호출 file 코난(김대우) 2021.01.02 561
90 Python 초급 강좌 목차 - 15. 패키지(Package): import, pip 코난(김대우) 2021.01.02 167
89 Python 초급 강좌 목차 - 14. 함수 파라미터(Parameter) 코난(김대우) 2021.01.02 163
88 Python 초급 강좌 목차 - 13. 함수(Function) 코난(김대우) 2021.01.02 197
87 Python 초급 강좌 목차 - 12. 반복문(Loop): for, while 코난(김대우) 2021.01.02 137
86 Python 초급 강좌 목차 - 11. 컬렉션(Collection): list, array, dictionary file 코난(김대우) 2021.01.02 177
85 Python 초급 강좌 목차 - 10. 조건문(Condition):3 복잡한 조건 처리 코난(김대우) 2021.01.01 152
84 Python 초급 강좌 목차 - 9. 조건문(Condition):2 다중 조건 처리 코난(김대우) 2021.01.01 175
83 Python 초급 강좌 목차 - 8. 조건문(Condition):1 (IF-ELSE) 코난(김대우) 2021.01.01 158
82 Python 초급 강좌 목차 - 7. 에러 핸들링(Error Handling) file 코난(김대우) 2021.01.01 178
81 Python 초급 강좌 목차 - 6. 날짜와 시간 데이터 처리 코난(김대우) 2021.01.01 198
80 Python 초급 강좌 목차 - 5. 숫자(Numeric) 데이터 처리 코난(김대우) 2021.01.01 146
79 Python 초급 강좌 목차 - 4. 문자열(String) 데이터 처리 코난(김대우) 2021.01.01 194
78 Python 초급 강좌 목차 - 3. 주석(Comments) 코난(김대우) 2021.01.01 168
77 Python 초급 강좌 목차 - 2. Print 구문 file 코난(김대우) 2021.01.01 280





XE Login