我一直为我的SQL安装配置加密,也就是说,我有一个指向Windows Keystore密钥的CMK,该密钥反过来用于解密CEK。现在,我试图为CMK提供一些很好的备份解决方案。
目前,我在Azure中配置了完全相同的RSA密钥,我已经通过使用第一个密钥加密和用后者解密来确认这两个密钥要工作(Windows密钥和Azure密钥)。
但我遇到的问题是,万一我丢失了windows密钥存储库,我就失去了解密所有加密密钥的能力。Azure密钥不“公开”密钥,这意味着我可以使用密钥进行加密和解密,但不能导出它。
在SQL中配置密钥旋转时,需要“原始键”。我试图简单地在SQL中创建一个新的CMK,它通过使用"ALTER列加密密钥“来指向Azure环境,但是当我试图访问数据时会出现一个错误。
我的猜测是,CEK包含一些元数据,将其链接到基于Windows的键。
那么,我的问题是,是否有一种使用有效RSA密钥手动解密列加密密钥的方法?
发布于 2022-09-05 04:50:00
我的问题是,是否有一种方法可以使用有效的RSA密钥手动解密列加密密钥?
是的,您可以使用Always Encrypted with secure enclaves
手动解密列加密密钥和主密钥,但这些特性只允许在DC-series hardware
配置中以及仅在少数位置可用的Microsoft Azure Attestation
中使用。因此,您需要选择一个同时支持DC系列硬件和Microsoft认证的位置(一个Azure区域)。
注:直流系列可在下列地区提供:加拿大中部、加拿大东部、东欧、北欧、英国、南欧、西欧、美国西部。在部署SQL数据库时,请按照以下步骤选择DC系列。
Microsoft Azure Attestation
.
Overview
选项卡上,将Attest URI属性的值复制到剪贴板,并将其保存在文件中。这是认证URL,您需要在后面的步骤。将认证类型设置为SGX-IntelSDK
.的
[ type=="x-ms-sgx-is-debuggable", value==false ] && [ type=="x-ms-sgx-product-id", value==4639 ] && [ type=="x-ms-sgx-svn", value>= 0 ] && [ type=="x-ms-sgx-mrsigner", value=="e31c9e505f37a58de09335075fc8591254313eb20bb1a27e5443cc450b6e33e5"] => permit(); }; ```
中复制的认证URL
在对象资源管理器中,使用上一步中的SSMS实例展开数据库并导航到Keys.安全性>始终加密的
computations.允许
ALTER TABLE [HR].[Employees]
ALTER COLUMN [SSN] [char] (11) COLLATE Latin1_General_BIN2
ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
WITH
(ONLINE = ON);
ALTER TABLE [HR].[Employees]
ALTER COLUMN [Salary] [money]
ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
WITH
(ONLINE = ON);
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
验证加密的数据。
使用客户加密密钥解密
ALTER HR.Employees ALTER列SSN(11)用(ONLINE =ON)整理Latin1_General_BIN2;GO
https://stackoverflow.com/questions/73461253
复制