0

我正在使用始终使用 KeyVault 加密的方式加密我的 SQL azure 数据库。我在 Keyvault 中看到的是,CMK 是在 Keys 部分创建的。是否可以从中构造证书?或者我在哪里可以找到这个 CMK 证书?

4

1 回答 1

2

在 Azure Key Vault 中,可以创建不同类型的对象:密钥、机密和证书。Always Encrypted 要求存储在 Azure Key Vault 中的列主密钥是 Key Vault 密钥。当你选择将新列主密钥存储在 Key Vault 中时,SSMS 会创建一个 Key Vault 密钥。顺便说一句,SSMS 在创建密钥时所做的相当于调用 Add-AzureKeyVaultKey。

话虽如此,当创建 Key Vault 证书时(例如,通过 Add-AzureKeyVaultCertificate),还会创建具有相同名称的可寻址密钥和机密 - 请参阅https://docs.microsoft.com/en-us/rest/api /keyvault/about-keys--secrets-and-certificates#key-vault-certificates。而且,如果需要,您可以使用与证书关联的密钥作为列主密钥。但是,我不知道这样做的实际好处:启用 Always Encrypted 的客户端驱动程序(例如 ADO.NET)甚至不会知道密钥与证书相关联。

如果您可以描述您的业务需求并解释您认为需要列主密钥作为证书的原因,这可能会很有用。

请记住,即使列主密钥是存储在 Windows 证书存储(而不是密钥库)中的真实证书,启用 Always Encrypted 的驱动程序也仅使用证书中包含的公钥和私钥,它们会忽略其他一切。特别是,驱动程序从不验证证书到期日期、CA 链或证书是否已被吊销。这是设计使然 - 主密钥保护长期存在的数据,这种方法可确保您始终能够访问数据,只要您拥有主密钥(例如,如果您创建包含加密数据的数据库备份文件并恢复几年后,您应该能够访问您的数据)。

于 2017-06-29T01:30:21.540 回答