[python] python-dotenv를 사용하여 데이터베이스 비밀번호 관리하기

데이터베이스 비밀번호는 소스 코드에 직접 하드 코딩하는 것은 안전하지 않습니다. 비밀번호를 노출시킬 수 있는 위험이 있으며, 코드를 공유할 때 개인 정보가 함께 공개될 수 있습니다. 이러한 문제를 해결하기 위해 python-dotenv 패키지를 사용하여 데이터베이스 비밀번호를 관리하는 방법을 알아보겠습니다.

1. python-dotenv 패키지 설치하기

먼저, python-dotenv 패키지를 설치해야 합니다. 아래의 명령어를 사용하여 패키지를 설치할 수 있습니다.

pip install python-dotenv

2. 환경 변수 파일 생성하기

다음으로, 데이터베이스 비밀번호를 저장할 환경 변수 파일(.env)을 생성해야 합니다. 파일 이름은 .env로 지정하며, 이 파일은 소스 코드와 분리하여 관리할 수 있도록 합니다.

.env 파일을 다음과 같이 작성합니다.

DB_PASSWORD=mysecretpassword

위의 예시에서는 DB_PASSWORD라는 환경 변수에 비밀번호를 저장하고 있습니다.

참고: .env 파일에 저장하는 변수명은 자유롭게 선택할 수 있습니다. 필요한 환경 변수를 추가하고, 해당 변수에 값을 설정해야 합니다.

3. 소스 코드에서 환경 변수 사용하기

이제, 소스 코드에서 .env 파일에 저장된 환경 변수를 사용할 수 있습니다. python-dotenv 패키지를 사용하여 .env 파일을 로드하고, 환경 변수를 읽어올 수 있습니다.

from dotenv import load_dotenv, find_dotenv
import os

load_dotenv(find_dotenv())

db_password = os.getenv("DB_PASSWORD")

위의 예시 코드에서는 dotenv 패키지에서 load_dotenv() 함수와 find_dotenv() 함수를 사용하여 .env 파일을 로드합니다. 그리고 os 모듈을 사용하여 getenv() 함수를 통해 환경 변수의 값을 읽어옵니다.

4. 데이터베이스 비밀번호 사용하기

이제 .env 파일에 저장된 데이터베이스 비밀번호를 실제로 사용할 수 있습니다. 예를 들어, Flask 애플리케이션에서 데이터베이스에 연결하는 코드를 작성할 때, 비밀번호를 다음과 같이 사용할 수 있습니다.

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from dotenv import load_dotenv, find_dotenv
import os

load_dotenv(find_dotenv())

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = f"mysql://user:{os.getenv('DB_PASSWORD')}@localhost/mydatabase"
db = SQLAlchemy(app)

위의 코드에서는 SQLALCHEMY_DATABASE_URI에 데이터베이스 연결 정보를 작성할 때, os.getenv() 함수를 사용하여 .env 파일에 저장된 환경 변수인 DB_PASSWORD를 가져와서 사용하고 있습니다.

이렇게 하면, 데이터베이스 비밀번호를 소스 코드에 하드 코딩하지 않아도 되며, .env 파일을 통해 비밀번호를 관리할 수 있습니다.

결론

python-dotenv 패키지를 사용하면 데이터베이스 비밀번호와 같은 개인 정보를 소스 코드에서 분리하여 관리할 수 있습니다. .env 파일을 사용하여 환경 변수를 설정하고, os.getenv() 함수를 사용하여 소스 코드에서 해당 변수를 사용하면 됩니다. 이를 통해 보안성을 높이고 코드를 공유하기 쉽게 만들 수 있습니다.

참고: .env 파일에는 개인 정보를 저장하기 때문에, 이 파일은 보안에 유의해야 합니다. 반드시 .gitignore 파일에 .env를 포함하여 Git 저장소에 업로드되지 않게 해야 합니다.