让我们从两个假设开始:
SECRET_KEY
作为加密密钥进行加密。在SECRET_KEY
由于安全问题,需要更改。在在这种情况下,最好做什么?我假设我应该在修复了安全漏洞之后立即更改SECRET_KEY
,但是如果这样做,我将基本上失去对所有加密数据的访问权限。在
我想到的是首先进行一个迁移,它将临时用简单的charfields/textfields+数据迁移来替换加密的存储值。然后更改SECRET_KEY
。最后,将加密字段带回,再次进行数据迁移以加密存储的值。在
这似乎是一个很大的麻烦,有没有更好/更简单/更快的方法来处理这种情况?在
因为您只有一个密钥,所以您唯一的办法就是重新加密整个数据库。在
正确的方法是首先不要将django的
SECRET_KEY
用于数据库任务(即使django也不将其用于用户密码之类的事情),并为敏感数据实现密钥循环算法。在^{} 开箱即用地提供了此功能;但是它假定您正在旋转关键点,这是最佳实践,而不是妥协的结果。在
最佳实践密钥轮换依赖于“使用时的加密”,即使用旧密钥对秘密进行解密,并在使用时用新密钥重新加密。最终,您最常用的机密将被重新加密,您可以执行审核以使其余条目无效或强制重新加密。在
相关问题 更多 >
编程相关推荐