用于密钥轮换的Azure 存储示例代码演示了如何使用多个唯一命名的 Secret。但是,现在可以在 KeyVault 中创建单个 Secret 的多个版本。我看不出为什么无法使用版本来实现密钥轮换,而且从表面上看,它似乎更容易管理。
任何人都可以就您为什么选择多个 Secret 而不是单个 Secret 的版本来支持密钥轮换提供任何指导吗?如果不是这个,可能还有关于哪些版本的一般指导?
谢谢!
用于密钥轮换的Azure 存储示例代码演示了如何使用多个唯一命名的 Secret。但是,现在可以在 KeyVault 中创建单个 Secret 的多个版本。我看不出为什么无法使用版本来实现密钥轮换,而且从表面上看,它似乎更容易管理。
任何人都可以就您为什么选择多个 Secret 而不是单个 Secret 的版本来支持密钥轮换提供任何指导吗?如果不是这个,可能还有关于哪些版本的一般指导?
谢谢!
随意使用单个密钥和多个版本进行密钥轮换,具体取决于您使用的 SDK。
对于我们基于 Node.js 的应用程序,我们有指向完整 KeyVault 机密 URI 的配置。
一些秘密仅指向秘密的短 URL(无版本),因此应用程序获得“最新版本”。
需要轮换的其他机密将需要版本的完整 URL。例如,我们使用 Azure 表加密;因此加密时表中的每一行都使用来自 KeyVault 的密钥包装密钥。密钥包装密钥是完整的 KeyVault 版本 URL,因为您需要该特定密钥来解密表数据。随着时间的推移,不同的行将指向不同的密钥版本。
对于一般场景,即将当前版本的密钥转换为新版本,只需构建配置系统和连接逻辑以一次支持 2 个密钥 - 如果一个失败,请使用另一个;或考虑基于时间的逻辑。
任何方法都可以,但是请考虑如果您随着时间的推移使用版本而不是增加额外的秘密名称,您的故事将会多么美好和“干净”。