안녕하세요. 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 [IT재직자] 개강임박!! 올해 마지막 무료 및 국비지원 교육 (JAVA, 리눅스 기초/고급 , CCNA, CCIE 등) 코난(김대우) 2022.12.02 115
Notice 2022년 11월 SQLER의 강좌 업데이트 리스트 코난(김대우) 2022.12.01 24
Notice 2022 공개SW 페스티벌 - Open Up 코난(김대우) 2022.12.01 15
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2021년 1월 업데이트) 코난(김대우) 2021.01.01 1068
103 Python 중급 강좌 - 9. 비동기 작업(Asynchronous operations): asyncio 코난(김대우) 2021.01.03 522
102 Python 중급 강좌 - 8. 외부 리소스 관리(Managing external resources): with 코난(김대우) 2021.01.03 259
101 Python 중급 강좌 - 7. 파일작업(File read/write) file 코난(김대우) 2021.01.03 829
100 Python 중급 강좌 - 6. 파일시스템(File system) 관리 코난(김대우) 2021.01.03 358
99 Python 중급 강좌 - 5. 다중상속(Mixins - multiple inheritance) 코난(김대우) 2021.01.03 228
98 Python 중급 강좌 - 4. 상속(Inheritance) 코난(김대우) 2021.01.03 145
97 Python 중급 강좌 - 3. 클래스(Class) 코난(김대우) 2021.01.03 185
96 Python 중급 강좌 - 2. 람다(Lamda) file 코난(김대우) 2021.01.03 240
95 Python 중급 강좌 - 1. Python 스타일 가이드: 서식(Formatting)과 린팅(Linting) file 코난(김대우) 2021.01.02 393
» Python 초급 강좌 목차 - 19. 코드에서 중요한 키(패드워드) 관리 - dotenv 코난(김대우) 2021.01.02 405
93 Python 초급 강좌 목차 - 18. 데코레이터(Decorators) 코난(김대우) 2021.01.02 138
92 Python 초급 강좌 목차 - 17. JSON 데이터 처리 file 코난(김대우) 2021.01.02 426
91 Python 초급 강좌 목차 - 16. 외부 웹서비스 API 호출 file 코난(김대우) 2021.01.02 471
90 Python 초급 강좌 목차 - 15. 패키지(Package): import, pip 코난(김대우) 2021.01.02 138
89 Python 초급 강좌 목차 - 14. 함수 파라미터(Parameter) 코난(김대우) 2021.01.02 136
88 Python 초급 강좌 목차 - 13. 함수(Function) 코난(김대우) 2021.01.02 159
87 Python 초급 강좌 목차 - 12. 반복문(Loop): for, while 코난(김대우) 2021.01.02 118
86 Python 초급 강좌 목차 - 11. 컬렉션(Collection): list, array, dictionary file 코난(김대우) 2021.01.02 144
85 Python 초급 강좌 목차 - 10. 조건문(Condition):3 복잡한 조건 처리 코난(김대우) 2021.01.01 134
84 Python 초급 강좌 목차 - 9. 조건문(Condition):2 다중 조건 처리 코난(김대우) 2021.01.01 150





XE Login

테스트 팝업
Close