django - Docker+Django+SECRET_KEY : regenerate?

标签 django docker settings secret-key

假设您使用 Django 和一堆代码创建一个 docker-compose.yml,并使用环境变量在 settings.py 中配置 SECRET_KEY。

如果您分发该 Docker 镜像,您将不会共享 SECRET_KEY。

部署您的 Docker 镜像时应该使用什么 SECRET_KEY?

他们不能编造自己的 SECRET_KEY 对吗?

According to the documentation, changing the secret key will invalidate:

  • All sessions if you are using any other session backend than django.contrib.sessions.backends.cache, or are using the default get_session_auth_hash().
  • All messages if you are using CookieStorage or FallbackStorage.
  • All PasswordResetView tokens.
  • Any usage of cryptographic signing, unless a different key is provided.

使用您创建的一堆代码部署 Docker 容器后,“重新生成” key 的最佳方法是什么?

(我搜索了又搜索,但感觉我正在寻找错误的东西或完全错过了一些东西:-)

最佳答案

每个独立部署服务的人都应该拥有自己的SECRET_KEY。 (您确实不希望您描述的内容在安装之间共享:如果我已经登录到您的服务副本,我不应该能够在您的副本上重用我的 session cookie。)我通常使用的命令这是

dd if=/dev/urandom bs=60 count=1 | base64

这将生成一个 80 个字符的高质量随 secret 钥。

由此推论,您无法随图像一起分发加密数据。这通常不是问题(在 Docker 中分发预填充的关系数据库很困难),如果您通过在首次启动时运行数据库迁移和种子作业来执行此操作,那么它们应该能够使用您在安装时设置的任何 key 。

关于django - Docker+Django+SECRET_KEY : regenerate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57873434/

相关文章:

docker - HOSTNAME_COMMAND如何在wurstmeister/kafka-docker上工作

docker - 拉取镜像失败

maven-2 - Maven 存储库配置

ios - 有没有办法以编程方式将用户转移到 iOS 中的“设置”->“键盘”屏幕?

python - Django 和 DB 错误 "Column ' id'指定了两次”

python - django 管理,使用自定义 View 扩展管理

docker - 来自守护进程 : Get https://registry-1. docker.io/v2/的错误响应:禁止

python - Django 自定义处理程序中的参数数量错误

python - Django 中的多对多查询

ios - 不同设备的不同设置?