SQL Server 安全加密篇(二)->> 透明数据加密(TDE)
透明数据加密(TDE)加密 SQL Server的数据和日志文件,而且是页面级别的加密,数据库页在写入磁盘之前会进行加密,在读入内存时会进行解密。 TDE 不会增加已加密数据库的大小。
TDE 对数据和日志文件进行实时 I/O 加密和解密。 加密使用的是数据库加密密钥 (DEK)。 数据库启动记录存储该密钥,供还原时使用。 DEK 是一种对称密钥。 它由服务器的 master 数据库存储的证书或 EKM 模块所保护的非对称密钥提供保护。
启用了透明数据加密(TDE),数据库的还原和附加都需要用到证书和私钥。即便禁用了 TDE,事务日志的某些部分可能还是加密状态,在执行下一次执行完整数据库备份之前,可能还需要用到证书。
下图是MSDN上解释TDE的加密层次结构
启用TDE的步骤
-
创建主密钥。
-
创建或获取由主密钥保护的证书。
-
创建数据库加密密钥并使用此证书保护该密钥。
-
将数据库设置为使用加密。
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_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2012
SET ENCRYPTION ON;
GO
参考:
CREATE DATABASE ENCRYPTION KEY (Transact-SQL)
ALTER DATABASE SET 选项 (Transact-SQL)