RDS SQL Server 自带证书开启TDE的解决方案

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
对象存储 OSS,20GB 3个月
云数据库 RDS SQL Server,独享型 2核4GB
简介: RDS SQL Server 自带证书开启TDE的解决方案


背景


为了帮助保护数据库的安全,可以提供设计安全的系统、对机密资产加密、在数据库服务器外围构建防火墙。

但是恶意方如果窃取了驱动器或数据备份等,就可以还原或附加数据库并浏览其数据。

为了解决此类安全问题,一种解决方案就被提出来了,这就是透明数据加密TDE。


SQL Server TDE 功能


SQL Server支持透明数据加密TDE(Transparent Data Encryption),即对数据文件执行实时I/O加密和解密。数据在写入磁盘之前进行加密,从磁盘读入内存时进行解密。TDE不会增加数据文件的大小,开发人员无需更改任何应用程序,即可使用TDE功能。这种加密方式也称为静态数据加密。


如何开启 RDS SQL Server TDE 功能


  1. 创建主密钥
  2. 创建证书
  3. 将证书上传到 OSS
  4. 开启 TDE 功能
  5. 查看数据库开启状态


创建主密钥

命令

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';

结果


参考:

https://learn.microsoft.com/zh-cn/sql/t-sql/statements/backup-certificate-transact-sql?view=sql-server-ver15

https://learn.microsoft.com/zh-cn/sql/relational-databases/security/encryption/transparent-data-encryption?view=sql-server-ver16

https://learn.microsoft.com/zh-cn/sql/big-data-cluster/encryption-at-rest-sql-server-tde?view=sql-server-ver15

https://learn.microsoft.com/zh-cn/sql/t-sql/statements/create-master-key-transact-sql?view=sql-server-ver15

https://learn.microsoft.com/zh-cn/sql/t-sql/statements/backup-master-key-transact-sql?view=sql-server-ver15


相关文章
|
2天前
|
存储 关系型数据库 MySQL
MySQL 忘记root密码解决方案
【7月更文挑战第19天】
|
10天前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
42 3
|
18天前
|
安全 关系型数据库 MySQL
【Python】已解决:pymysql.err.OperationalError:(2003 “Can’t connect to MySQL server on ‘localhost’ ([WinEr
【Python】已解决:pymysql.err.OperationalError:(2003 “Can’t connect to MySQL server on ‘localhost’ ([WinEr
32 1
|
23天前
|
网络协议 关系型数据库 MySQL
启动mysql时的异常为:[ERROR] Can‘t start server: Bind on TCP/IP port. Got error: 98: Address already in used
启动mysql时的异常为:[ERROR] Can‘t start server: Bind on TCP/IP port. Got error: 98: Address already in used
|
1月前
|
SQL 监控 关系型数据库
深入解析MySQL死锁:原因、检测与解决方案
深入解析MySQL死锁:原因、检测与解决方案
|
1月前
|
Web App开发 关系型数据库 MySQL
ucenter info:can not connect to MySQL server 报错!怎么解决
ucenter info:can not connect to MySQL server 报错!怎么解决
18 1
|
1月前
|
SQL druid Java
传统后端SQL数据层替代解决方案: 内置数据源+JdbcTemplate+H2数据库 详解
传统后端SQL数据层替代解决方案: 内置数据源+JdbcTemplate+H2数据库 详解
24 1
|
21天前
|
关系型数据库 MySQL 数据库
2003-Can`t connect to Mysql server on ‘154.8.165.152‘(10038)
2003-Can`t connect to Mysql server on ‘154.8.165.152‘(10038)
|
21天前
|
关系型数据库 MySQL Java
软件开发2003 -Can·t to MySQL server on ‘xxxxxx‘(10038),宝塔初始化安装mysql,远程链接MySql注意事项,开始时服务器是没有放开端口的,宝塔也都开
软件开发2003 -Can·t to MySQL server on ‘xxxxxx‘(10038),宝塔初始化安装mysql,远程链接MySql注意事项,开始时服务器是没有放开端口的,宝塔也都开
|
21天前
|
关系型数据库 MySQL 数据库连接
Cant‘t connect to MySQL server on ‘localhost‘ (10038)
Cant‘t connect to MySQL server on ‘localhost‘ (10038)