京东云数据库 RDS 支持使用透明数据加密 (TDE) 来加密运行 Microsoft SQL Server 的数据库实例中存储的数据。TDE 会在数据写入存储前自动加密这些数据,并在从存储中读取时自动解密这些数据。数据库文件的加密在页级别执行, 已加密数据库中的页在写入磁盘之前会进行加密,在读入内存时会进行解密。 TDE 不会增加已加密数据库的大小。
关于透明数据加密TDE的详细介绍可参考微软的文档 透明数据加密
京东云数据库 RDS 支持在以下 SQL Server 版本中使用 TDE:
USE master
GO
SELECT name FROM sys.certificates WHERE name LIKE 'TDE%'
GO
-- TDECertificateName 为上一步查询出的TDE证书名称
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM=AES_128
ENCRYPTION BY SERVER CERTIFICATE [TDECertificateName]
GO
ALTER DATABASE db1
SET ENCRYPTION ON
GO
-- 验证TDE已开启
USE master
GO
SELECT name FROM sys.databases WHERE is_encrypted = 1
GO
SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys
GO
数据库开启TDE后,下载到本地的备份无法直接恢复,必须结合TDE证书和密钥才能恢复到本地SQL Server实例中
USE master
GO
create master key encryption by password = N'xxx'; --xxx 为前面获取的密钥
GO
CREATE CERTIFICATE Mycertificate
FROM FILE = N'D:\Database\mycertificate.cer'
with private key
(
file = N'D:\Database\mycertificate.pvk' ,
decryption by password = N'xxx'
); -- mycertificate.cer和mycertificate.pvk为前面下载的TDE证书,具体文件名称略有不同