【问题标题】:Docker+Django+SECRET_KEY: regenerate?Docker+Django+SECRET_KEY:重新生成?
【发布时间】:2019-09-10 14:55:17
【问题描述】:

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

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

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

他们不能自己编 SECRET_KEY 对吧?

根据documentation,修改秘钥会失效:

  • 如果您使用的是 django.contrib.sessions.backends.cache 以外的任何其他会话后端,或者使用默认的 get_session_auth_hash(),则所有会话。
  • 所有消息(如果您使用 CookieStorage 或 FallbackStorage)。
  • 所有 PasswordResetView 令牌。
  • 加密签名的任何使用,除非提供不同的密钥。

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

(我已经搜索和搜索,但感觉我在搜索错误的东西或完全错过了一些东西:-)

【问题讨论】:

    标签: django docker settings secret-key


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      此解决方案与平台无关,因为它使用原始的 Django 密钥生成器。

      from django.core.management.utils import get_random_secret_key
      
      get_random_secret_key()
      

      它可以独立使用,无需初始化 Django 项目。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-12
        • 1970-01-01
        • 1970-01-01
        • 2021-06-18
        • 2017-01-04
        • 2020-03-22
        • 1970-01-01
        相关资源
        最近更新 更多