透明数据加密(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
参考:
透明数据加密 (TDE)
CREATE DATABASE ENCRYPTION KEY (Transact-SQL)
ALTER DATABASE SET 选项 (Transact-SQL)
sys.dm_database_encryption_keys (Transact-SQL)
sys.certificates (Transact-SQL)