我正在构建一个 Node.js 应用程序,该应用程序从我需要访问的另一个应用程序接收长期访问令牌。我不想将这些访问令牌直接存储在数据库中,因为任何有权访问这些令牌的人基本上都可以用它做任何他们想做的事情。
我是 Cloud KMS 和一般此类系统的新手,但花了最后几个小时学习它。这似乎是解决我的问题的理想解决方案,但我不完全确定应该遵循什么策略来存储这些访问令牌:
- 我是否应该在 Cloud KMS 中存储一个加密密钥,并将该加密密钥与像这样的 NPM 包一起使用,以便在我的数据库中存储访问令牌?
- 我应该将访问令牌直接存储在 KMS 中吗?我的假设是我将拥有一个密钥库,并且每 14 天轮换一次密钥。每当我收到访问令牌时,我只需对其进行加密并将其存储在 KMS 中。我只将密文存储在我的数据库中。当我需要从 KMS 访问访问令牌时,我使用密文对其进行解密。
以上哪项是使用 KMS 的正确方法?如果是选项 2,我还有其他问题:
- 我可以使用单个密钥加密大量访问令牌,还是需要为每个访问令牌创建一个新密钥?
- 如果我需要修改在 KMS 加密的访问令牌,我可以简单地修改它还是需要销毁旧版本并重新加密?
谢谢你的帮助!