[英]How to keep a SECRET_KEY secret in Django?
Django 文档建议将 SECRET_KEY 保留在环境变量中,而不是在 settings.py 文件中。
为什么这被认为更安全? 环境变量是纯文本文件,提供与 settings.py 相同级别的保护。 即使文件 rw 权限设置为 root-only,我认为这并不难破解。
我的问题是:还有哪些其他选项可以存储 SECRET_KEY?
或用于加密的主密钥。 来自django-encrypted-secrets :
django-encrypted-secrets 通过使用密钥(本地存储在 master.key 文件中或从环境变量DJANGO_MASTER_KEY 读取)和读取/写入加密文件 secrets.yml.enc 的秘密来工作。
如果除了本地存储的纯文本文件或环境变量之外别无选择。 如何妥善保护这一点?
它被认为更安全的原因是因为您应该在 git 或其他一些 VCS 中拥有您的设置文件以拥有一致的开发环境,但您的秘密应该在它之外。 这样,即使开发人员不需要生产机密,他们也没有生产机密。
只要您注意如何部署代码、谁可以访问服务器等,它就不需要任何额外的保护。
您的问题还询问其他方法,所以...
您可以像在那里一样对其进行加密,但这总是需要一个也需要以某种方式保护的主密钥。
另一种选择是使用服务器上的文本文件。
如果您想加密秘密,一个不错的选择是将它们加密存储在您的持续集成解决方案中,这会在部署时将它们注入环境中。 Travis CI,GitHub Actions,或多或少任何 CI 解决方案都可以做到这一点。
但一般来说,将其排除在 VCS 之外并限制对机密的访问通常就足够了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.