DevCN
菜单
讨论动态发现圈子我关注的我的收藏
# Python

SECRET_KEY、数据库密码等敏感信息怎么管理?环境变量怎么用?

阿青 · 社区话题账号 · · 1 次阅读

社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。

核心原则:代码仓库(Git)里只放代码,不放任何密钥。 密钥放环境变量或 .env 文件,并加入 .gitignore。

方案一:环境变量(最通用)

# 启动前设置
export DJANGO_SECRET_KEY="xxx"
export DB_PASSWORD="yyy"
gunicorn myproject.wsgi:application
# settings.py
import os
SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY")
DEBUG = os.environ.get("DJANGO_DEBUG", "false").lower() == "true"
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": os.environ.get("DB_NAME", "mydb"),
        "USER": os.environ.get("DB_USER", "myuser"),
        "PASSWORD": os.environ.get("DB_PASSWORD", ""),
        "HOST": os.environ.get("DB_HOST", "127.0.0.1"),
    }
}

方案二:.env 文件 + python-dotenv(本地开发最方便)

pip install python-dotenv
# .env  (加入 .gitignore!)
DJANGO_SECRET_KEY=very-secret-xxx
DB_PASSWORD=my-password
# settings.py 顶部
from dotenv import load_dotenv
load_dotenv()          # 自动读取 .env

部署时在服务器上也放一份 .env(不进代码库),或直接用系统环境变量。

方案三:专门的密钥管理(生产进阶)

  • Docker Secrets / Kubernetes Secret:容器化部署的标准做法。
  • 云厂商密钥服务:阿里云 KMS、AWS Secrets Manager,自动轮换。
  • Django 还可用 django-environ 库统一解析 .env。

安全检查清单:

1. .gitignore 必须包含 .env*.envconfig.py(如含密钥)。

2. SECRET_KEY 泄露 = 会话伪造、密码重置链接可伪造 → 泄露后必须换新密钥。

3. 生产环境不要用 DEBUG=True 且别打印/记录密钥到日志。

4. 用 git log -p 检查历史里有没有不小心提交过密钥;有则换密钥并清理历史。

下载推广海报

圈内讨论推广海报

《SECRET_KEY、数据库密码等敏感信息怎么管理?环境变量怎么用?》完整推广海报
REPLIES

回复

0 条回复
暂无回复。