我正在使用始终使用KeyVault加密来加密我的SQL azure数据库。 我在Keyvault中看到的是,CMK是在Keys部分创建的。 是否可以从中构建证书? 或者我在哪里可以找到CMK证书?
答案 0 :(得分:2)
在Azure Key Vault中,您可以创建不同类型的对象:密钥,密钥和证书。 Always Encrypted要求存储在Azure Key Vault中的列主密钥是密钥库密钥。当您选择将新列主密钥存储在密钥保管库中时,SSMS会创建密钥保管库密钥。顺便说一句,SSMS在创建密钥时所做的就是调用Add-AzureKeyVaultKey。
话虽如此,当创建密钥保管库证书时(例如,通过Add-AzureKeyVaultCertificate),还会创建一个具有相同名称的可寻址密钥和密钥 - 请参阅https://docs.microsoft.com/en-us/rest/api/keyvault/about-keys--secrets-and-certificates#key-vault-certificates。并且,如果需要,您可以使用与证书关联的密钥作为列主密钥。但是,我并不知道这样做的实际好处:始终加密启用的客户端驱动程序(例如ADO.NET)甚至不会意识到密钥与证书相关联。
如果您可以描述业务需求并解释为什么您认为需要列主密钥作为证书,那么它可能会很有用。
请注意,即使列主密钥是存储在Windows证书存储区(不在密钥保管库中)的真实证书,启用加密的驱动程序的驱动程序也只使用证书中包含的公钥和私钥,他们忽略了其他一切。特别是,驱动程序永远不会验证证书的到期日期,CA链或证书是否已被撤销。这是设计 - 主密钥保护长期数据,这种方法确保您始终能够访问数据,只要您拥有主密钥(例如,如果您创建包含加密数据的数据库备份文件,并恢复几年后,它应该能够访问你的数据。