背景
为了帮助保护数据库的安全,可以提供设计安全的系统、对机密资产加密、在数据库服务器外围构建防火墙。
但是恶意方如果窃取了驱动器或数据备份等,就可以还原或附加数据库并浏览其数据。
为了解决此类安全问题,一种解决方案就被提出来了,这就是透明数据加密TDE。
SQL Server TDE 功能
SQL Server支持透明数据加密TDE(Transparent Data Encryption),即对数据文件执行实时I/O加密和解密。数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密。TDE不会增加数据文件的大小,开发人员无需更改任何应用程序,即可使用TDE功能。这种加密方式也称为静态数据加密。
如何开启 RDS SQL Server TDE 功能
- 创建主密钥
- 创建证书
- 将证书上传到 OSS
- 开启 TDE 功能
- 查看数据库开启状态
创建主密钥
命令
USE master;GO CREATE MASTER KEY ENCRYPTION BY PASSWORD ='DifferentP@$$w0rd';
说明
- 数据库主密钥是指用于保护证书私钥的对称密钥以及数据库中存在的非对称密钥
- password 必须符合运行 SQL Server 实例的计算机的 Windows 密码策略要求。
- 当创建主密钥时,会使用 AES_256 算法以及用户提供的密码对其进行加密。
创建证书
命令
USE master;GO CREATE CERTIFICATE MyServerCert WITH SUBJECT ='My DEK Certificate';
备份证书
命令
BACKUP CERTIFICATE MyServerCert TO FILE ='D:\MSSQL\backup\MyServerCert'WITH PRIVATE KEY (file='D:\MSSQL\backup\MyServerCert.pvk ', ENCRYPTION BY PASSWORD='DifferentP@$$w0rd')
说明
- MyServerCert 指定证书名称。
- TO FILE 指定导致证书的路径。
- WITH PRIVATE KEY 指定需要导致私钥。
- ENCRYPTION BY PASSWORD 。
- 这里使用的备份密码要与主密钥密码一致,不然在开启TDE时报错。
最终会得到 MyServerCert 证书和私钥文件MyServerCert.pvk。如图
上传证书
- 将证书和私钥上传到阿里云OSS(文件要上传到根目录,不然在选择证书的时候,可能会找不到)
- 若没有现成的Bucket 需要新建
- 新建:对象存储->Bucket列表->创建Bucket->选择与实例对应的地域即可(其它默认,名称全局唯一)
- 若有:
- 操作路径:对象存储->Bucket列表->选择对应Region Bucket-文件管理->扫描文件->查看扫描结果->确认无误选择上传文件。如截图
开启TDE功能
- 操作:选择需要开启的实例->选择数据安全->选择TDE->选择自带密钥
- 选择Bucket 和 证书文件。
- 密码是备份证书和主密钥的密码,要一致,不然会报错不匹配。
查看数据库开启状态
命令
select name,is_encrypted from sys.databases where name = 'db01';
结果
参考: