node.js - 使用 Azure Key Vault 或 JWT 时,设置和检索/解密元数据的正确设计是什么。 1 对多还是 1 对 1 键?

标签 node.js azure encryption jwt azure-keyvault

用例是用户有一个需要加密的元数据,因此当他们登录时,将“检查” protected 和存储的对象“加密”,以验证明文形式的对象信息是否等于其中的内容加密对象。

问题是,在 Azure Key Vault 中为每个用户提供具有公钥和私钥功能的 key 是否更合适?或者,仅使用单个 key 来加密存储的对象,并在访问对象时取消签名/解密该对象。

对我来说,对象是加密所必需的,并且与 key 的加密方式并不真正相关,因此是一种通用的一 key 多方法。

另一种方法也很有意义,但我必须创建大量的 key 才能促进这种方法。 1000 个或数百万个 key 导致每个用户都有一个 key 是否合适?

各有什么优点或缺点。

我认为同样的做法也适用于 JWT token 签名。

最佳答案

我认为最好拥有一把 key 并定期轮换 key 。

例如,就像他们在 ASP.NET Core 数据保护 API 中所做的那样(我知道您正在使用 Node ),他们每 90 天(默认情况下)将当前 key 替换为新 key ,并且旧 key 仍保留允许解密旧数据。在 .NET 中,他们将其称为 key 环,可容纳许多 key 。

我写了关于此的博客here .

enter image description here

此外,请注意,使用某些带有 Azure Key Vault 的 SDK 时,它们会尝试在启动时一一下载所有 secret 。如果您有很多 secret ,这可能会非常耗时。

关于node.js - 使用 Azure Key Vault 或 JWT 时,设置和检索/解密元数据的正确设计是什么。 1 对多还是 1 对 1 键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74064302/

相关文章:

ios - 找不到 Realm 文件的加密 key

javascript - 合并两个异步请求的数据以应答这两个请求

javascript - 在一个命令中运行多个 Nodejs 服务器

python - 如何在 RSA 上加密大于 N 的数字?

Azure Blob Storage V2,升级后来自 Azure Function App 的异常 API 调用

azure windows 应用程序服务中容器中的 asp.net mvc

c# - Aes 加密...缺少一个重要部分

node.js - Passport-saml 实现

javascript - RequireJS 模块名称 "requirejs"尚未加载到上下文中。使用 require([])

azure - 在 Azure 上强制使用 HTTPS 并附加 URL