有没有简单的方法来处理加密字段的密钥更新?

2024-06-08 21:36:18 发布

您现在位置:Python中文网/ 问答频道 /正文

让我们从两个假设开始:

  1. 一些数据库字段(如第三方访问令牌)使用Fernet和SECRET_KEY作为加密密钥进行加密。在
  2. SECRET_KEY由于安全问题,需要更改。在

在这种情况下,最好做什么?我假设我应该在修复了安全漏洞之后立即更改SECRET_KEY,但是如果这样做,我将基本上失去对所有加密数据的访问权限。在

我想到的是首先进行一个迁移,它将临时用简单的charfields/textfields+数据迁移来替换加密的存储值。然后更改SECRET_KEY。最后,将加密字段带回,再次进行数据迁移以加密存储的值。在

这似乎是一个很大的麻烦,有没有更好/更简单/更快的方法来处理这种情况?在


Tags: 数据方法key数据库权限secret密钥情况
1条回答
网友
1楼 · 发布于 2024-06-08 21:36:18

因为您只有一个密钥,所以您唯一的办法就是重新加密整个数据库。在

正确的方法是首先不要将django的SECRET_KEY用于数据库任务(即使django也不将其用于用户密码之类的事情),并为敏感数据实现密钥循环算法。在

^{}开箱即用地提供了此功能;但是它假定您正在旋转关键点,这是最佳实践,而不是妥协的结果。在

最佳实践密钥轮换依赖于“使用时的加密”,即使用旧密钥对秘密进行解密,并在使用时用新密钥重新加密。最终,您最常用的机密将被重新加密,您可以执行审核以使其余条目无效或强制重新加密。在

相关问题 更多 >