2016-08-15 48 views
3

密钥循环的Azure Storage sample code演示使用多个唯一命名的密钥。但是,在KeyVault中现在可以创建单个Secret的多个版本。我没有看到为什么使用Versions无法实现按键旋转的原因,并且它看起来就像它更容易管理。Azure KeyVault密钥旋转

任何人都可以提供任何指导你为什么要选择多个秘密在单个秘密的版本以支持按键旋转?如果不是这样的话,可能有关于版本的目标的一般指导?

谢谢!

+0

我不是专家,但看着API,似乎没有版本标识符的每个机密都默认为最新版本,这就是预期的方法。所以大多数情况下,它看起来像那里的API(REST,.NET等)并不是真正构建代码模式来支持你想要的版本。 –

+0

例如,它看起来像ResolverKeyAsync方法不允许您提供版本值来选择不同版本的密钥。也许当APIs已经成熟以适应这种新功能时,这种模式会更有意义。再次,不是专家,盐粒等。 –

+0

谢谢@ kyle-hale。在回答你的观点“[..]看API时,似乎没有版本标识符的每个机密都默认为最新版本” - 正确。但我认为这不重要(实际上我认为这是可取的)。由于密钥的每个版本都可以唯一地寻址,所以只要存储版本,就可以解密使用先前版本加密的数据并将最新版本用于加密 –

回答

1

随意使用单个秘密和多个版本进行密钥轮换,具体取决于您使用的是哪个SDK。

对于我们基于Node.js的应用程序,我们的配置指向完整的KeyVault秘密URI。

一些秘密只指向秘密(没有版本)的短URL,所以应用程序获得“最新版本”。

需要轮换的其他机密将需要该版本的完整URL。例如,我们使用Azure Table Encryption;因此加密时表中的每一行都使用KeyVault中的密钥包装密钥。密钥包装密钥是一个完整的KeyVault版本化URL,因为您需要该特定秘密来解密表数据。随着时间的推移,不同的行将指向不同的密钥版本。

对于一般场景,即将当前版本的密钥旋转到新密钥,只需构建您的配置系统和连接逻辑,以一次支持2个密钥 - 如果一个失败,则使用另一个;或考虑基于时间的逻辑。

任何方法都可以,但考虑如果您随着时间的推移使用版本而不是扩大其他秘密名称,那么您的故事将会变得多么美好和“干净”。

+0

秘密的版本数量是否有限制? –

相关问题