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

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 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


相关文章
|
1月前
|
关系型数据库 MySQL Java
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
【IDEA】java后台操作mysql数据库驱动常见错误解决方案
68 0
|
3月前
|
关系型数据库 MySQL 索引
MySQL in 太多的解决方案
MySQL in 太多的解决方案
421 0
|
3月前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
6天前
|
SQL 开发框架 .NET
突破T-SQL限制:利用CLR集成扩展RDS SQL Server的功能边界
CLR集成为SQL Server提供了强大的扩展能力,突破了T-SQL的限制,极大地拓展了SQL 的应用场景,如:复杂字符串处理、高性能计算、图像处理、机器学习集成、自定义加密解密等,使开发人员能够利用 .NET Framework的丰富功能来处理复杂的数据库任务。
|
12天前
|
监控 关系型数据库 MySQL
MySQL自增ID耗尽应对策略:技术解决方案全解析
在数据库管理中,MySQL的自增ID(AUTO_INCREMENT)属性为表中的每一行提供了一个唯一的标识符。然而,当自增ID达到其最大值时,如何处理这一情况成为了数据库管理员和开发者必须面对的问题。本文将探讨MySQL自增ID耗尽的原因、影响以及有效的应对策略。
38 3
|
12天前
|
存储 监控 关系型数据库
MySQL自增ID耗尽解决方案:应对策略与实践技巧
在MySQL数据库中,自增ID(AUTO_INCREMENT)是一种特殊的属性,用于自动为新插入的行生成唯一的标识符。然而,当自增ID达到其最大值时,会发生什么?又该如何解决?本文将探讨MySQL自增ID耗尽的问题,并提供一些实用的解决方案。
19 1
|
27天前
|
关系型数据库 MySQL 数据库
一个 MySQL 数据库死锁的案例和解决方案
本文介绍了一个 MySQL 数据库死锁的案例和解决方案。
57 3
|
2月前
|
SQL 关系型数据库 MySQL
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
35 4
|
2月前
|
存储 Java 关系型数据库
JPA不识别MySQL枚举类型的解决方案
在JPA中处理MySQL的枚举类型,需要在实体类与数据库之间进行适当的转换。可以选择使用 `@Enumerated`注解、实现自定义的转换器,或者使用原生SQL查询来解决JPA不直接支持MySQL枚举类型的问题。选择最佳方案时,应考虑项目的具体需求和架构。通过正确的映射和转换,可以确保JPA与MySQL数据库间高效且安全的数据交互。
76 6
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")