Mar*_*sch 3 sql-server sql-server-2008-r2 transparent-data-encryption
为了加密 SQL 数据库,我运行以下命令:
CREATE CERTIFICATE <certname> ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>'
WITH SUBJECT = 'certificate subject', EXPIRY_DATE = '20291031';
go
USE <databasetoencrypt>;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE <certname>;
GO
Run Code Online (Sandbox Code Playgroud)
尝试执行CREATE DATABASE ENCRYPTION KEY
命令时,我收到此消息,但不知道该怎么做:
无法使用证书“名称”,因为其私钥不存在或不受数据库主密钥的保护。SQL Server 需要能够自动访问用于此操作的证书的私钥。
当我ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>'
在CREATE CERTIFICATE
命令中省略期间时,它会起作用。但是,我需要创建一个受密码保护的证书。
你有什么主意吗?!谢谢你。
您不能创建受密码保护的证书,然后使用该证书通过 TDE 加密数据库,因为 SQL Server 将无法打开数据库。
来自微软文档:
透明数据加密 (TDE) 必须使用称为数据库加密密钥的对称密钥,该密钥由受主数据库的数据库主密钥保护的证书或存储在 EKM 中的非对称密钥保护。
使用 TDE 加密数据库的步骤:
创建主密钥
创建或获取受主密钥保护的证书
创建数据库加密密钥并通过证书对其进行保护
设置数据库使用加密
上述示例,取自TDE 上的Microsoft Docs 页面:
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';
go
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';
go
USE AdventureWorks2012;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2012
SET ENCRYPTION ON;
GO
Run Code Online (Sandbox Code Playgroud)
该页面还说:
TDE 证书必须由数据库主密钥加密才能被以下语句接受。如果它们仅通过密码加密,则语句将拒绝它们作为加密器。
CREATE DATABASE ENCRYPTION KEY
ALTER DATABASE ENCRYPTION KEY
DROP DATABASE ENCRYPTION KEY
Run Code Online (Sandbox Code Playgroud)
将证书在 TDE 使用后更改为受密码保护将导致数据库在重新启动后无法访问。
归档时间: |
|
查看次数: |
2905 次 |
最近记录: |